알고리즘(algo)/백준
[백준] 2164번 - 카드2
dDong2
2023. 2. 19. 11:40
참고: https://www.acmicpc.net/problem/2164
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
예를 들어서 1 2 3 4 5 6 이라는 카드가 있을 때,
1을 버리고 2는 맨뒤로 가서 3 4 5 6 2가 다음의 과정이 된다.
이것을 큐로 생각했을 때, 맨 앞에 오는 수를 버리고
다음 수는 임시로 저장해서 뒤로 추가하고, 앞에서는 버리는
그러한 과정을 구현할 수 있을 것으로 생각했다.
import sys
from collections import deque
input = sys.stdin.readline
card = deque(list(map(str, range(1, int(input())+1))))
while len(card) > 1:
card.popleft()
x = card[0]
card.popleft()
card.append(x)
print(card[0])
다른 답안에서는 규칙성을 찾아서 나누고 곱셈하는
연산을 수행하던데, 규칙 안에서는 더욱 빠르게 수행할
코드도 작성할 수 있을 것이다.
하지만 큐라는 알고리즘 분류에 맞게 우선 공부해보도록 하자..
화이팅 💪