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에 대해 알아보았는데용!
재밌는 놈이네용!
이 글을 볼 민정언니에게,,,
,
,
,
,,,♥
'BOJ' 카테고리의 다른 글
[python] 백준 1002번 - 터렛 (1) | 2023.02.06 |
---|---|
[python] 백준 1966번 - 프린터 큐 (1) | 2023.02.05 |
[python] 백준 1449번 - 수리공 (2) | 2023.02.01 |
[python] 백준 2312번 - 수 복원하기 (1) | 2023.01.31 |
[python] 백준 3182번 - 유진이는 공부가 하기 싫어! (1) | 2023.01.31 |
댓글