문제 출저
https://www.acmicpc.net/problem/1138
1138번: 한 줄로 서기
첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다
www.acmicpc.net
문제 풀이
1 ~ N 의 키를 가진 사람들이 주어진다. 이 때 왼쪽에 자신 보다 키 큰 사람이 몇 명 있는지 주어진다.
이 정보를 토대로 어떤 순서로 서 있는지 구해야 한다.
키가 큰 N부터 자리를 배정하는데 List에 넣었습니다.
자신의 차례일 때, List에는 자신 보다 키가 큰 사람만 있습니다.
왼쪽에 키 큰 사람 수에 해당하는 인덱스에 사람을 넣어 List를 완성했습니다.
소스 코드
package baekjoon.backjoon10.day1120.day13;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
/*
한 줄로 서기
https://www.acmicpc.net/problem/1138
키 1 ~ N
왼쪽에 키 큰 사람이 몇 명 있는지
키 큰 사람부터 카운팅
*/
public class B1138 {
static int n;
static int[] number;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
number = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i < n; i++) {
number[i] = Integer.parseInt(st.nextToken());
}
List<Integer> list = new ArrayList<>();
for(int i = n; i > 0; i--) {
int index = number[i-1];
list.add(index, i);
}
for(Integer data : list) {
System.out.print(data + " ");
}
}
}