본문 바로가기
스터디(beakjoon)

Kotlin] 백준 14928번 문제 풀이

by 김마리님 2024. 4. 29.

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

 

더보기

이 문제는 BigInteger로 풀면 시간초과가 난다.

그래서 이 문제는 이렇게 푸는게 아니라 모듈로 연산의 규칙을 이용해서 푼다.

 

(a mod c + b mod c) mod c = (a+b) mod c

 

그러니까, 23을 10으로 나눈다 가정하면, (20 % 10 + 3 % 10) % 10 = (0 + 3) % 10 = 3 은 23 % 10 = 3과 일치한다.

 

따라서 이들을 따로따로 떼어 나누면 해당 모듈로 연산의 규칙을 따를 수 있다. 즉, 한자리씩 떼어 10의 자리씩 연산한다.

이를 코드로 보면

 

fun main(args: Array<String>) {
    question14928()
}

fun question14928() {
    var number = readln()

    var remain = 0
    for (i in number.indices) {
        remain = (remain * 10 + (number[i].toString().toInt())) % 20000303
    }

    println(remain)
}

 

* 10을 통해 자릿수를 늘려간다.

 

 

 

 

반응형

'스터디(beakjoon)' 카테고리의 다른 글

Kotlin] 백준 15128번 문제 풀이  (0) 2024.05.17
Kotlin] 백준 11282번 풀이  (0) 2024.05.14
Kotlin] 백준 1271번 풀이  (0) 2024.04.25
Kotlin] 백준 17427번 풀이  (0) 2024.04.24
Kotlin] 백준 1748번 문제 풀이  (0) 2024.04.23