또 뭐하지

백준 2164번 카드2 본문

Study/Coding Test

백준 2164번 카드2

mameul 2024. 11. 22. 22:01
728x90

■ 처음에 시간초과 떴던 코드

N = int(input())

L= [(i+1) for i in range(N)]

while len(L)>1:
        L.pop(0)
        L.append(L.pop(0))

print(L[0])

 

■ 제출코드

위에 코드를 이용해서 한 50까지 출력해놓고 패턴을 찾아서 코드를 작성했다. 

N보다 작은 2의 제곱수 중 가장 큰 값을 k라고 했을 때, (N - k) * 2 가 답이다.

N = int(input())
s = 1

while True:
    if (N == 1 or N == 2) :
        print(N)
        break
    
    s *= 2
    if N <= s:
        print(int(((N-(s/2)) * 2)))
        break

 

■ 다른 풀이

다름 사람들을 살펴보니 deque를 활용해서 첫 번째 제출했던 코드를 구현해서 제출했다.

 

[Python] 파이썬 데크(deque) 정리

파이썬을 이용하여 코딩테스트를 하다가 데크(deque)라는 자료구조를 많이 접하게 되어 확실하게 알고 넘어가는것이 좋을 것 같아 오늘은 이 데크(deque)에 대해서 정리를 해보는 시간을 가지려고

velog.io

<데이터 추가 및 제거 시 시간복잡도>

- list : O(n)

- daque : O(1)   # 아주 빠르다!

'Study > Coding Test' 카테고리의 다른 글

백준 1920번 수 찾기  (0) 2024.11.21
백준 1018번 체스판 다시 칠하기  (0) 2024.11.21
백준 11650번 좌표 정렬하기  (0) 2024.11.21
백준 10814번 나이순 정렬  (0) 2024.11.20
백준 7568번 덩치  (0) 2024.11.20