문제 해석
N개의 풍선이 원형으로 놓여있고 안에는 숫자가 적혀있다.
풍선을 터뜨린 후 안의 숫자만큼 이동 후 다시 풍선을 터뜨리는 식으로 진행된다.
코드
문제 풀이
원형이기 때문에 앞뒤로 빼고 넣기 위해 자료구조로 덱을 사용하였다.
풍선 번호를 나타내는 덱과 풍선 안의 숫자를 나타내는 덱을 따로 que와 paper의 이름으로 선언해주었다.
처음 for문을 통해 덱에 알맞은 숫자들은 넣어 주고 arr는 터진 풍선 번호를 넣기 위해 초기화 해주었다.
그리고 1번 풍선을 터뜨려 숫자는 K에 넣어주고 번호는 arr에 넣어준다.
그런 다음 que가 빌때까지 while문을 돌게 되는데 K가 양수면 앞으로 이동해야하므로 앞쪽을 pop해서 뒤로 넣어주고 K에서 1을 빼주게 된다. K가 음수면 반대로 이동해야하므로 뒷쪽을 pop해서 맨앞에 넣어주었다.
만약 K가 0이나 1이 되면 다 이동했다는 것이므로 다시 풍선을 터뜨려 번호는 arr에 저장, 숫자는 K에 넣어주고 이것을 반복한다.
여기서 음수일때와 양수일때 조건이 0과 1로 다른 것은 풍선을 터뜨릴때 pop을 시키면서 바로 한칸이 이동하므로 다음과 같이 설정하였다.
마지막으로 arr을 출력한다.
'Koala - 7기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python] 1158번 요세푸스 문제 (0) | 2022.08.07 |
---|---|
[백준 / Python] 2164번 카드2 (0) | 2022.08.07 |
[백준/JAVA] 11003 최솟값찾기 (0) | 2022.08.06 |
[백준/C++] 2164 카드 2 (0) | 2022.08.05 |
[백준/C++] 1874번 스택 수열 (0) | 2022.08.04 |