프로그래밍/알고리즘
분산처리(백준: 1009 / 자바)
sungjine
2022. 2. 14. 11:03
반응형
총 데이터의 개수가 주어졌을 때 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());
}
}
반응형