티스토리 뷰

반응형

총 데이터의 개수가 주어졌을 때 10 대의 컴퓨터에 차례로 총 데이터를 분산시켰을 때 마지막 데이터의 위치를 구하는 문제이다.

 

입력 데이터는 테스트 횟수와 테스트 데이터가 순서대로 입력된다.

 

테스트 데이터는 "A B"와 같은 형식으로 입력된다.

 

데이터의 총 수는 A에 B승한 것과 같다.

(EX: "3 7"은 "3 * 3 * 3 * 3 * 3 * 3 * 3" 와 같고 계산했을 때 "2187"이 나오게 된다.)

 

데이터의 총 갯수가 몇이던지 10개의 컴퓨터에 분산하여 배분하기 때문에 10으로 나누었을 때 나머지값이 정답이다.

 

다만 데이터의 총 개수를 먼저 구하게되면 데이터의 수가 많아질 경우 실패하게 된다.

 

따라서 데이터의 총 개수를 먼저 구하는 것이 아니라 A * A 의 위치를 구한 후 해당 위치의 다음 컴퓨터부터 다시 데이터를 넣어 위치를 구하는 방식으로 구현해야한다.

 

코드는 아래와 같다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int t = Integer.parseInt(br.readLine());
		
		while(t-- > 0){
			String s = br.readLine();
			StringTokenizer token = new StringTokenizer(s, " ");
			int a = Integer.parseInt(token.nextToken());
			int b = Integer.parseInt(token.nextToken());
			int value = 1;
			
			for(int j = 0; j < b; j++){
				value *= a;  // 데이터 구하기
				value %= 10; // 데이터의 위치 구하기
			}
			
			sb.append(value == 0 ? 10 : value);
			// 위치가 0일 경우는 없고 컴퓨터는 1~10 까지이기 때문.
			sb.append("\n");
		}

		System.out.println(sb.toString());
	}
}
반응형

'프로그래밍 > 알고리즘' 카테고리의 다른 글

LCS(Longest Common Subsequence) + Java  (0) 2022.03.09
Fly me to the Alpha Centauri(백준: 1011 / 자바)  (0) 2022.02.15
퀵 소트  (0) 2017.06.13
플로이드 워셜 알고리즘  (0) 2016.12.29
삽입 정렬  (0) 2016.12.18
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31