728x90
백준 1138: 한 줄로 서기
풀이
나보다 큰 사람이 설 수 있는 공간을 마련해야 한다.
즉, 내가 자리에 서기 전에 내 앞에 내가 방문했는지 확인을 하고
방문 안 한 자리면 ++ 카운팅을 해준다.
카운팅 한 수가 나보다 큰 사람의 수와 같아지면
내가 서있어야 하는 곳이 바로 그곳!
전체코드
package 백준renew;
import java.io.*;
import java.util.*;
public class 실버2_1138_한줄로서기 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int arr[] = new int[N];
boolean visited[] = new boolean[N];
//나보다 큰 사람이 설 수 있는 공간을 마련해 둬야 한다. >> 이게 키포인트!
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
int num = Integer.parseInt(st.nextToken());
int cnt = 0;
for(int j=0; j<N; j++) {
if(!visited[j]) {
if(cnt == num) {
visited[j] = true;
arr[j] = i+1;
break;
}else {
cnt++;
}
}
}
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<N; i++) {
sb.append(arr[i]).append(" ");
}
bw.write(sb.toString());
bw.close();
}
}
728x90
'코테 > Algorithm' 카테고리의 다른 글
[BOJ] 5639: 이진 검색 트리 (JAVA) (0) | 2024.08.30 |
---|---|
[Programmers] 길 찾기 게임(JAVA) (3) | 2024.08.28 |
[Programmers] N개의 최소공배수 (JAVA) (0) | 2024.08.26 |
[BOJ] 1260: DFS와 BFS(JAVA) (0) | 2024.08.25 |
[BOJ] 1446 : 지름길 (JAVA) (0) | 2024.08.25 |