반응형
간단한 stack을 활용하는 문제
뭔가 문제가 헷갈리게 되어있는듯 한데 음이 N까지 프랫이 P까지 범위이다.
따라서 스택을 N개 만들어주어야 한다.
P는 내가 푼 방법에서는 쓸 필요가 없는데
stack의 가장 위에있는 요소와 비교를해서 손가락을 때는지, 안때는지 파악을 한다.
그래서 굳이 P를 사용할 필요가 없다.
조건을 잘 맞춰서 조건문을 작성하고 count를 해주면 쉽게 정답이 나온다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int P = Integer.parseInt(st.nextToken());
Stack<Integer>[] stacks = new Stack[6]; //여기 뭔가 수정해야될듯, 문법오류
for(int i =0; i<6; i++){
stacks[i] = new Stack<>();
}
int count = 0;
for(int i =0; i<N; i++){
st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
if(stacks[A].isEmpty() || stacks[A].peek()<B){
//stack이 비었을때
}else if(stacks[A].peek()>B){
while(!stacks[A].isEmpty() && stacks[A].peek()>B){
stacks[A].pop();
count++;
}
if(!stacks[A].isEmpty() && stacks[A].peek() == B){
continue;
}
}else{
continue;
}
stacks[A].push(B);
count++;
}
System.out.println(count);
}
}
반응형
'알고리즘' 카테고리의 다른 글
[백준 21739 JAVA] 펭귄 네비게이터 (0) | 2024.02.20 |
---|---|
[백준 JAVA 1256] 사전 (0) | 2024.02.19 |
[백준 11000 JAVA] 강의실 배정 (0) | 2024.02.16 |
[백준 2565 JAVA] 전깃줄 (1) | 2024.02.15 |
[백준 16120 JAVA] PPAP (0) | 2024.02.14 |