3/31 스터디 문제

hyejun sang·2022년 3월 31일
0

알고리즘

목록 보기
11/28
post-thumbnail

1번 문제.
https://www.acmicpc.net/problem/10866
-> 덱

1번 문제 풀이 코드

import sys
from collections import deque

# 명령의 수
n = int(sys.stdin.readline())

# 명령어 함수 처리
def push_front(x, deq):
    deq.appendleft(x)
    return deq

def push_back(x, deq):
    deq.append(x)
    return deq

def pop_front(deq):
    if deq:
        print(deq.popleft())
    else:
        print(-1)

def pop_back(deq):
    if deq:
        print(deq.pop())
    else:
        print(-1)

def size(deq):
    print(len(deq))

def empty(deq):
    if deq:
        print(0)
    else:
        print(1)

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

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

# 명령어 사전
order_dict = {
    'push_front' : push_front,
    'push_back' : push_back,
    'pop_front' : pop_front,
    'pop_back' : pop_back,
    'size' : size,
    'empty' : empty,
    'front' : front,
    'back' : back
}

# 명령어 처리
deq = deque()

for _ in range(n):
    # push_back과 push_front는 띄어쓰기 후에 값을 더 받아옴
    # 명령을 리스트 형태로 받아오는 것
    order = sys.stdin.readline().split()
    # order[0]=명령어, order[1]=정수
    cmd = order[0]


    if len(order) == 1:
        # pop_front, pop_back, size, empty,front, back
        order_dict[cmd](deq)
    else:
        # push_front, push_back -> 이 둘은 값을 입력도 해줘야 함.
        x = int(order[1])
        deq = order_dict[cmd](x, deq)

=======================================================
후.. 덱을 사용하는건 거의 처음 하는거 같다..
익숙해져야지..
EDA & 웹 크롤링을 하면서부터는 뭔가 정신이 없다..ㅠㅜ
새로운 것도 많이 배우고 하니까.. 스터디 문제를 풀 시간이 많지 않다..ㅠㅠ 하루에 하나라도 쉬운거라도,, 꼭 하나씩은 풀어나갈 수 있길....ㅠ

0개의 댓글