6378번: 디지털 루트백준/문제2024. 2. 16. 14:16
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/6378
언어 : Kotlin
문제 설명 :
양의 정수 N의 디지털 루트를 구하려면 N을 이루고 있는 모든 자리수를 더해야 한다. 이때, 더한 값이 한 자리 숫자라면, 그 수가 N의 디지털 루트가 된다. 두 자리 이상 숫자인 경우에는 다시 그 수를 이루고 있는 모든 자리수를 더해야 하며, 한 자리 숫자가 될 때 까지 반복한다.
24의 디지털 루트를 구해보자. 2+4=6이다. 6은 한 자리 숫자이기 때문에, 24의 디지털 루트는 6이 된다. 39의 경우에는 3+9=12이기 때문에, 한 번 더 더해야 한다. 따라서, 1+2=3이 디지털 루트가 된다.
양의 정수 N이 주어졌을 때, 그 수의 디지털 루트를 구하는 프로그램을 작성하시오.
입력 :
한 줄에 하나씩 양의 정수가 주어진다. 입력의 마지막 줄은 0으로 나타낸다. 수는 최대 1000자리이다.
출력 :
입력으로 주어진 양의 정수의 디지털 루트를 한 줄에 하나씩 주어진 순서대로 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
24 39 0 |
6 3 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.math.BigInteger
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
while (true) {
val input = readLine()
if (input == "0") break
bw.appendLine("${repeater(input)}")
}
bw.flush()
bw.close()
}
fun repeater(n: String): BigInteger {
val sum = n.chunked(1).sumOf { it.toBigInteger() }
return if (sum.toString().length > 1) repeater(sum.toString()) else sum
}
'백준 > 문제' 카테고리의 다른 글
1701번: Cubeditor (0) | 2024.02.19 |
---|---|
13985번: Equality (0) | 2024.02.19 |
2999번: 비밀 이메일 (0) | 2024.02.16 |
27889번: 특별한 학교 이름 (0) | 2024.02.16 |
2153번: 소수 단어 (1) | 2024.02.15 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!