[백준] PS/Java [실랜디]

[백준 2841] 외계인의 기타 연주 - JAVA

SH3542 2025. 5. 4. 05:14

https://www.acmicpc.net/problem/2841

 

각 기타줄을 stack으로 가정하고 6개를 사용한다.

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 {

    int ans = 0;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int F = 6;
    StringTokenizer st = new StringTokenizer(br.readLine());
    int N = Integer.parseInt(st.nextToken());
    int P = Integer.parseInt(st.nextToken());

    Stack<Integer>[] finger = new Stack[F + 1];

    for (int i = 1; i <= F; i++) {
      finger[i] = new Stack<>();
    }

    for (int i = 0; i < N; i++) {
      st = new StringTokenizer(br.readLine());
      int f = Integer.parseInt(st.nextToken());
      int p = Integer.parseInt(st.nextToken());

      Stack<Integer> fin = finger[f];
      while (!fin.isEmpty() && fin.peek() > p) {
        fin.pop();
        ans++;
      }

      if (fin.isEmpty() || fin.peek() < p) {
        fin.add(p);
        ans++;
      }
    }

    System.out.println(ans);
  }
}