문제 정보
핵심
기존에 풀던 풀이가 있었는데, 해당 방식을 사용했더니 런타임 에러(ValueError)가 떠서 몇번이고 수정하다가
그냥 한 문장씩 받는 방식으로 바꾸어서 풀이하였다.
이전 풀이(스택) 에서 사용하지 않았던 3항 연산자도 사용하여 코드의 가독성 및 간결성을 높힐 수 있었다
풀이
import sys
N = int(sys.stdin.readline())
def sol():
queue = []
for i in range(N):
com = sys.stdin.readline().split()
if com[0] == 'pop':
print(queue.pop(0) if queue else -1)
elif com[0] == 'size':
print(len(queue))
elif com[0] == 'empty':
print(0 if queue else 1)
elif com[0] == 'front':
print(queue[0] if queue else -1)
elif com[0] == 'back':
print(queue[-1] if queue else -1)
elif com[0] == 'push':
queue.append(com[1])
sol()
N
번의 반복으로 readline
을 실행하여 각 문장을 받고,
각 문장을 split
하여 모두 동일한 방식으로 각 명령어들을 비교할 수 있었다
push
의 경우 split
하면 2개의 배열로 분리되므로 배열의 1번지에서 우리가 추가하고자 하는 값을 찾아낼 수 있다
고찰
해멨던 풀이
import sys
_ = sys.stdin.readline()
def sol():
queue = []
command = sys.stdin.read().split('\n')
for com in command:
if com == 'pop':
print(queue.pop(0) if queue else -1)
elif com == 'size':
print(len(queue))
elif com == 'empty':
print(0 if queue else 1)
elif com == 'front':
print(queue[0] if queue else -1)
elif com == 'back':
print(queue[-1] if queue else -1)
else:
_, x = com.split()
queue.append(x)
sol()
기존 풀이는 이거였는데, 스택에서 했던 방식과 동일하게 N
을 무시하고, 나머지 값들을 read()
로 받아서 처리하는 방식으로 풀이하였는데 자꾸 오류가 발생해서 이 방식을 사용하지 못했다
찾아봐도 해결이 나오지 않아 그냥 반복하여 문장을 받는 방식으로 풀이하였다
혹시나 해결 방법을 아시는분이 있다면 알려주시면 감사하겠습니다
댓글