https://www.acmicpc.net/problem/20301
큐를 이용해서 푸는 것이라는 건 알았는데, 하나하나 pop할 때마다 K를 더해서 체크하는 방식으로 풀어가지고 계속 시간초과가 났다. 다시보니 굳이 그렇게 하지 않고 한번에 K-1번 혹은 반대인 경우는 K번 이렇게 돌면서 pop을 해주면 되는 것이었다. 이 방식을 잘 기억해야겠다.
import sys
from collections import deque
input = sys.stdin.readline
N, K, M = map(int, input().split())
q = deque()
for i in range(1, N+1):
q.append(i)
m = 0
flag = 1
while (q):
if (flag == 1):
for _ in range(K-1):
q.append(q.popleft())
else:
for _ in range(K):
q.appendleft(q.pop())
print(q.popleft())
m += 1
if (m == M):
flag *= -1
m = 0
'알고리즘💻 > 스택&큐&덱' 카테고리의 다른 글
BOJ 1725번: 히스토그램 (0) | 2021.08.06 |
---|---|
BOJ 5430번: AC (0) | 2021.07.26 |
BOJ 10799번: 쇠막대기 (0) | 2021.07.24 |
BOJ 2812번: 크게 만들기 (0) | 2021.07.24 |
BOJ 9012번: 괄호 (0) | 2021.07.24 |