풀이 방법
스택을 이용해서 높이가 낮아질 때 마다 건물의 개수를 세어주었다.
스택에 현재 바뀐 높이보다 높은 건물을 모두 세어주면 된다.
내 코드
package com.company;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int x, y, answer = 0;
Stack<Integer> stack = new Stack<>();
stack.add(0);
for (int i = 0; i <= N; i++) {
if (i == N) {
x = y = 0;
} else {
StringTokenizer st = new StringTokenizer(br.readLine());
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
}
while (!stack.isEmpty() && y < stack.peek()) {
answer++;
stack.pop();
}
if (stack.peek() < y)
stack.add(y);
}
System.out.println(answer);
}
}
'코딩테스트 > [백준] 코딩테스트 연습' 카테고리의 다른 글
스타트택시 - 19238번 (0) | 2022.02.07 |
---|---|
소수상수근 - 9421번 (0) | 2022.02.07 |
불 - 5427번 (0) | 2022.01.24 |
월드컵 - 6987번 (0) | 2022.01.24 |
간선 이어가기2 - 14284번 (0) | 2022.01.21 |