728x90
반응형
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- deque 자료구조를 구현해 보는 문제이기에 리스트 대신 deque 자료구조를 사용해 봤다. deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
- 명령의 수를 입력받는다. N = int(sys.stdin.readline())
- 명령의 결과를 저장할 deque을 생성한다. Deque = deque()
- 명령어 수만큼 반복하며 for _ in range(N)
- 명령어를 리스트로 입력받는다. word = list(sys.stdin.readline().split())
- 만약 명령어의 명령이 push_front 이면 if (word[0] == 'push_front')
- deque의 제일 앞에 값을 추가한다. Deque.appendleft(int(word[1]))
- 만약 명령어의 명령이 push_back 이면 elif (word[0] == 'push_back')
- deque의 제일 뒤에 값을 추가한다. Deque.append(int(word[1]))
- 만약 명령어의 명령이 pop_front 이면 elif (word[0] == 'pop_front')
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 제일 앞의 값을 출력 및 삭제한다. else: print(Deque.popleft())
- 만약 명령어의 명령이 pop_back 이면 elif (word[0] == 'pop_back')
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 제일 뒤의 값을 출력 및 삭제한다. else: print(Deque.pop())
- 만약 명령어의 명령이 size 이면 deque의 크기를 출력한다. elif (word[0] == 'size'): print(len(Deque))
- 만약 명령어의 명령이 empty 이면 elif (word[0] == 'empty')
- deque이 공백일 경우 1을 출력하고 if (len(Deque) == 0): print(1)
- 공백이 아닐 경우 0을 출력한다. else: print(0)
- 만약 명령어의 명령이 front 이면 elif (word[0] == 'front')
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 deque의 제일 앞의 값을 출력한다. else: print(Deque[0])
- 그 외의 명령(back)이면 else
- deque이 공백일 경우 -1을 출력하고 if (len(Deque) == 0): print(-1)
- 공백이 아닐 경우 deque의 제일 뒤의 값을 출력한다. else: print(Deque[-1])
반응형
3. 소스코드
import sys
from collections import deque
N = int(sys.stdin.readline())
Deque = deque()
for _ in range(N):
word = list(sys.stdin.readline().split())
if (word[0] == 'push_front'):
Deque.appendleft(int(word[1]))
elif (word[0] == 'push_back'):
Deque.append(int(word[1]))
elif (word[0] == 'pop_front'):
if (len(Deque) == 0):
print(-1)
else:
print(Deque.popleft())
elif (word[0] == 'pop_back'):
if (len(Deque) == 0):
print(-1)
else:
print(Deque.pop())
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])
else:
if (len(Deque) == 0):
print(-1)
else:
print(Deque[-1])
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2444번 : 별 찍기 - 7 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.14 |
---|---|
[백준] 9461번 : 파도반 수열 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.13 |
[백준] 1158번 : 요세푸스 문제 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.12 |
[백준] 11721번 : 열 개씩 끊어 출력하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.11 |
[백준] 1002번 : 터렛 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.09 |
[백준] 1912번 : 연속합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.08 |
[백준] 15650번 : N과 M (2) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.07 |
[백준] 1924번 : 2007년 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.06 |