BAEKJOON 1009번 - 분산처리

Kim Hyen Su·2023년 8월 28일
0

⏲️ 알고리즘

목록 보기
35/95

1009번 문제

문제

문제 풀이

문제를 보면 1번 부터 10번까지의 컴퓨터가 있으며, 이는 데이터의 1의 자릿수와 동일한 값을 의미한다. 1번 데이터 1번 컴퓨터, 2번 데이터 2번 컴퓨터 ... 11번 데이터 1번 컴퓨터.

위의 규칙대로 식을 새워 보면, a^b %10 = 컴퓨터 번호가 된다.
하지만 이 식을 그대로 적용하게 되면, 메모리 부족으로 인해 fail이 발생한다.

이를 해결하기 위해 1의 자리의 값만 구하면 된다는 생각을 해보면 쉽게 구할 수 있다. 즉, 전체 값을 계산할 필요 없이 1의 자리 값만 계산한다.

7^3 = 7 * 7 * 7 이고, 이는 343이라는 값이 출력된다. 이를 중간에 %10을 하여, 출력한 뒤 
값을 마저 곱해주어도 1의 자리는 여전히 3이다.

49 % 10 = 9 → 9 * 7 = 63 → 63 % 10 = 3 과 같은 이치이다.

제출 코드

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        
        StringBuilder sb = new StringBuilder();
        for(int i=0; i < T; i++){
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            int result = 1;
            
            for(int  j=0; j < b; j++){
                result = result * a % 10;
            }
            
            if(result == 0) result = 10;
            
            sb.append(result).append('\n');
        }
        
        System.out.println(sb);
        br.close();
    }
}
profile
백엔드 서버 엔지니어

0개의 댓글