Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 분산처리 (1009) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 분산처리 (1009) (자바/Java)

luke-king 2024. 9. 8. 20:18

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

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 res = 1;
			
			for(int j = 0; j < b; j++) {
				res = (res * a) % 10;
				
				if(res == 0) {
					res = 10;
				}
			}
		
			System.out.println(res);
		}
	
 }
}

 

오늘 문제는 백준의 " 분산처리 " 문제다.

이번 문제에서는 a의 b제곱인 데이터 개수의 끝자리를 구하면 되는 문제로 접근하는 게 맞다 생각한다.

그렇다면 Math.pow() 제곱근을 구하는 함수를 생각할수 있는데 마지막 2개의 입력값에서 정말 큰 값이 나오기에

처리할 수가 없다. 그렇다면 어떻게 해야 할까?

바로 문제 풀이를 해보겠다.

 

1. t입력값만큼 반복문을 만들어 준다.

 

2. 다음으로 결과값을 담을 res 변수를 만들어준다. 이건 단순히 결과값만 담는 게 아니고 제곱해 주는 값을 담아주는 거라 생각하면 된다.

 

3. 두 번째인 2중 for문을 만들어 b(제곱수) 만큼 반복을 해주며 (res * a) % 10을 해준다.

그렇게 하면 res는 %10의 나머지와 a를 b만큼 반복적으로 곱해 최종 적으로 나머지를 구하게 된다.

 

4. 다음으로 if문은 0은 10의 값이 나오게 해 주면 되므로 10을 반환해 주면 끝이다.

 

 

아직 설명하기에 필력이 많이 부족하지만...

이해하기 어렵거나 잘못된 거나 궁금한 점이 있다면 언제든지 댓글을 남겨주세요! 최대한 성심성의껏 답변드리겠습니다!