20001번 고무오리 디버깅
문제를 입력하면 문제가 쌓이고 고무오리를 입력하면 문제 하나를 해결한다.
만약 문제가 없는데 고무오리를 입력할 경우 문제가 2개가 쌓이는데
고무오리 디버깅이 종료되었을 때 문제가 남아있지 않으면 고무오리야 사랑해를 출력하고 문제가 남으면 힝구를 출력하는 문제.
from collections import deque
# 먼저 들어온 문제를 먼저 해결하는 큐를 구현하기 위해 데크를 사용해 보았다.
start = input() # 고무오리 디버깅 시작
question = deque() # 문제를 쌓아줄 공간
while 1:
n = input() # 문제 or 고무오리 입력
if n == '문제': # 문제가 입력 되었다면
question.append(n) # 문제를 쌓는다.
elif n == '고무오리 디버깅 끝': # 고무오리 디버깅 끝이 입력되었을 때
if len(question) > 0:
print('힝구')
break
# 문제를 쌓는 공간의 길이에 따라 힝구 혹은 고무오리야 사랑해를 출력하고 break
else:
print('고무오리야 사랑해')
break
else: # 고무오리가 입력되었을 때
if len(question) == 0: # 공간이 비어있다면
question.append(n) # 문제를 두번 쌓는다.
question.append(n)
else: # 문제가 쌓여있다면 첫번째에 있는 문제를 해결해줬다.
question.popleft()
큐를 구현하지 않고 카운트를 해서 +1, -1, +2 를 해주는 식으로 하거나
문제가 선입선출이나 후입선출과는 상관이 없어서 그냥 리스트로 풀어도
무관하지만 CS 공부를 병행하면서 하는김에 활용을 한번 해보고자 했다.