알고리즘 문제 풀이/구현

백준 - 3의 배수(Kotlin)

가나무마 2022. 3. 25. 22:58
728x90

본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.

https://github.com/ROUTINE-STUDY/Algorithm

 

저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.

 

GitHub - ROUTINE-STUDY/Algorithm: 초보 알고리즘 스터디 / 누구나 참여 가능

초보 알고리즘 스터디 / 누구나 참여 가능 :runner:. Contribute to ROUTINE-STUDY/Algorithm development by creating an account on GitHub.

github.com

문의는 댓글 바람.

 

문제 출처 : https://www.acmicpc.net/problem/1769

[접근 방법]

자리수가 최대 1,000,000개이므로 바로 정수형으로 받으면 안된다.

따라서, String형으로 받은 다음에 차례대로 계산을 해야한다.

각 자리수를 더하면 최댓값이 900만이므로 int형으로 받아도 된다.

 

import java.io.BufferedReader
import java.io.InputStreamReader

var cnt = 0
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    var X = readLine()
    val outputNum = getCntOfLoop(X)

    println(cnt)
    if (outputNum % 3 == 0) println("YES")
    else println("NO")
}

fun getCntOfLoop(X: String): Int {
    if (X.length < 2) {
        return X.toInt()
    }

    var x = StringBuilder(X)
    var temp = 0
    while (true) {
        cnt++
        for (i in x.length-1 downTo 0) {
            temp += x[i].digitToInt()
        }

        if (temp < 10) {
            break
        }
        x = StringBuilder(temp.toString())
        temp = 0
    }

    return temp
}

 

728x90