문제 출처 : https://www.acmicpc.net/problem/15947
언어 : Kotlin
문제 설명 :
석환이는 오늘 낮에 커피를 마셔서 잠에 들지 못하고 있다. 이불 속에서 너무 심심한 나머지 “아기 석환” 노래를 잠에 들 때까지 부르려고 한다. 석환이는 UCPC 2018 출제진 중의 한 명인 석환(seokhwan)이랑은 달리, 자신의 이름을 sukhwan이라고 쓴다. 노래가 끝나면 다시 처음부터 부른다. 아기 석환 노래는 아래와 같다.
baby sukhwan tururu turu
very cute tururu turu
in bed tururu turu
baby sukhwan
하지만 석환이는 계속 노래를 똑같이 부르기는 심심해서, 노래가 한 번 끝날 때마다 “tururu”와 “turu”에 “ru”를 한 번씩 더 추가해서 다음과 같이 부르려고 한다.
baby sukhwan tururu turu
very cute tururu turu
in bed tururu turu
baby sukhwan
baby sukhwan turururu tururu
very cute turururu tururu
in bed turururu tururu
baby sukhwan
baby sukhwan tururururu turururu
very cute tururururu turururu
in bed tururururu turururu
baby sukhwan
…
이 때, 석환이가 부르는 노래의 N번째 단어는 무엇일까?
입력 :
첫 번째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
출력 :
첫 번째 줄에 석환이가 N번째로 부를 단어를 출력한다. 여기서 단어란 가사 중 공백으로 구분되는 연속된 알파벳 소문자열을 뜻한다. 단, 출력할 단어가 “tururu...ru”일 때, “ru”가 k(k ≥ 5)번 반복되면 “tu+ru*k”와 같이 출력한다.
제한 사항 :
- 시간 제한 : 1초 (추가 시간 없음)
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
1 | baby |
17 | turururu |
45 | tu+ru*5 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val arr = arrayListOf("baby", "sukhwan", "tururu", "turu", "very", "cute", "tururu", "turu", "in", "bed", "tururu", "turu", "baby", "sukhwan")
val n = readLine().toInt()
var result = ""
val idx = if (n % 14 - 1 >= 0) n % 14 - 1 else 14 + (n % 14 - 1)
arr[idx].also {
val repeatIdx = n / 14
result = if (it == "tururu" || it == "turu") {
val now = it + "ru".repeat(repeatIdx)
val cnt = now.replace("ru", "0").count { it == '0' }
if (cnt >= 5) {
"tu+ru*$cnt"
} else {
now
}
} else it
}
bw.write(result)
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
5357번: Dedupe (0) | 2024.04.16 |
---|---|
23303번: 이 문제는 D2 입니다. (0) | 2024.04.15 |
12780번: 원피스 (0) | 2024.04.15 |
3107번: IPv6 (0) | 2024.04.12 |
11367번: Report Card Time (0) | 2024.04.12 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!