ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 2493 탑 #JAVA
    Algorithm Solving/BAEKJOON 2021. 1. 30. 21:32

     

    BAEKJOON [2493] 탑


    코드


     

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.util.Stack;
    import java.util.StringTokenizer;
    
    public class Main {
    
    	public static void main(String[] args) throws IOException{
    		int height, n;
    		
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); 
    		
    		n = Integer.parseInt(br.readLine());
    		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
    		
    		br.close();
    
    		Stack<int[]> stack = new Stack<int[]>();//인덱스(앞의 타워 개수) ,타워 높이 저
    
    		for (int i = 1; i <= n; i++) {
    			height = Integer.parseInt(st.nextToken());
    			
    			while (!stack.isEmpty() && stack.peek()[1] < height) {
    				stack.pop();
    			}
    			
    			bw.write(stack.isEmpty() ? "0 " : String.valueOf(stack.peek()[0])+ " ");
    			stack.push(new int[] {i, height});
    
    		}
    		
    		bw.flush();
    		bw.close();
    		
    	}
    
    }

     

     

     

    풀이


    • stack을 사용
    • 해당 탑 기준으로 왼쪽 탑은 모두 신호가 전달된다. 떄문에 stack 각 탑의 인덱스(왼쪽에 있는 탑의 개수)를 함께 가져간다.

     

     


    잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)

     

     

    댓글