๐Ÿงฉ Algorithm/[BOJ] Silver

BOJ 10866๋ฒˆ : ๋ฑ (Python/Silver 4)

devCloud 2023. 4. 20. 22:39
728x90
 

10866๋ฒˆ: ๋ฑ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€

www.acmicpc.net

๋ฌธ์ œ

์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฑ(Deque)๋ฅผ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋ช…๋ น์€ ์ด ์—ฌ๋Ÿ ๊ฐ€์ง€์ด๋‹ค.

  • push_front X: ์ •์ˆ˜ X๋ฅผ ๋ฑ์˜ ์•ž์— ๋„ฃ๋Š”๋‹ค.
  • push_back X: ์ •์ˆ˜ X๋ฅผ ๋ฑ์˜ ๋’ค์— ๋„ฃ๋Š”๋‹ค.
  • pop_front: ๋ฑ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • pop_back: ๋ฑ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • size: ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • empty: ๋ฑ์ด ๋น„์–ด์žˆ์œผ๋ฉด 1์„, ์•„๋‹ˆ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • front: ๋ฑ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • back: ๋ฑ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€ ์•Š์€ ๋ช…๋ น์ด ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

 

์ถœ๋ ฅ

์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” ๋ช…๋ น์ด ์ฃผ์–ด์งˆ ๋•Œ๋งˆ๋‹ค, ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.


ํ’€์ด

- deque.append(item) : ์˜ค๋ฅธ์ชฝ ๋์— ์‚ฝ์ž…
- deque.appendleft(item) : ์™ผ์ชฝ ๋์— ์‚ฝ์ž…
- deque.pop() : ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์˜ ์š”์†Œ ๋ฐ˜ํ™˜ ๋ฐ ์‚ญ์ œ
- deque.popleft() : ๊ฐ€์žฅ ์™ผ์ชฝ์˜ ์š”์†Œ ๋ฐ˜ํ™˜ ๋ฐ ์‚ญ์ œ
- deque.extend(array) : ์ฃผ์–ด์ง„ array ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ q์˜ ์˜ค๋ฅธ์ชฝ์— ์ถ”๊ฐ€
- deque.extendleft(array) : ์ฃผ์–ด์ง„ array ๋ฐฐ์—ด์„ ์ˆœํ™˜ํ•˜๋ฉฐ q์˜ ์™ผ์กฑ์— ์ถ”๊ฐ€
- deque.remove(item) : ํ•ด๋‹น item์„ deque์—์„œ ์ฐพ์•„์„œ ์‚ญ์ œ
- deque.rotate(์ˆซ์ž) : ํ•ด๋‹น ์ˆ˜๋งŒํผ ํšŒ์ „ (์–‘์ˆ˜ : ์‹œ๊ณ„๋ฐฉํ–ฅ, ์Œ์ˆ˜ : ๋ฐ˜์‹œ๊ณ„)

 

Solution

import sys
from collections import deque
deq = deque()

input = sys.stdin.readline
for _ in range(int(input())):
    n = input().rstrip()
    num = []
    back = 0
    if "push_front" in n:
        for i in n:
            if i.isdigit():
                num.append(i)
        num = ''.join(num)
        deq.appendleft(num)
    elif "push_back" in n:
        for i in n:
            if i.isdigit():
                num.append(i)
        num = ''.join(num)
        deq.append(num)
    elif "pop_front" in n:
        if not deq:
            print(-1)
        else:
            print(deq.popleft())
    elif "pop_back" in n:
        if not deq:
            print(-1)
        else:
            print(deq.pop())
    elif "size" in n:
        print(len(deq))
    elif "empty" in n:
        if not deq:
            print(1)
        else:
            print(0)
    elif "front" in n:
        if not deq:
            print(-1)
        else:
            print(deq[0])
    elif "back" in n:
        if not deq:
            print(-1)
        else:
            back = deq.pop()
            print(back)
            deq.append(back)
728x90