[Baekjoon] - 10866. ๋ฑ(S4)

์˜ค๋™ํ›ˆยท2022๋…„ 1์›” 4์ผ
0

Baekjoon

๋ชฉ๋ก ๋ณด๊ธฐ
17/58
post-thumbnail

1. Problem ๐Ÿ“ƒ

๐Ÿ“š ์ถœ์ฒ˜ - 10866 - ๋ฑ

๋ฌธ์ œ ์„ค๋ช…
์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฑ(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๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€ ์•Š์€ ๋ช…๋ น์ด ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

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

์ž…์ถœ๋ ฅ ์˜ˆ

์˜ˆ์ œ ์ž…๋ ฅ์˜ˆ์ œ ์ถœ๋ ฅ
15
push_back 1
push_front 2
front
back
size
empty
pop_front
pop_back
pop_front
size
empty
pop_back
push_front 3
empty
front
2
1
2
0
2
1
-1
0
1
-1
0
3
22
front
back
pop_front
pop_back
push_front 1
front
pop_back
push_back 2
back
pop_front
push_front 10
push_front 333
front
back
pop_back
pop_back
push_back 20
push_back 1234
front
back
pop_back
pop_back
-1
-1
-1
-1
1
1
2
2
333
10
10
333
20
1234
1234
20

2. Logic ๐Ÿ‘จโ€๐Ÿซ

๋ฌธ์ œ์— ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š๋‹ค!
๋‹ค๋งŒ ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ, push_back 1, push_front 2์™€ ๊ฐ™์ด ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด ๋ชจ๋“  ๋‹จ์–ด๋“ค์„ split ์ด์šฉํ•ด ๋ถ„๋ฆฌํ•ด ๋ฐ›์€ ๋‹ค์Œ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค.

3. Code ๐Ÿ’ป

1. ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ ๐Ÿ˜

import sys
input = sys.stdin.readline

def check(word):
    if word[0] == 'push_back':
        deque.append(int(word[1]))
    elif word[0] == 'push_front':
        deque.insert(0, int(word[1]))
    elif word[0] == 'pop_front':
        if len(deque) != 0:
            print(deque.pop(0))
        else:
            print(-1)
    elif word[0] == 'pop_back':
        if len(deque) != 0:
            print(deque.pop())
        else:
            print(-1)
    elif word[0] == 'size':
        print(len(deque))
    elif word[0] == 'empty':
        if len(deque) == 0:
            print(1)
        else:
            print(0)
    elif word[0] == 'front':
        if len(deque) == 0:
            print(-1)
        else:
            print(deque[0])
    elif word[0] == 'back':
        if len(deque) == 0:
            print(-1)
        else:
            print(deque[-1])


N = int(input())
deque = []
for i in range(N):
    word = input().split()
    check(word)

4. Feedback ๐Ÿ“š

1. ๋ฆฌ์ŠคํŠธ ๋งจ ์•ž์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

1. insert()

insert(index, item)๋Š” ์ธ์ž๋กœ ์ „๋‹ฌ๋œ index์— ์•„์ดํ…œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž์— ์•„์ดํ…œ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด insert(0, item)์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

list = [2, 9, 3]
list.insert(0, 'a')
print(list)

>>> ['a', 2, 9, 3]

2. collections.deque()

deque.append()

deque๋Š” append()๋„ ์ œ๊ณตํ•˜๋ฉฐ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

my_list = [2, 9, 3]
deq = deque(my_list)
deq.appendleft('a')
deq.append('b')

print(list(deq))

>>> ['a', 2, 9, 3, 'b']
profile
์‚ฝ์งˆ์˜ ๊ธฐ๋ก๋“ค๐Ÿฅ

0๊ฐœ์˜ ๋Œ“๊ธ€