전공공부
[BOJ_2346] 풍선 터트리기 본문
설명
사실 Deque의 사용을 생각해내는 것 보다 이것을 제출할때 메모리 초과 등의 오류를 잡는 것이 힘들다.
코드
package Data_Structure;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class BOJ_2346 {
static class Balloon {
int idx; // 풍선 번호
int value; // 적혀있는 값
public Balloon(int idx, int value) {
this.idx=idx;
this.value=value;
}
}
public static void main(String[] args) throws Exception{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = in.readLine();
int N = Integer.parseInt(str);
str = in.readLine();
Deque<Balloon> dq = new ArrayDeque<>();
StringBuilder sb = new StringBuilder();
String[] srr = str.split(" ");
for(int i = 0; i < N; i++) {
dq.add(new Balloon(i,Integer.parseInt(srr[i])));
}
while(N-- > 0) {
sb.append(dq.getFirst().idx + 1+" ");
int go = dq.poll().value;
if(dq.isEmpty()){
break;
}
if(go > 0) {
for(int i = 0; i < go - 1; i++)
dq.addLast(dq.pollFirst());
}
else {
for(int i = 0; i < Math.abs(go); i++)
dq.addFirst(dq.pollLast());
}
}
System.out.println(sb.toString());
}
}
2346번: 풍선 터뜨리기
1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선
www.acmicpc.net
'Study > Problem Solving' 카테고리의 다른 글
[BOJ_1620] 나는야 포켓몬 마스터 이다솜 (0) | 2023.10.25 |
---|---|
[BOJ_1966] 프린터 큐 (1) | 2023.10.24 |
[BOJ_1935] 후위표기식2 (1) | 2023.10.22 |
[BOJ_10866] 덱 (0) | 2023.10.21 |
[BOJ_9012] 괄호 (1) | 2023.10.21 |