| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
													Tags
													
											
												
												- 공변성
- 반공변성
- 결정 알고리즘
- 인증/인가
- MSA
- 태그된 유니온
- 무한 스크롤
- recoil
- 호이스팅
- CORS
- map
- Promise
- dfs
- CI/CD
- TS
- React
- tailwind
- Jest
- useAppDispatch
- ESlint
- app router
- autosize
- RTK Query
- 리터럴 타입
- 인터섹션
- webpack
- 투포인터
- SSR
- async/await
- 타입 좁히기
													Archives
													
											
												
												- Today
- Total
짧은코딩
10866 덱 본문
반응형
    
    
    
  https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
내 풀이(맞음)
from collections import deque
class Deque:
    def __init__(self, ary = deque()):
        self.ary = ary
    def push_front(self, ary, item):
        ary.append(item)
    def push_back(self, ary, item):
        ary.appendleft(item)
    def pop_front(self, ary):
        if ary:
            t = ary[len(ary)-1]
            del ary[len(ary)-1]
            return t
        else:
            return -1
    def pop_back(self, ary):
        if ary:
            t = ary[0]
            del ary[0]
            return t
        else:
            return -1
    def size(self, ary):
        return len(ary)
    def empty(self, ary):
        if ary:
            return 0
        else:
            return 1
    def front(self, ary):
        if ary:
            return ary[len(ary)-1]
        else:
            return -1
    def back(self, ary):
        if ary:
            return ary[0]
        else:
            return -1
a = deque()
d = Deque(a)
n = int(input())
rst = []
for i in range(n):
    x = input().split()
    if x[0] == 'push_front':
        d.push_front(a, x[1])
    elif x[0] == 'push_back':
        d.push_back(a, x[1])
    elif x[0] == 'pop_front':
        rst.append(d.pop_front(a))
    elif x[0] == 'pop_back':
        rst.append(d.pop_back(a))
    elif x[0] == 'size':
        rst.append(d.size(a))
    elif x[0] == 'empty':
        rst.append(d.empty(a))
    elif x[0] == 'front':
        rst.append(d.front(a))
    elif x[0] == 'back':
        rst.append(d.back(a))
for i in rst:
    print(i)init로 덱인 ary를 만들어줍니다. push_front에서 앞쪽에 삽입하고 push_back에서 뒤쪽에 삽입합니다. 그리고 pop_front에서는 맨 앞쪽걸 삭제하고 출력하고 pop_back에서는 맨 뒤쪽걸 삭제하고 출력합니다. size에선 개수를 출력하고 empty는 비어있으면 1 안비었으면 0을 출력합니다. fornt에서는 맨 앞걸 출력하고 back에서는 맨 뒤에걸 출력합니다.
반응형
    
    
    
  '코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글
| 1920 수 찾기 (0) | 2022.02.08 | 
|---|---|
| 9012 괄호 (0) | 2022.02.08 | 
| 10845 큐 (0) | 2022.02.07 | 
| 10828 스택 (0) | 2022.02.05 | 
| 16435 스네이크버드 (0) | 2022.02.04 | 
			  Comments