1. 문제설명
N명의 사람들은 한 줄로 서고, 사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. 각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 구한다.
- 시간 제한: 2초
- 메모리 제한: 128MB
2. 접근 방식
- 줄을 나타내는 배열을 생성한다.
- 키 작은 사람부터 차례로:
- 자신보다 키 큰 사람이 몇 명 있는지 입력받음
- 그 숫자만큼 빈자리 확보
- 그 자리에 해당하는 사람을 배치
- 배열 순서대로 출력한다.
3. 최종 코드
import java.io.*;
import java.util.StringTokenizer;
public class Main
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] line = new int[n]; // 줄 배치 저장
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<n; i++) {
int cnt = Integer.parseInt(st.nextToken()); // 자신보다 키 큰 사람 수
for(int j=0; j<n; j++) {
// cnt가 0이고, 현재 위치가 비어있으면
if(cnt == 0 && line[j] == 0) {
// 해당 자리에 배치
line[j] = i + 1;
break;
} else if(line[j] == 0){ // 현재 위치 비어있으면
cnt--; // cnt 감소
}
}
}
for(int i : line) {
System.out.print(i+" ");
}
}
}
반응형
'알고리즘 문제 > 백준' 카테고리의 다른 글
[백준] 17140번: 이차원 배열과 연산 (Java) (1) | 2024.09.19 |
---|---|
[백준] 16236번: 아기 상어 (Java) (2) | 2024.09.18 |
[백준] 21610번: 마법사 상어와 비바라기 (Java) (3) | 2024.09.18 |
[백준] 8911번: 거북이 (Java) (7) | 2024.09.18 |
[백준] 15685번: 드래곤 커브 (Java) (0) | 2024.09.17 |
댓글