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 |
Tags
- 백준 1644
- 코루틴 플로우
- flow buffering
- java
- 5582 파이썬
- 투포인터 알고리즘
- Jetpack Room
- 자료구조
- 1644 파이썬
- 10819 파이썬
- 백준 5582
- 5582 DP
- git local remote
- 자바
- 백준 2096
- 1806 파이썬
- Android Room
- 1806 백준
- android hilt
- 1753 파이썬
- 1003 파이썬
- 백준 10819
- 6588 파이썬
- 2096 파이썬
- Coroutine Flow
- 1806 투포인터
- 1753 다익스트라
- Android mvp
- 이진 탐색
- 안드로이드 hilt
Archives
- Today
- Total
Gemstone's Devlog
[백준] 2346번: 풍선 터뜨리기 본문
https://www.acmicpc.net/problem/2346
2346번: 풍선 터뜨리기
1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선
www.acmicpc.net
데크(deque)를 활용하여 문제를 해결하였다.
데크(deque)에 존재하는 메서드(method)는 대략 다음과 같다.
- deque.append(item): item을 데크의 오른쪽 끝에 삽입한다.
- deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다.
- deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
- deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
- deque.remove(item): item을 데크에서 찾아 삭제한다.
- deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).
여기서 본인은 rotate 메서드를 활용하여 이 문제를 간단하게 해결하였다.
# Contain 1, 2, 3, 4, 5 in deq
deq = deque([1, 2, 3, 4, 5])
deq.rotate(1)
print(deq)
# deque([5, 1, 2, 3, 4])
deq.rotate(-1)
print(deq)
# deque([1, 2, 3, 4, 5])
또한 enumerate와 join 함수를 활용하여 문제를 깔끔하게 해결하였다.
풀이한 소스코드를 한 번 보자.
from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
dq = deque(enumerate(map(int, input().split())))
ans_list = []
print(dq)
while dq:
idx, num = dq.popleft()
ans_list.append(idx + 1)
if num > 0 :
dq.rotate(-(num - 1))
elif num < 0 :
dq.rotate(-num)
print(' '.join(map(str, ans_list)))
'Data Structure & Algorithms' 카테고리의 다른 글
[백준] 17298번: 오큰수 (0) | 2021.08.17 |
---|---|
[백준] 1406번: 에디터 (0) | 2021.08.17 |
[백준] 2447번: 별 찍기 - 10 (0) | 2021.08.16 |
[백준] 1011번: Fly me to the Alpha Centauri (0) | 2021.08.10 |
[백준] 1316번: 그룹 단어 체커 (0) | 2021.08.06 |