본문 바로가기
알고리즘 문제 풀이/구현

백준 - 3의 배수(Kotlin)

by 가나무마 2022. 3. 25.
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
반응형

'알고리즘 문제 풀이 > 구현' 카테고리의 다른 글

백준 - 사탕 박사 고창영(Kotlin)  (0) 2022.04.05
백준 - 과제는 끝나지 않아!(Java, Kotlin)  (0) 2022.04.04
백준 - 경쟁적 감염  (0) 2022.03.23
백준 - 빙고(Kotlin)  (0) 2022.03.23
백준 - 추월(Kotlin)  (0) 2022.02.24