백준 15947 아기 석환 뚜루루 뚜루
문제
석환이는 오늘 낮에 커피를 마셔서 잠에 들지 못하고 있다. 이불 속에서 너무 심심한 나머지 “아기 석환” 노래를 잠에 들 때까지 부르려고 한다. 석환이는 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
1
예제 출력 1
baby
예제 입력 2
17
예제 출력 2
turururu
예제 입력 3
45
예제 출력 3
tu+ru*5
풀이 과정
첫 번째는 하드코딩으로 진행했다. 규칙이 보여서 두 번째에는 좀 더 다듬었다.
세 번째에는 ru가 몇 개인지에 따라 정답을 출력했다.
코드 1
N = int(input())
song = ['sukhwan', 'baby', 'sukhwan', 'tururu', 'turu', 'very', 'cute', 'tururu', 'turu',
'in', 'bed', 'tururu', 'turu', 'baby']
length = len(song)
q, r = divmod(N, length)
result = song[r]
if song[r] in ['tururu', 'turu']:
if q == 1 and song[r] == 'tururu':
result = 'turururu'
elif q == 1 and song[r] == 'turu':
result = 'tururu'
elif q == 2 and song[r] == 'tururu':
result = 'tururururu'
elif q == 2 and song[r] == 'turu':
result = 'turururu'
elif q >= 3 and song[r] == 'tururu':
result = f'tu+ru*{q + 2}'
elif q == 3 and song[r] == 'turu':
result = 'tururururu'
elif q >= 4 and song[r] == 'turu':
result = f'tu+ru*{q + 1}'
print(result)
코드 2
N = int(input())
song = ['sukhwan', 'baby', 'sukhwan', 'tururu', 'turu', 'very', 'cute', 'tururu', 'turu',
'in', 'bed', 'tururu', 'turu', 'baby']
q, r = divmod(N, len(song))
result = song[r]
if result in ['tururu', 'turu']:
if q == 1 and song[r] == 'turu':
result = 'tururu'
elif (q == 1 and song[r] == 'tururu') or (q == 2 and song[r] == 'turu'):
result = 'turururu'
elif (q == 2 and song[r] == 'tururu') or (q == 3 and song[r] == 'turu'):
result = 'tururururu'
elif q >= 3 and song[r] == 'tururu':
result = f'tu+ru*{q + 2}'
elif q >= 4 and song[r] == 'turu':
result = f'tu+ru*{q + 1}'
print(result)
코드 3
N = int(input()) - 1
song = ['baby', 'sukhwan', 'tururu', 'turu', 'very', 'cute', 'tururu', 'turu',
'in', 'bed', 'tururu', 'turu', 'baby', 'sukhwan']
k, r = divmod(N, len(song))
result = song[r]
if r in [2, 6, 10]:
if k >= 3:
result = f'tu+ru*{k + 2}'
else:
result = 'tururu' + 'ru' * k
elif r in [3, 7, 11]:
if k >= 4:
result = f'tu+ru*{k + 1}'
else:
result = 'turu' + 'ru' * k
print(result)
Author And Source
이 문제에 관하여(백준 15947 아기 석환 뚜루루 뚜루), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mynote/백준-15947-아기-석환-뚜루루-뚜루저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)