Pokeball - Pokemon

99클럽 TIL

99클럽 코테 스터디 17일차 TIL + 스택/큐(C++)

ansi. 2024. 11. 14. 00:41

문제

[백준] 25497번: 기술 연계마스터 임스

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

 

코드 

#include <iostream>
#include <stack>
using namespace std;

int main() {
    int N;
    int ans = 0;
    string skills;

    cin >> N;
    cin >> skills;

    stack<char> sk;
    stack<char> lr;

    for (auto s : skills) {
        if (s == 'S')   sk.push(s);
        if (s == 'L')   lr.push(s);
        if (s == 'K') {
            if (!sk.empty()) {
                ans++;
                sk.pop();
            } else
                break;
        }
        if (s == 'R') {
            if (!lr.empty()) {
                ans++;
                lr.pop();
            } else
                break;
        }
        if (s >= '1' && s <= '9')
            ans++;
    }

    cout << ans;

    return 0;
}

 

풀이

SK를 위한 스택과 LR을 위한 스택을 각각 따로 두고

문자열을 순회하면서 S를 만나면 SK 스택에, L을 만나면 LR 스택에 저장한다.

K를 만났을 때 SK 스택에 문자가 있다면(S가 있다면) 스택을 pop한다.

R을 만났을 때 LR 스택에 문자가 있다면(L이 있다면) 스택을 pop한다.

 

느낀 점

처음에는 단순한 문자열 문제로 접근했어서, erase, find 함수를 사용해 일일이 문자를 제거하는 프로그램을 작성했다.

그랬더니 테케는 다 통과했는데 틀렸습니다가 떠서 결국 다른 분의 풀이를 참고했다 . .

(참고: https://hjkl0316.tistory.com/entry/백준25497번-기술-연계마스터-임스)

비기너 문제도 점점 어려워지는 느낌..!? 분발해야겠다..!