Koala - 10기/코딩테스트 준비 스터디
[Python/백준] 2346 : 풍선 터트리기
허수민
2023. 5. 4. 20:37
2346번: 풍선 터뜨리기
1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선
www.acmicpc.net
문제
코드
해설
- 풍선의 수 N, 풍선 안 쪽지에 적힌 수를 입력 받는 덱 next를 입력받음
- arr는 1 ~ N개의 풍선을 순서대로 덱으로 구현
- arr 내의 원소가 하나라도 있다면 while문 반복
- 터트릴 풍선을 항상 arr의 index 0으로 데려올 것이기 때문에 풍선의 번호를 출력 후 arr에서 popleft()
- next에서도 없애야하기 때문에 popleft와 동시에 값을 temp에 저장
- temp의 값에 따라 방향이 달라지므로 총 2가지 경우가 발생
- temp가 양수일 때, 리스트의 원소들이 왼쪽으로 움직여야 터트릴 풍선이 index 0 자리에 올 수 있으므로 rotate(1-temp)를 사용
- temp가 음수일 때, 리스트의 원소들이 오른쪽으로 움직여야 터트릴 풍선이 index 0자리에 올 수 있으므로 rotate(-temp)를 사용
- arr 내의 모든 원소가 pop되면 while문이 종료되며 함께 종료