https://www.acmicpc.net/problem/1138
나의풀이
import java.io.*;
import java.util.*;
public class Main {
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];
Arrays.fill(arr, 0); //초기화
StringTokenizer st=new StringTokenizer(br.readLine());
for(int i=0;i<n;i++){
int key=i+1; //키
int temp=Integer.parseInt(st.nextToken()); // 자기보다 키가 큰 왼쪽 사람 수
if(key==n){
for(int k=0;k<n;k++){
if(arr[k]==0){
arr[k]=key;
break;
}
}
}else{
int empty=n-key-temp; //뒤에 남아야하는 빈칸
for(int j=n-1 ; j>=0 ; j--){
if(arr[j]==0 && empty==0){
arr[j]=key;
break;
}
if(arr[j]==0){//빈칸인 경우만
empty--;
}
}
}
}
for(int a:arr){
bw.write(Integer.toString(a)+" ");
}
bw.close();
}
}
내가 생각한 방법
'4' '2 ' '1' ' 3'
1 -> 4-1= 3개 남음. 3-2=1 뒤에 빈거 1칸
2 -> 4-2= 2개 남음. 2-1=1 뒤에 빈거 1칸
3 -> 4-3= 1개 남음. 1-1=0 뒤에 빈거 0칸
4 -> 4-4= 0개 남음. 0-0=0 뒤에 빈거 0칸
'6' '2' '3' '4' '7' '5' '1'
1 -> 7-1= 6개남음. 6-6=0 뒤에 빈거 0칸
2 -> 7-2= 5개남음. 5-1=4 뒤에 빈거 4칸
3 -> 7-3= 4개남음. 4-1=3 뒤에 빈거 3칸
4 -> 7-4= 3개남음. 3-1=2 뒤에 빈거 2칸
5 -> 7-5= 2개남음. 2-2=0 뒤에 빈거 0칸
6 -> 7-6= 1개남음. 1-0=1 뒤에 빈거 1칸
7 -> 7-7= 0개남음. 마지막 남은곳.
'코테풀이' 카테고리의 다른 글
[백준] BOJ - 10431 줄 세우기 자바 java (실버 5) (0) | 2023.02.07 |
---|---|
[백준] BOJ - 19941 햄버거 분배 java 자바 풀이 (실버3) (0) | 2023.02.03 |
[백준] BOJ - 1927 최소 힙 자바 java 풀이 (실버2) (2) | 2023.01.31 |
[백준] BOJ - 25757 임스와 함께하는 미니게임 자바풀이(실버 5) java (0) | 2023.01.30 |
[프로그래머스] 프로그래머스 2 × n 타일링 자바 풀이 (LEVEL 2) (0) | 2023.01.27 |