본문 바로가기

코딩테스트/백준

[백준-자바] 1009번 분산처리 / 2021.10.01

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

 

1009번: 분산처리

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)

www.acmicpc.net

 

 

1. Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
               int T = sc.nextInt();
               for(int i=0; i<T; i++) {
                   int a = sc.nextInt();
                   int b = sc.nextInt();
                   int data = 1;
                   for(int j=1; j<=b; j++) {
                       data = (data*a)%10;
                   }
                   
                   if(data==0) {
                       data = 10;
                   }
                   
                   System.out.println(data);
               }
    }
}
cs

 

풀이 :

문제만 읽었을때는 뭔가 복잡할거 같았지만 막상 문제를 이해해보니 그다지 어려운 문제는 아니였다.

그런데 생각지도 못한 조건이 하나 있어서 애먹기는 했었다.

 

풀이 배경

이런식으로 생각을 해서 그냥 단순이 10으로 나눈 나머지를 출력하면되구나 ! 했지만 계속오류가 떴다.

이유인 즉슨,,, 7의 100승을 할 시에 숫자가 너무커서 int형 변수가 다 못담아내기 때문에 오류가 뜨는거였다.

 

조건 풀이

for(int j=1; j<=b; j++) {

                       data = (data*a)%10;

                   }

이런식으로 제곱을 하면서 10의 나머지를 계속 구해주었더니 오류가 뜨지않고 잘 실행되었다!