23813번: 회전백준/문제2024. 7. 5. 13:39
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/23813
언어 : Kotlin
문제 설명 :
정수 N이 주어질 때, N의 일의 자리 숫자를 떼서 제일 앞자리 왼쪽에 이어 붙힌 것을 N의 회전이라고 정의하자. 예를 들어, 12345의 회전은 51234가 된다. 3의 회전은 3이 된다. 이렇게 회전을 계속하다 보면 원래 N으로 돌아오게 된다. 원래 N으로 돌아올 때까지의 N을 회전하여 나온 수를 모두 더한 값을 출력하시오.
입력 :
모든 자리의 숫자가 다른 정수 N이 주어진다. 각 자리의 숫자는 1이상이고, 1 ≤ N ≤ 987,654,321이다.
출력 :
N의 회전 결과들을 모두 더한 값을 출력한다. 단, 결과값을 32비트 정수형으로 처리할 수 없을 수 있음에 유의하라.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
12345 | 166665 |
풀이 :
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))
val list = mutableListOf<BigInteger>()
readLine().also {
for (i in it.indices) {
val sb = StringBuilder()
if (list.isEmpty()) {
sb.append(it.last()).append(it.substring(0, it.lastIndex))
} else {
val cur = list.last().toString()
sb.append(cur.last()).append(cur.substring(0, it.lastIndex))
}
list += sb.toString().toBigInteger()
}
bw.write("${list.sumOf { it }}")
}
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
16934번: 게임 닉네임 (0) | 2024.07.05 |
---|---|
30958번: 서울사이버대학을 다니고 (0) | 2024.07.05 |
25325번: 학생 인기도 측정 (0) | 2024.07.04 |
13022번: 늑대와 올바른 단어 (0) | 2024.07.04 |
20114번: 미아 노트 (1) | 2024.07.04 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!