Koala - 10기/코딩테스트 준비 스터디

[Python/백준] 2346 : 풍선 터트리기

허수민 2023. 5. 4. 20:37

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

 

2346번: 풍선 터뜨리기

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

www.acmicpc.net

 

문제

 

코드

 

해설

  • 풍선의 수 N, 풍선 안 쪽지에 적힌 수를 입력 받는 덱 next를 입력받음
  • arr는 1 ~ N개의 풍선을 순서대로 덱으로 구현
  • arr 내의 원소가 하나라도 있다면 while문 반복
    1. 터트릴 풍선을 항상 arr의 index 0으로 데려올 것이기 때문에 풍선의 번호를 출력 후 arr에서 popleft()
    2. next에서도 없애야하기 때문에 popleft와 동시에 값을 temp에 저장
    3. temp의 값에 따라 방향이 달라지므로 총 2가지 경우가 발생
      • temp가 양수일 때, 리스트의 원소들이 왼쪽으로 움직여야 터트릴 풍선이 index 0 자리에 올 수 있으므로 rotate(1-temp)를 사용
      • temp가 음수일 때, 리스트의 원소들이 오른쪽으로 움직여야 터트릴 풍선이 index 0자리에 올 수 있으므로 rotate(-temp)를 사용
  • arr 내의 모든 원소가 pop되면 while문이 종료되며 함께 종료