-
[백준] 2493 탑 #JAVAAlgorithm 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 각 탑의 인덱스(왼쪽에 있는 탑의 개수)를 함께 가져간다.
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'Algorithm Solving > BAEKJOON' 카테고리의 다른 글
[백준] 1021 회전하는 큐 #JAVA (0) 2021.01.31 [백준] 6198 옥상 정원 꾸미기 #JAVA (0) 2021.01.31 [백준] 1874 스택 수열 #JAVA (0) 2021.01.30 [백준] 1158 요세푸스 #JAVA (0) 2021.01.29 [해커랭크] 2D Array - DS #JAVA (0) 2021.01.27