728x90
300x250
누를때와 뗄때 모두 카운팅 해주어야한다.
stack을 이용한 문제... 오랜만에 하려니 헷갈려서 구글링했다
import java.util.*;
public class Main {
public static int N,P,ans = 0;
public static Stack<Integer>[] stack;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
P = sc.nextInt();
stack = new Stack[N+1];
for(int i=0; i<=N; i++)
stack[i] = new Stack<>();
for (int i = 0; i < N; i++) {
int line = sc.nextInt();
int fret = sc.nextInt();
//해당 줄에 아무 프렛도 안눌러있는상태 == 스택이 비어있는 경우
if(stack[line].size()==0) {
ans++;
stack[line].push(fret);
continue;
}
//해당 줄의 프렛보다 더 큰수의 프렛을 누르고 있는 경우
while(stack[line].peek() > fret) {
ans++;
stack[line].pop();
if(stack[line].size()==0)
break;
}
//누르려고하는 프렛과 이미 그 줄에 눌려있는 프렛의 번호가 같은 경우
if(stack[line].size()!=0 && stack[line].peek()==fret)
continue;
ans++;
stack[line].push(fret);
}
System.out.println(ans);
}
}
728x90
'알고리즘 > 스택' 카테고리의 다른 글
백준 1874번: 스택 수열 [스택][Stack] -Java (0) | 2023.12.11 |
---|---|
백준 5397번: 키로거 [스택][Stack][덱][Deque][자료구조]- Java (0) | 2023.12.11 |
백준 10799번: 쇠막대기 [스택][Stack][누적합] -Java (1) | 2023.12.06 |
백준 4949번: 균형잡힌 세상[Stack][스택] -Java, 반례 (1) | 2023.12.05 |
SWEA - 8931. 제로 (0) | 2020.02.29 |