백준 - 탑 ( 2493번, JAVA )

changi123·2024년 12월 3일
0
post-thumbnail

stack ( https://www.acmicpc.net/problem/2493 )

풀이

  • 나는 스택을 활용하기때문에 뒤에서부터 찾아야한다는 생각이 강했다 ... 다른 사람의 풀이를 보았더니 역시 알고리즘 고수들이 많다... 열심히 하자
  • 먼저 스택에 현재 (탑의 번호, 높이) 를 저장해준다.
  • 그리고 입력받은 현재 탑의 높이보다 스택에 큰 값이 있다면 그때의 탑의 높이를 StringBuilder에 이어 붙혔다. 진짜 대단한 사람들이 많은 것 같다😭
  • 그리고 int[]{i, top} -> 배열을 이렇게 넣을 수 있다는거 꼭 기억하자
package problem_solving.stack;

import java.util.Scanner;
import java.util.Stack;

public class BaekJoon_2493 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Stack<int[]> st = new Stack<>();
		int n = Integer.parseInt(sc.next());
		StringBuilder sb = new StringBuilder();
		for(int i = 1 ; i <= n ; i++){
			int top = Integer.parseInt(sc.next());

			while(!st.isEmpty()) {
				if( st.peek()[1] >= top ) {
					sb.append(st.peek()[0]+ " ");
					break;
				}
				
				st.pop();
			}
			
			if ( st.isEmpty()) {
				sb.append("0"+ " ");
			}
			st.push(new int[] {i,top});
		}
		
		System.out.println(sb.toString());

	}

}

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보