참고: 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])
다른 답안에서는 규칙성을 찾아서 나누고 곱셈하는
연산을 수행하던데, 규칙 안에서는 더욱 빠르게 수행할
코드도 작성할 수 있을 것이다.
하지만 큐라는 알고리즘 분류에 맞게 우선 공부해보도록 하자..
화이팅 💪
'알고리즘(algo) > 백준' 카테고리의 다른 글
[백준] 10866번 - 덱 (0) | 2023.02.21 |
---|---|
[백준] 10816번 - 숫자 카드 2 (0) | 2023.02.21 |
[백준] 18258번 - 큐 2 (0) | 2023.02.19 |
[백준] 9095번 - 1,2,3 더하기 (0) | 2023.02.16 |
[백준] 10815번 - 숫자 카드 (0) | 2023.02.15 |