99클럽 코테 스터디 17일차 TIL - 백준(기술 연계마스터 임스)

Gaeng·2024년 11월 13일
post-thumbnail

문제링크 - 기술 연계마스터 임스

16일차 기술연계마스터 임스

사용한 자료구조 : Stack

문제해결 : 두가지를 스택을 만들어 연속 기술을 사용할 수 있게 한다.
스택하나는 L전용으로 스택하나는 S전용으로
R이랑 K에 맞는 연속기술이 isEmpty상황이라면 break;를 통해 넘어가고, 만약에 연속기술이 가능하면 count를 시킨다.
기본적으로 숫자는 스택에 넣지 않고 바로 자동으로 count를 시킨다.

느낀점 : 구현과 자료구조가 들어가면 항상 헷갈리는데, 문제를 어떻게 풀어야될 지에 대한 고민을 자세히 하고, 더 빠른 시간 내에 풀기 위해 노력해야겠다.

import java.io.*;
import java.util.Stack;
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());
        String skills = br.readLine();
        Stack<Character> stackL = new Stack<>(), stackS = new Stack<>();
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int count = 0;
        for (int i = 0; i < N; i++) {
            char current = skills.charAt(i);
            if (current >= '1' && current <= '9') {
                count++;
            } else if (current == 'L') {
                stackL.add(current);
            } else if (current == 'S') {
                stackS.add(current);
            } else if (current == 'R') {
                if (!stackL.isEmpty()) {
                    count++;
                    stackL.pop();
                } else {
                    break;
                }
            } else if (current == 'K') {
                if (!stackS.isEmpty()) {
                    count++;
                    stackS.pop();
                } else {
                    break;
                }
            }
        }
        System.out.println(count);
    }
}
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글