https://www.acmicpc.net/problem/2075
풀이
왼쪽부터 순서대로 좌표가 주어지므로 높이만 stack에 저장하면 된다.
스택에 높이를 저장하면서 stack.peek()보다 높이가 낮아지면
stack.peek()이 더 낮아질때까지 pop해주면서 답을 하나씩 늘린다.
그리고 새로운 높이를 스택에 저장한다.
주의할 점으로 높이가 0이면 저장을 안해도 되고, stack.peek()과 높이가 같으면 저장을 안해도 된다는 것이있다.
메모리: 19576KB
시간: 212ms
언어: Java 11
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
int ans = 0;
StringTokenizer st;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
while (!stack.isEmpty() && stack.peek() > y) {
stack.pop();
ans++;
}
if (y != 0 && (stack.isEmpty() || stack.peek() != y)) {
stack.push(y);
}
}
while (!stack.isEmpty()) {
stack.pop();
ans++;
}
System.out.println(ans);
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 7490: 0 만들기 - JAVA (0) | 2024.05.17 |
---|---|
[백준] 13144: List of Unique Numbers - JAVA (0) | 2024.05.17 |
[백준] 22251: 빌런 호석 - JAVA (1) | 2024.05.17 |
[백준] 2668: 숫자고르기 - JAVA (0) | 2024.05.17 |
[백준] 15989: 1, 2, 3 더하기 4 - JAVA (0) | 2024.05.17 |
[백준] 20922: 겹치는 건 싫어 - JAVA (0) | 2024.05.17 |