문제
https://www.acmicpc.net/problem/10845
걸린 시간
00 : 33 : 11
풀이
Python3
class Node():
def __init__(self, item):
self.item = item
self.link = None
class Queue():
def __init__(self):
self.front = None
self.rear = None
self.count = 0
def push(self, item):
temp = Node(item)
self.count += 1
if self.empty():
self.front = temp
self.rear = temp
else:
self.rear.link = temp
self.rear = temp
def pop(self):
temp = self.front
if self.empty():
return -1
else:
item = temp.item
self.front = temp.link
if self.front == None:
self.rear = None
self.count -= 1
return item
def size(self):
return self.count
def empty(self):
if self.front == None:
return 1
else:
return 0
def _front_(self):
if self.empty():
return -1
else:
return self.front.item
def _back_(self):
if self.empty():
return -1
else:
return self.rear.item
if __name__ == "__main__":
q = Queue()
command = []
N = int(input())
for i in range(0, N):
command.append(input())
for i in command:
c = i.split()
if len(c) > 1:
q.push(c[1])
else:
if c[0] == "pop":
print(q.pop())
elif c[0] == "size":
print(q.size())
elif c[0] == "empty":
print(q.empty())
elif c[0] == "front":
print(q._front_())
elif c[0] == "back":
print(q._back_())
구현해야하는 큐 클래스의 메소드 중 맨 앞 노드의 정수를 출력하는 front()
가 멤버변수 front
와 이름이 겹쳐 발생한 에러를 찾는데 시간이 걸렸다.
또 front 와 back 함수에서 큐가 비어있을 경우 -1 을 반환하는 부분을 생략하고 구현해 런타임 에러가 발생했다. 우연히 적절한 테스트 케이스로 시도를 해 보지 않았더라면 어느 부분이 틀렸는지 한참을 고민했을 것이다. 런타임 에러가 발생하면 문제의 조건을 처음부터 다시 살펴보자.
'Baekjoon' 카테고리의 다른 글
Baekjoon 1874번 스택 수열 (0) | 2020.07.20 |
---|---|
Baekjoon 1002번 터렛 (0) | 2020.07.20 |
Baekjoon 10828번 스택 (0) | 2020.07.18 |
Baekjoon 18111번 마인크래프트 (0) | 2020.07.18 |
Baekjoon 2805번 나무 자르기 (0) | 2020.07.17 |
댓글