-
1/10기록 - 백준 1009Algorithm 2022. 1. 10. 10:23728x90
주말을 잘 쉬다가 오늘도 알고리즘 문제를 하나 풀어보았다. 오늘은 백준 1009번 분산처리 문제이다.
a^b개의 형태로 주어진다는 것을 못보고 한참 동안 예제 출력이 왜 저렇게 되는지 고민한 것 같다..... 문제 잘보자 좀.....
내가 생각한 알고리즘은 a^b에서 시작한다. 당연히 a와 b를 입력받는 부분까지는 for문과 BufferedReader, StringTokenizer를 사용해서 표현해 주면 될 것이고, a^b가 뜻하는 것을 예제 입력을 통해 알아보자.
1 6 케이스 : 1^6은 뭘 해도 그냥 1이다. -> 출력 1
3 7 케이스 : 일의 자리 숫자에 주목해 보면, 3*3*3*3*3*3*3 -> 9,7,1,3이 반복된다는 것을 알 수 있고, 그럼 출력은 7
6 2 케이스 : 6*6 -> 일의 자리가 6이다.
이런식으로 입력받은 두 수 a, b를 a^b의 형태로 표현해서 일의자리를 찾아주고, 그 일의자리가 답이 되는 형식이다.
그럼 이 정도로 규칙을 찾았으면, 문제를 풀어보자.
난 이렇게 풀었다. 컴퓨터가 10번 일때, 10번 컴퓨터로 나타내주고, 11번 컴퓨터 부터는 다시 1번이 되는 것을 보고 result % 10이 0이 되는 지점과 양수가 되는 지점을 나누어 생각해 주면 될 것 같았다.
result % 10 == 0이 되어 나누어 떨어지는 경우는 무조건 result가 10, result % 10 > 0이 될 경우에 입력받은 b만큼 반복해서 result를 a와 곱해주고 10으로 나누어주면 원하는 일의 자리 수를 구할 수 있다.
처음엔 System.out.println으로 result를 출력해 주려 했는데, 이건 뭐 원하는 출력 형식이 계속 안나와서...... 내가 못한 거겠지만... 그냥 한번에 StringBuilder 형식으로 append 시켜서 sb.toString()으로 출력시켜 버렸다.
뭐 일단 맞았으면 장땡이지뭐 ㅋㅋㅋ
1/10 기록 끝
728x90'Algorithm' 카테고리의 다른 글
1/12기록 - 프로그래머스 문제풀이 #2 (0) 2022.01.12 1/12기록 - 프로그래머스 문제풀이 #1 (0) 2022.01.12 1/11기록 - 백준 2846 (0) 2022.01.11 1/7 기록 - 백준 1712번 (0) 2022.01.07 1/6 기록 - 백준 1297 (0) 2022.01.06