[λ°±μ€€/python] 18258번 : 큐 2

2021. 3. 30. 15:10

문제

μ •μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” 큐λ₯Ό κ΅¬ν˜„ν•œ λ‹€μŒ, μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” λͺ…령을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

λͺ…령은 총 μ—¬μ„― 가지이닀.

  • push X: μ •μˆ˜ Xλ₯Ό 큐에 λ„£λŠ” 연산이닀.
  • pop: νμ—μ„œ κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό λΉΌκ³ , κ·Έ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
  • size: 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.
  • empty: 큐가 λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλ©΄ 0을 좜λ ₯ν•œλ‹€.
  • front: 큐의 κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
  • back: νμ˜ κ°€μž₯ 뒀에 μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.

μž…λ ₯

첫째 쀄에 μ£Όμ–΄μ§€λŠ” λͺ…λ Ήμ˜ 수 N (1 ≤ N ≤ 2,000,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” λͺ…령이 ν•˜λ‚˜μ”© 주어진닀. μ£Όμ–΄μ§€λŠ” μ •μˆ˜λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€. λ¬Έμ œμ— λ‚˜μ™€μžˆμ§€ μ•Šμ€ λͺ…령이 μ£Όμ–΄μ§€λŠ” κ²½μš°λŠ” μ—†λ‹€.

 

좜λ ₯

좜λ ₯ν•΄μ•Όν•˜λŠ” λͺ…령이 μ£Όμ–΄μ§ˆ λ•Œλ§ˆλ‹€, ν•œ 쀄에 ν•˜λ‚˜μ”© 좜λ ₯ν•œλ‹€. 

 

μ •λ‹΅

import sys
from collections import deque
N = int(sys.stdin.readline())


def pop():
    if not queue:
        print(-1)
    else:
        print(queue.popleft())


def size():
    print(len(queue))


def empty():
    if not queue:
        print(1)
    else:
        print(0)


def front():
    if not queue:
        print(-1)
    else:
        print(queue[0])


def back():
    if not queue:
        print(-1)
    else:
        print(queue[-1])


d = {"pop": pop, "size": size, "empty": empty, "front": front, "back": back}

queue = deque([])
for i in range(N):
    cmd = sys.stdin.readline()
    if "push" in cmd:
        x = list(cmd.split())
        queue.append(x[1])
    else:
        d[cmd[:-1]]()

이전에 ν’€μ—ˆλ˜ μ•„λž˜ λ¬Έμ œμ™€ μœ μ‚¬ν•˜λ‹€.

2021.03.29 - [πŸ”μ•Œκ³ λ¦¬μ¦˜/λ°±μ€€] - [λ°±μ€€/python] 10828번 : μŠ€νƒ

 

[λ°±μ€€/python] 10828번 : μŠ€νƒ

문제 μ •μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” μŠ€νƒμ„ κ΅¬ν˜„ν•œ λ‹€μŒ, μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” λͺ…령을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. λͺ…령은 총 λ‹€μ„― 가지이닀. push X: μ •μˆ˜ Xλ₯Ό μŠ€νƒμ— λ„£λŠ” 연산이닀. pop: μŠ€νƒμ—μ„œ κ°€μž₯ μœ„

ye333.tistory.com

μ‹œκ°„ 초과λ₯Ό λ§‰κΈ°μœ„ν•΄ λ‹€μŒμ„ μ‚¬μš©ν•˜μ˜€λ‹€.

  • input() λŒ€μ‹  sys.stdin.readline() μ‚¬μš©
  • λ”•μ…”λ„ˆλ¦¬ ν•¨μˆ˜ dλ₯Ό μ΄μš©ν•œ ν•¨μˆ˜ 호좜
  • 맨 μ•ž μ •μˆ˜ popν•˜κΈ° μœ„ν•΄ deque의 popleft() μ‚¬μš©

πŸ’₯ μ—¬κΈ°μ„œ μ£Όμ˜ν•΄μ•Όν•  점은 sys.stdin.readline()은 κ°œν–‰λ¬Έμž(\n)을 ν¬ν•¨ν•˜λ―€λ‘œ λ§ˆμ§€λ§‰ 문자λ₯Ό λΊ΄μ£Όμ–΄μ•Όν•œλ‹€.

λ”°λΌμ„œ λ”•μ…”λ„ˆλ¦¬ d의 ν‚€λ₯Ό cmd[:-1]둜 μ„€μ •ν•˜μ˜€λ‹€.

728x90

BELATED ARTICLES

more