일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- cyworld
- react native 타입스크립트
- 리액트 네이티브 맥
- 스탠실 버퍼 사용
- react native mac
- 싸이월드
- C++
- stencil buffer
- 벡터와 리스트의 차이
- node
- react native ios 기기 연결
- react native accessible
- GitHub
- node.js
- 스탠실 버퍼 튜토리얼
- html
- react native typescript navigate
- Expo
- c++ 정보은닉
- react native typescript navigation
- 스탠실 버퍼 시작
- unity stencil buffer
- react
- react native typescript
- react-native
- react native
- 리액트 네이티브 설치 오류
- CSS
- c++ using
- javascript
Archives
- Today
- Total
혀니의 이거저거 뿌시기
백준 1158 요세푸스 문제 - 큐 본문
728x90
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
from collections import deque
N, K = map(int, input().split())
lst = [i for i in range(N, 0, -1)]
deq = deque(lst)
lst2 = []
while len(deq) > 0:
for i in range(K - 1):
deq.appendleft(deq.pop())
lst2.append(str(deq.pop()))
print('<'+', '.join(lst2)+'>')
1 2 3 4 5 6 7 이 동그랗게 앉아있을 때 K가 3이면 +3씩 깡충 뛰기 해서 3 6 2 7 5 1 4 이런식으로 구하는것..
뭔가 큐라는 것을 생각 못했을 때에는.. 어떻게 지나간 자리를 지나갔다고 나타내지? 어렵게 느껴졌었는데
'큐'라는 힌트를 보고 나니까 K - 1만큼 뒤로 보내고 앞으로 온 수를 pop하면서 전체 큐가 빌 때까지 같은 동작을 반복하면 됐었다...
로직은 완성됐는데 시간초과가 나서 왜그런지 생각을 해보니
pop(0)을 하면 처음부터 모든 인덱스를 탐색해야 하므로 시간복잡도가 높을 것이라 예상되었다.
그래서 1234567이었던 배열을 7654321로 바꾸고 append -> appendleft / pop(0) -> pop으로 바꾸니 시간초과가 해결되었따.
이때 appendleft를 쓰기 위해 deque를 가져와서 썼다.
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
백준 1874 스택 수열 (0) | 2022.09.04 |
---|---|
백준 2417 정수 제곱근 (0) | 2022.09.03 |
백준 10816 숫자카드 2 - 딕셔너리 (0) | 2022.09.02 |
백준 1764 듣보잡 - 차집합 (0) | 2022.09.02 |
백준 2609 최소공배수 최대공약수 (0) | 2022.09.02 |