Baekjoon

Baekjoon 10848번 큐

ppwag 2020. 7. 19. 22:10

문제

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

댓글