반응형
백준 1009번 문제입니다. (solved.ac) 기준 브론즈 2 문제입니다.
https://www.acmicpc.net/problem/1009
문제
문제 접근
데이터의 개수는 a^b개이고 컴퓨터는 총 10개를 가지고 있습니다. 1번째 일은 1번 컴퓨터가, 2번째 일은 2번 컴퓨터가... 10번째 일은 4번 컴퓨터가, 11번째 일은 1번째 컴퓨터가 하게됩니다. 이를 통하여 데이터의 개수에서 일의 자릿수에 해당하는 번호의 컴퓨터가 작업을 한다는 것을 알 수 있습니다. 따라서 입력 받은 a^b를 계산해준 후 일의 자리만 출력해주면 됩니다. 단, 일의 자릿수가 0일 경우에는 10번째 컴퓨터가 작업하는 부분에 대해서는 예외처리를 해주어야합니다!
그냥 제곱을 진행하는 경우 - ex) 9^635 와 같은 경우 - 는 오버플로우가 발생하기 때문에 매번 연산할 때마다 일의 자릿수만 저장하도록 하였습니다.
정답 코드
fun main() {
repeat(readln().toInt()) {
var (a, b) = readln().split(" ").map { it.toInt() }
// ^n(n승)을 계산하고 일의 자리만 담을 변수. - 그렇지 않으면 오버플로우 발생함.
var afterPowered = a % 10
repeat(b - 1) {
// ^n(n승)을 계산
afterPowered *= a
// 일의 자리만 저장
afterPowered %= 10
}
// 컴퓨터가 총 10대니까 일의 자릿수만큼 돌아감. - afterPowered가 0이라면 딱 맞아떨어지기 때문에 10번 컴퓨터가 동작
if (afterPowered == 0) println(10) else println(afterPowered)
}
}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 1541번 잃어버린 괄호(그리디)[Kotlin - 코틀린] (0) | 2022.06.25 |
---|---|
[백준] 1946번 신입 사원(그리디)[Kotlin - 코틀린] (0) | 2022.06.24 |
[백준] 10815번 숫자 카드(집합 - mutableSet)[Kotlin - 코틀린] (0) | 2022.06.22 |
[백준] 10757번 큰 수 A+B(문자열 구현 or BigInteger)[Kotlin - 코틀린] (0) | 2022.06.21 |
[백준] 1789번 수들의 합(이분 탐색)[Kotlin - 코틀린] (0) | 2022.06.21 |
최근댓글