본문 바로가기
코딩 문제 풀이/백준

[백준] 자바 문제 풀이 2493 : 골드5

by 코딩하는 랄로 2023. 10. 8.
728x90

BOJ 2493 : 탑

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

public class Main {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int n = Integer.parseInt(br.readLine());
		StringTokenizer str = new StringTokenizer(br.readLine());
		int[] nlist = new int[n];
		
		for(int i =0; i < n; i++) {
			nlist[i] = Integer.parseInt(str.nextToken());
		}
		boolean[] blist = new boolean[n];
		int[] dp = new int[n];
		dp[0] = 0;
		int a = 0;
		for(int i = 1; i < n; i++) {
			if(nlist[i] > nlist[a]) {
				if(dp[a] == 0 && !blist[a]) {
					dp[i] = 0;
					a = i;
				}
				else {
					a = dp[a];
					i--;
				}
			} else if(nlist[i] == nlist[a]) {
				dp[i] = a;
			} else {
				if(a == 0)
					blist[i] = true;
				dp[i] = a;
				a = i;
			}
		}
		
		for(int i = 0; i < n; i++) {
			if(dp[i] != 0) dp[i]++;
			if(blist[i]) dp[i] = 1;
			bw.write(dp[i] + " ");
		}
		bw.flush();
		br.close();
		bw.close();
	}

}
728x90