일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 벡터와 리스트의 차이
- cyworld
- 리액트 네이티브 설치 오류
- unity stencil buffer
- react native 타입스크립트
- react
- react-native
- Expo
- node
- 싸이월드
- 스탠실 버퍼 사용
- react native mac
- GitHub
- react native typescript navigation
- c++ 정보은닉
- javascript
- react native typescript navigate
- c++ using
- node.js
- 리액트 네이티브 맥
- C++
- 스탠실 버퍼 시작
- html
- react native
- 스탠실 버퍼 튜토리얼
- stencil buffer
- react native accessible
- CSS
- react native ios 기기 연결
- react native typescript
Archives
- Today
- Total
혀니의 이거저거 뿌시기
백준 1021 회전하는 큐 (파이썬 / 자료구조) 본문
728x90
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
from collections import deque
result = 0
N, M = map(int, input().split())
deq = deque(i for i in range(1, N + 1))
lst = list(map(int, input().split()))
for i in range(M):
if deq.index(lst[i]) < len(deq) / 2:
while (deq[0] != lst[i]):
deq.append(deq.popleft())
result += 1
elif deq.index(lst[i]) >= len(deq) / 2:
while (deq[0] != lst[i]):
deq.appendleft(deq.pop())
result += 1
deq.popleft()
print(result)
deque를 이용해서 가장 적은 회전을 통해 구해야 하는 숫자들을 뽑아내야 하는 문제였다..
무엇보다 문제인 것이 인덱스를 참조할때 시간복잡도가 커지지 않을까 해서 고민이었는데
deque의 index함수로 참조를 하면 시간복잡도가 O(1)로 크지 않다고 한다.
이를 잘 알고 있다면 쉬운 문제였다.
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
10994 별 찍기 - 19 (파이썬/재귀) (0) | 2022.10.06 |
---|---|
1969 DNA (파이썬 / 브루트포스) (0) | 2022.09.29 |
백준 1735 분수 합 파이썬 (0) | 2022.09.18 |
백준 17609 회문 (파이썬 / 문자열) (0) | 2022.09.15 |
17413 단어 뒤집기2 (파이썬 / 문자열) (0) | 2022.09.14 |