본문 바로가기
백준

[백준] 2164번 파이썬 (카드2)

by 헤이즐넛 좋아하는 개발자 2024. 3. 20.

1. 문제와 예제

문제
예제


2. 전체 코드

1) 큐 사용

# Queue 사용
from collections import deque

# 입력 받기
N = int(input())

deq = deque([(i+1) for i in range(N)])
l = len(deq)

for _ in range(l-1):
    # 제일 위 카드 버리기
    deq.popleft()

    # 위 카드 제일 아래로 옮기기
    num = deq.popleft()
    deq.append(num)

# 결과 출력하기
print(deq[0])

큐 구조를 사용하는 대표적인 구조가 이러한 구조다. 큐는 삽입/삭제 연산의 시간 복잡도가 O(1)로 매우 빠르다는 장점이 있다.

 

2) 규칙 발견해서 사용

# 규칙 발견해서 사용
# N = 1 -> output = 1 = (1-0)
# N = 2 -> output = 2 = (2-1)*2
# N = 3 -> output = 2 = (3-2)*2
# N = 4 -> output = 4 = (4-2)*2
# N = 5 -> output = 2 = (5-4)*2
# N = 6 -> output = 4 = (6-4)*2
# N = 7 -> output = 6 = (7-4)*2
# N = 8 -> output = 8 = (8-4)*2

N = int(input())
i = 1

if (N == 1):
    print(1)
else:
    while (i < N):
        i *= 2
    i = i // 2
    print((N - i) * 2)

문제 설명을 이해하기 위해 N이 1~8일 때 결과를 써보다가 규칙성을 발견했다.