백준 1138 한 줄로 서기

more·2023년 10월 19일

처음에는 이게 도대체 뭔가 싶었는데...
쉽게 생각해서 배열 자리에 그냥 삽입하는 건가? 했더니 맞았음
뒤에 부터 봐서 2 1 1 0 이면
0 자리에 4 넣고, 1자리에 3, 1자리에 2, 2자리에 1 하면
4 # # #
4 3 # #
4 2 3 #
4 2 1 3
이렇게 넣고 그자리에 있는 거는 하나씩 뒤로 밀려나면 되기 때문에
배열에 집어넣은 거를 ArrayList에 넣으면 되는 것
ArrayList에 넣을 때에는 배열 뒤에 것 부터 넣는 것이 중요!!

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

      StringTokenizer st = new StringTokenizer(br.readLine());

      int n = Integer.parseInt(st.nextToken());

      int[] arr = new int[n + 1];

      List<Integer> list = new ArrayList<>();

      st = new StringTokenizer(br.readLine(), " ");
      
      for (int i = 1; i <= n; i++)
        arr[i] = Integer.parseInt(st.nextToken());

      for (int i = n; i >= 1; i--)
        list.add(arr[i], i);        

      for (int ans : list)
        bw.write(ans + " ");        

      
      bw.flush();
      bw.close();
      br.close();
    }
}

0개의 댓글