알고리즘(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])

 

다른 답안에서는 규칙성을 찾아서 나누고 곱셈하는

연산을 수행하던데, 규칙 안에서는 더욱 빠르게 수행할

코드도 작성할 수 있을 것이다.

하지만 큐라는 알고리즘 분류에 맞게 우선 공부해보도록 하자..

 

화이팅 💪