뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

[18258] 큐 2 (Python)
Algorithm & Data Structure/문제 풀이

[18258] 큐 2 (Python)

2021. 6. 18. 12:35
반응형

BFS와 DFS 개념을 공부하고 문제를 풀어보기 위해 백준 18258번 문제를 풀어보았다.

해당 문제의 설명은 다음과 같다. 역시 시간초과를 해결하느라 머리를 굴려야했다 :)

큐의 개념을 익히고 실습하는 문제. 연산 당 시간 복잡도가 O(1)이어야 한다는 점에 유의하세요.

링크: https://www.acmicpc.net/problem/18258

 

18258번: 큐 2

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

생각정리

- 큐 문제이므로 deque를 사용해야겠다! 시간복잡도가 더 적으니까~

- 사실 이거말고는 딱히 없었다.

- 처음에는 각각 함수로 만들고 input()으로 입력을 받았는데

- 시간초과가 계속 떠서 수정하고 수정하고 한 코드가 아래의 코드!

- 함수로 따로 만들어주는게 시간복잡도에 영향을 미친다고 한다. 함수로 생성해보니 런타임 에러가 떠서 함수 생성 대신 조건문의 실행문에 바로 적었다.

# 시간을 단축시키기위해서는 input()보다는 sys.stdin.readline() 추천
import sys
from collections import deque
queue = deque()

n = int(input())
for i in range(n):
    ask = sys.stdin.readline().split()  # readline은 띄어쓰기와 \n까지 포함하기 때문에 split()을 함께 써주는게 좋음!
    if ask[0].startswith('push'):
        num = int(ask[1])
        queue.append(num)
    elif ask[0] == 'pop':
        if queue:
            print(queue.popleft())
        else:
            print(-1)
    elif (ask[0] == 'size'):
        print(len(queue))
    elif (ask[0] == 'empty'):
        if queue:
            print(0)
        else:
            print(1)
    elif (ask[0] == 'front'):
        if queue:
            print(queue[0])
        else:
            print(-1)
    elif (ask[0] == 'back'):
        if queue:
            print(queue[-1])
        else:
            print(-1)
반응형
저작자표시 (새창열림)

'Algorithm & Data Structure > 문제 풀이' 카테고리의 다른 글

[10828] 스택 (Python)  (0) 2021.06.21
[9012] 괄호 (Python)  (0) 2021.06.21
[10250] ACM 호텔 (Python)  (0) 2021.06.15
[1543] 문서 검색 (Python)  (0) 2021.06.15
[8958] OX퀴즈  (0) 2020.09.17
    'Algorithm & Data Structure/문제 풀이' 카테고리의 다른 글
    • [10828] 스택 (Python)
    • [9012] 괄호 (Python)
    • [10250] ACM 호텔 (Python)
    • [1543] 문서 검색 (Python)
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바