Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 자료구조
- redux
- 운영체제
- Next.js
- 30daysdowoonchallenge
- CSS
- 코드스테이츠
- mysemester
- 백준
- superstarjypnation
- level1
- web
- 자바스크립트
- 프로토타입
- 프로그래머스
- UX
- UI
- React
- 큐
- javascript
- 회고
- html
- 카카오
- REST_API
- 생활코딩
- Til
- useState
- 스택
- vercel
- 해시테이블
Archives
- Today
- Total
데굴데굴
[파이썬] 2164번: 카드2 본문
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
입력이 50만까지 주어지기 때문에 시간 초과에 유의하여 풀어야 한다.
처음에는 리스트로 해결했는데 답은 맞았지만 시간 초과가 발생하여 deque 라이브러리로 해결했다.
아래 페이지를 보면 deque의 삽입/삭제 연산 시간 복잡도는 O(1), 리스트는 O(n)이라 설명하고 있다.
리스트는 삽입/삭제 연산에서 비워진 곳을 메우기 위해, 혹은 새로 삽입된 값의 자리를 만들어 주기 위해 원소가 추가로 이동하지만 deque는 양방향 연결리스트로 관리되어 그렇지 않기 때문이다.
Deque in Python - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
혹시나 싶어 deque에 들어가는 리스트도 축약형으로 작성했는데 그게 큰 차이를 만들어내지는 않는 것 같다.
리스트로 푼 코드
import sys
n = int(sys.stdin.readline())
que = []
for i in range(1, n+1):
que.append(i)
while len(que) > 1:
que.pop(0)
popped = que.pop(0)
que.append(popped)
print(que[0])
deque 라이브러리로 푼 코드
import sys
from collections import deque
n = int(sys.stdin.readline())
que = deque([i for i in range(1, n+1)])
while len(que) > 1:
que.popleft()
popped = que.popleft()
que.append(popped)
print(que[0])
'algorithm > 백준' 카테고리의 다른 글
[파이썬] 1966번: 프린터 큐 (0) | 2022.08.11 |
---|---|
[파이썬] 11050번: 이항 계수 1 (0) | 2022.08.07 |
[파이썬] 4153번: 직각삼각형 (0) | 2022.07.26 |
[파이썬] 11655번: ROT13 (0) | 2022.07.22 |
[파이썬] 10820번: 문자열 분석 (0) | 2022.07.19 |
Comments