File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ 1 2 3 4 5 1 2 3 4 5 -> 원형 큐 -> 덱 이용
3
+ 풍선이 순서대로 3 2 1 -3 -1로 존재한다면 일단 덱에 전부 offer함
4
+ 풍선의 값이 양수라면 앞에서 맨 앞에서 뽑아서 맨 뒤에 삽입 -> 이후 맨 앞의 값을 뽑음
5
+ 풍선의 값이 음수라면 맨 뒤에서 뽑아서 맨 앞에 삽입 -> 이후 맨 앞의 값을 뽑음
6
+ */
7
+ import java .io .*;
8
+ import java .util .*;
9
+
10
+ class Node {
11
+ int value , sequence ;
12
+ Node (int value , int sequence ) {
13
+ this .value = value ;
14
+ this .sequence = sequence ;
15
+ }
16
+ }
17
+
18
+ class Main {
19
+ public static void main (String [] args ) throws Exception {
20
+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
21
+ BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System .out ));
22
+ int n = Integer .parseInt (br .readLine ());
23
+
24
+ StringTokenizer st = new StringTokenizer (br .readLine ());
25
+ Deque <Node > dq = new ArrayDeque <>();
26
+
27
+ for (int i = 1 ; i <= n ; i ++) {
28
+ dq .offer (new Node (Integer .parseInt (st .nextToken ()), i ));
29
+ }
30
+ StringBuilder result = new StringBuilder ();
31
+
32
+ Node node = dq .poll ();
33
+ result .append ("1 " );
34
+
35
+ while (dq .size () > 1 ) {
36
+ if (node .value > 0 ) {
37
+
38
+ for (int i = 0 ; i < node .value - 1 ; i ++) {
39
+ dq .offerLast (dq .pollFirst ());
40
+ }
41
+ node = dq .pollFirst ();
42
+
43
+ } else {
44
+
45
+ for (int i = 0 ; i < Math .abs (node .value + 1 ); i ++) {
46
+ dq .offerFirst (dq .pollLast ());
47
+ }
48
+ node = dq .pollLast ();
49
+
50
+ }
51
+ result .append (node .sequence ).append (" " );
52
+ }
53
+ result .append (dq .poll ().sequence );
54
+
55
+ bw .write (result .toString ());
56
+ bw .flush ();
57
+ bw .close ();
58
+ }
59
+ }
You can’t perform that action at this time.
0 commit comments