-
[항해99]알고리즘_06sparta/알고리즘 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