본문 바로가기
BOJ

[python] 백준 2346번 - 풍선 터뜨리기

by yujinkimkim 2023. 2. 4.

2346번: 풍선 터뜨리기 (acmicpc.net)

 

2346번: 풍선 터뜨리기

1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선

www.acmicpc.net

이거 약간 며칠 전에

한동이는 공부가 하기 싫어 문제랑 비슷한 느낌인 거 같아서

그런 식으로 접근해야하나 하다가

입력받은 값 만큼 이동하는 거 말고 비슷한 게 없길래

구글링 했듭니당

( •̀ ω •́ )✧

[Python] 백준 2346 풍선 터뜨리기 (Deque) (velog.io)

 

[Python] 백준 2346 풍선 터뜨리기 (Deque)

터진 풍선의 '번호(인덱스+1)'를 출력하는 문제이므로 pop을 하더라도 초기 인덱스 정보는 끝까지 유지되어야 한다. 이를 위해 enumerate가 사용되었다. enumerate 사용 전과 후의 덱 상태를 비교해보자

velog.io

이분 코드 보고 베낀게 전부라

공부한 내용 적을게용


deque

=> 스택과 큐의 기능을 모두 가진 객체로,

파이썬에서는 큐는 FIFO 방식으로 작동되는데, deque은 이게 양방향인 큐로

양쪽 방향에서 요소를 추가하고 제거할 수 있다네용

 

-보통 list보다 deque을 더 많이 쓰는데, deque가 속도가 훨 빠르대용

-from collections import deque 맨앞에 써서 임폴트 해주고 쓰면 된대용

-deque에 메소드가 진짜 많은데 리스트에서 좀더 추가된게

(appendleft(), popleft(), extendleft(), rotate())

인데 제일 신기했던게 rotate 에용

-rotate() 는 () 안 숫자만큼 회전하는 건데, 양수면 시계방향이고 음수면 반시계래용

 

deque maxlen

-deque에는 list에서 이제 또 추가적으로 max length를 지정해줄 수 있다네용

   => a = deque(maxlen = n ) 으로 하거나  a = deque([],n) 요런식으로 하면 된다는데용 

deque는 deque(iterable, maxlen) 형식으로 되어있어서 maxlen 이렇게 써줄거 아니면 초기화 진행하고서 n 써줘야한대용

         #iterable에는 string, tuple, list, set, dictionary(key만) 등이 올 수 있다네용 data type은 노상관이래용

maxlen 해주면

append나 appendleft 해줘서 요소 추가됐을 때, append하면 맨 왼쪽 원소가, appendleft하면 맨 오른쪽 원소가 삭제 된다네용  ( ̄y▽ ̄)╭ Ohohoho.....

 

(👉゚ヮ゚)👉여기서 잠깐

append랑 extend 차이점

넹,, 배웠었는데 또 까먹고~~~~또 까먹고~~~~~ヽ(*。>Д<)o゜

 

enumerate()

=> 인덱스와 원소로 이루어진 튜플로 만들어주는 함수로, 인덱스와 원소를 각각 다른 변수에 할당하고 싶으면 언패킹해주면 된다네용

=> for i, j in enumerate(['1','2','3'])

인덱스를 1부터 시작하게 하고 싶으면 저기 123 배열 옆에 , start = 1 추가해주면 된대용

파이썬의 enumerate() 내장 함수로 for 루프 돌리기 | Engineering Blog by Dale Seo

 

일단 문제를 보면

배열에 있는 값을 알아야 하고, 인덱스 값을 알아야 해서

=> enumerate()   쓰는데

 

문제 또 보면

좌우로 회전 시키잖아요

=> deque 에서 rotate

q = deque(enumerate(map(int, input().split())))

이제 pop하고 rotate 하고  해야하는데

pop한 값에서 인덱스 값 받고, 그 안에 종이값 받자나요

idx, paper = q.popleft()

완죤 신기했던게

뭐라해야하지 기준점을 가만히 두고 판만 돌리는 느낌??

돌려돌려돌림판 느낌으로 가는 게 신기했아용 여튼

 

popleft 하는 게 제일 첫번째 인덱스 pop 해주는 거자나요

그리고서 종이 안에 있는 거에 따라서 오른쪽이냐 왼쪽이냐인데

첫번째 종이포함 해서 움직여야하는데 앞에서 pop 해서 1칸 덜 움직이게 된다는 점 고려해서

양수라 시계방향으로 가야되면 1 빼주는거

 

오늘은 deque에 대해 알아보았는데용!

재밌는 놈이네용!

이 글을 볼 민정언니에게,,,

 

 

 

 

 

,

 

 

 

,

 

 

 

,

 

 

,,,♥

댓글