ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [항해99]알고리즘_06
    sparta/알고리즘 2021. 6. 21. 09:00

    [Python] 백준 18258 큐 2

     

       문제분석   

    # 파이썬은 collections모듈의 deque(double-ended queue)을 통해 큐 자료구조 구현

    # 보통 큐는 엘리먼트 삽입 · 삭제 방향이 한방향으로 정해져 있지만 덱은 양쪽에서 삽입 · 삭제 가능.
    # 양 끝 엘리먼트에 접근하여 삽입 · 삭제할 경우, 일반적인 리스트가 O(n)이 소요되는데 반해, 덱은 O(1) 소요.
    # 임포트(import) 해서 사용.

    명령 deque로 구현 설명
      deque() 초기화 함수로 iterable(리스트 등)을 인자로 받으면 이를 deque화 시킴
    push X que.append(X) deque의 append 메소드 사용으로 덱의 오른쪽에 X추가
    pop que.popleft() deque의 popleft() 메소드 사용으로 덱의 왼쪽 요소를 제거하고 반환
    size   list 길이 구하는 len함수 사용
    empty   if not 변수명
    front que[0] 큐의 가장 앞은 인덱스 0
    back que[-1] 큐의 가장 마지막은 인덱스 -1

     

     

       문제풀이   

    import sys
    from collections import deque
    
    n = int(sys.stdin.readline())
    
    que = deque()   # 빈 큐 만들기
    
    for _ in range(n):
        command = sys.stdin.readline().split()
    
        if command[0] == 'push':
            que.append(command[-1])     # print(que) -> deque(['1'])
    
        elif command[0] == 'pop':   # 큐는 선입선출이므로 popleft() 메소드사용
            if not que:
                print(-1)
            else:
                print(que.popleft())    
    
        elif command[0] == 'size':
            print(len(que))
    
        elif command[0] == 'empty':
            if not que:
                print(1)
            else:
                print(0)
    
        elif command[0] == 'front':  # 큐의 가장 앞 인덱스는 0
            if not que:
                print(-1)
            else:
                print(que[0])
    
        elif command[0] == 'back':  # 큐의 가장 마지막 인덱스는 -1
            if not que:
                print(-1)
            else:
                print(que[-1])

    'sparta > 알고리즘' 카테고리의 다른 글

    [항해99]알고리즘_08  (0) 2021.06.22
    [항해99]알고리즘_07  (0) 2021.06.22
    [항해99]알고리즘_05  (0) 2021.06.20
    [항해99]알고리즘_04  (0) 2021.06.18
    [항해99]알고리즘_03  (0) 2021.06.17

    댓글

Designed by Tistory.