CodeUp?
크레이는 처음 보는 코딩 사이트인데요.
도전 욕구를 자극하는 문제가 있어 풀어보았습니다.
사이트 : https://codeup.kr/
문제URL :https://codeup.kr/problem.php?id=1808
문제의 설명이 처음 풀어보는 개발자에게는 다소 어려울 수 있어 보충설명을 덧붙이자면 아래와 같습니다.우선 HQ9+ 라는 언어의 소스코드가 입력됩니다.
소스코드는 각각 1글자 단위로 이루어져 있으며
'H', 'Q', '9', '+'라는 4가지 코드로만 구성되어 순서는 랜덤으로 입력됩니다.
그래서 각 코드(글자)에 대해 처리를 하면 되는 데요.입력은 아래와 같이 자유분방하게 주어질 수 있습니다.
'HQ9+'
'QH+9'
'HQHQQQ+9HQ9'
그래서 각 입력된 상황에 맞게 결과를 출력하면 되는데요.
특히 주목하여 보실 부분은 단수와 복수 처리입니다.
병이 2개 이상일 때는 '2 bottles' 로 표현하지만,
병이 1개일 떄는 '1 bottle'과 같이 복수기호 s 를 제외해야 하는 것이지요.
아울로 병이 0개일 떄는 'no more bottles'로 출력해야 합니다.
그 외 정확한 띄어쓰기, 개행처리가 요구됩니다.
풀이 소스는 아래와 같습니다.
소스에 주석을 달아드렸으니 복붙으로 끝나지 말고
이해하려고 노력하시면 실력 향상에 도움이 되실 겁니다 :)
# 소스코드 입력
sourcecode = input()
# 가산기 변수 정의
acc=0
# 글자 단위 반복
for i in range(len(sourcecode)):
# 1글자가 1개의 소스코드
cmd = sourcecode[i]
# 각 소스코드에 대한 출력 처리
if cmd == 'H':
print('Hello, world!', end=' ')
elif cmd == 'Q':
print(sourcecode, end=' ')
elif cmd == '9':
# 99부터 1개까지 가사 출력
for j in range(99, 0, -1):
# 병이 1개일 때와 2개 이상일 때 단어 출력(복수)을 다르게 함
if j == 1:
word =f'{j} bottle'
else:
word=f'{j} bottles'
print(f'{word} of beer on the wall, ', end='')
print(f'{word} of beer. ')
print(f'Take one down and pass it around, ', end='')
# 병을 1개 빼었을 때 단어 출력을 다르게 함
# 병이 0개인 경우도 처리
if j-1 == 1:
word =f'{j-1} bottle'
elif j-1 == 0:
word = f'no more bottles'
else:
word=f'{j-1} bottles'
print(f'{word} of beer on the wall. ' )
# 나머지 남은 가사 출력
print(f'No more bottles of beer on the wall, no more bottles of beer. ');
print(f'Go to the store and buy some more, 99 bottles of beer on the wall. ', end='')
elif cmd == '+':
# 가산기 처리는 별 의미없는 코드이나 넣어봄
acc = acc + 1
결과
방문해 주신 분들께도 감사드립니다.
지혜를 구하시는 모든 분들에게 좋은 성경말씀 한 구절 공유드립니다.
여러분 가운데 누구든지 지혜가 부족하거든, 모든 사람에게 아낌없이 주시고 나무라지 않으시는 하나님께 구하십시오. 그리하면 받을 것입니다.
- 야고보서 1장 5절 말씀 -