‡ CODING TEST STUDY ‡/º 백준

[백준 | Java Bronze III] (#1009) 분산처리

Trudy | 송연 2024. 7. 3. 21:42

문제

https://www.acmicpc.net/problem/1009

 

첫번째 코드 - 실패

 

Math.pow(a,b)를 사용해서 정말 단순하게 a^b를 구한 뒤 %10으로 나머지 연산(모듈로 연산) 을 진행하려고 했지만 실패

package week9.baek.july7;

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

public class B1009 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {
            String input = br.readLine();
            int a = Integer.parseInt(input.split(" ")[0]);
            int b = Integer.parseInt(input.split(" ")[1]);

            long n = (long) Math.pow(a, b);
            System.out.println("n = " + n);
            System.out.println(n % 10);
        }
    }
}

 

너무 수가 커지기 때문에 이렇게 해서는 안된다. 

 

💡새로운 접근 방법

 

어짜피 1의 자리수만 구하면 됐던 문제이다. 따라서 아무리 곱하는 연산을 해도 1의 자리만 기억해도 상관 없다! 

따라서 다음과 같이 n을 구한다. 

            int n = 1;
            for (int j = 0; j < b; j++) {
                n *= a;
                n %= 10;
            }

 

💡 출력

10번 컴퓨터는 10을 출력해야 한다. 

즉 모듈러 연산을 했을 때 0이 나오면 10을 출력하고 나머지는 그냥 n을 출력하게 하면 됨. 

            if(n == 0) System.out.println(10);
            else System.out.println(n%10);

최종 코드

package week9.baek.july7;

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

public class B1009 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {
            String input = br.readLine();
            int a = Integer.parseInt(input.split(" ")[0]);
            int b = Integer.parseInt(input.split(" ")[1]);

            int n = 1;
            for (int j = 0; j < b; j++) {
                n *= a;
                n %= 10;
            }
            if(n == 0) System.out.println(10);
            else System.out.println(n%10);
        }
    }
}