[백준/Python] 2164번 - 카드 2

2023. 9. 30. 15:48· Algorithm/BaekJoon
import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
q = deque([i for i in range(1, n+1)])

while len(q)!=1:
  q.popleft()
  q.append(q.popleft())

print(q[0])

 

큐로 풀면 되는 아주 간단한 문제다

 

시간 복잡도

deque는 double-linked list로 구현되어 있음

그래서 양 끝의 요소의 추가/삭제가 O(1)을 만족

 

반면, Python의 list는 fixed size memory blocks(array)로 구현되어 있음. 링크드 리스트처럼 보이지만 고정된 사이즈의 메모리를 갖는 array

따라서 리스트의 마지막 원소 삭제는 O(1)이지만, 첫번째 원소를 삭제하면 삭제 후 모든 원소를 앞으로 이동시키기 때문에 시간 복잡도가 O(n)

 

여기서는 deque를 써서 추가/삭제에 별다른 시간 복잡도는 없고, 마지막 원소 하나가 남을 때까지 순회를 하는 시간복잡도만 존재

=> O(n)

 

다른 사람 풀이

- 수학적으로 풀었다... 근데 이해는 안됨

n,m = int(input()), 1
while m<n: # O(logn)
    m *= 2
print(2*n-m)

m은 n이상의 최소 2의 제곱수(ex. (n,m) = (6,8), (7, 8), (8, 8), (9, 16))

여기서 2를 곱해준 횟수만큼이 제일 아래로 이동하는 숫자의 개수와 동일(ex. 8=2^3, 즉 3개의 숫자가 뒤로 이동함)

 

참고 사이트

https://wellsw.tistory.com/122

'Algorithm > BaekJoon' 카테고리의 다른 글

[백준/Python] 16200번 - 해커톤  (0) 2023.09.30
[백준/Python] 7785번 - 회사에 있는 사람  (0) 2023.09.30
[백준/Python] 15988번 - 1, 2, 3 더하기 3  (0) 2023.09.29
[백준/Python] 2748번 - 피보나치 수 2  (0) 2023.09.29
[백준/Python] 1600번 - 말이 되고픈 원숭이  (0) 2023.09.10
'Algorithm/BaekJoon' 카테고리의 다른 글
  • [백준/Python] 16200번 - 해커톤
  • [백준/Python] 7785번 - 회사에 있는 사람
  • [백준/Python] 15988번 - 1, 2, 3 더하기 3
  • [백준/Python] 2748번 - 피보나치 수 2
빵빵0
빵빵0
(아직은) 공부하고 정리하는 블로그입니다.
빵빵0
Hack Your World
빵빵0
전체
오늘
어제
  • 분류 전체보기 (77) N
    • Error Handling (6)
    • Project (3) N
    • Computer Science (4)
      • Data Structure (2)
      • Database (1)
      • Cloud (0)
      • OS (0)
      • Infra, Network (1)
      • AI (0)
    • Language (4)
      • Go (3)
      • Rust (1)
      • Python (0)
      • Java (0)
    • Algorithm (39)
      • BaekJoon (18)
      • Programmers (7)
      • LeetCode (6)
      • NeetCode (8)
    • SW Books (9)
      • gRPC Up & Running (1)
      • System Design Interview (2)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (6)
      • 블록체인 해설서 (0)
      • 후니의 쉽게 쓴 CISCO 네트워킹 (0)
    • Own (4) N
      • Personal (2) N
      • Novel (0)
      • Memo (2)
    • BlockChain (4)
      • Issues (0)
      • Research (4)
      • Tech (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • chart
  • MongoDB
  • decimal
  • Event
  • BFS
  • KBW
  • 2024
  • ohlcv
  • Palindrome
  • BaekJoon
  • 큐
  • 그리디
  • BEAKJOON
  • Python
  • 프로그래머스
  • go
  • blockchain
  • LeetCode
  • Programmers
  • 블록체인
  • 백준
  • 해시
  • NeetCode
  • two pointer
  • 스택
  • golang
  • Hash Table
  • DP
  • Greedy
  • candlechart

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
빵빵0
[백준/Python] 2164번 - 카드 2
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.