[C++][백준 5430] AC

PublicMinsu·2022년 12월 14일
0
post-custom-banner

문제

접근 방법

보자마자 앞, 뒤로 카운트하면서 표현해주면 된다고 생각했다...

코드

#include <iostream>
#include <string>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int T;
    cin >> T;
    string deq[100001];
    while (T--)
    {
        string p, arrSTR, num = "", output;
        bool isTurn = false;
        int n, start = 0, end = 0;
        cin >> p >> n;
        cin.ignore();
        getline(cin, arrSTR);
        for (char c : arrSTR)
        {
            if (c == ',' || c == ']')
            {
                deq[end++] = num;
                num = "";
            }
            else if (48 <= c && 57 >= c)
            {
                num += c;
            }
        }
        for (char c : p)
        {
            if (c == 'R')
                isTurn = !isTurn;
            else
            {
                n--;
                if (isTurn)
                    --end;
                else
                    ++start;
            }
        }
        if (n < 0)
        {
            output = "error";
        }
        else
        {
            output = "[";
            int s = isTurn ? end - 1 : start;
            int e = isTurn ? start - 1 : end;
            int plus = isTurn ? -1 : 1;
            while (s != e)
            {
                output += deq[s];
                s += plus;
                if (s == e)
                    break;
                output += ",";
            }
            output += "]";
        }
        cout << output << "\n";
    }
    return 0;
}

풀이

숫자에 해당하는 부분만 추출하여 저장해준다.
뒤집기 여부를 bool 변수로 확인해주며 앞 또는 뒤를 삭제해주고 출력할 때도 앞 또는 뒤부터 출력하게 해주었다.
결국 앞, 뒤를 제어해주는 것이기에 덱을 사용하면 더 깔끔하게 나올 것이다.

이 문제에 무서운 점은 배열을 줄 때 공백이 포함될 수 있다는 점이다. 나 또한 찾아보고서 알게 됐다...
그렇기에 cin만으로 해결해선 안 되고 getline을 사용해줘야 한다.

문제 외적으로는 100,001개의 배열을 선언하면 이상하게도 내 VSCode환경에서는 입력받기도 전에 꺼져버리는 것이다. "그래서 String 배열을 크게 받으면 안 되는구나!" 라는 오해를 해버렸고 배열의 정수가 100을 못 넘는다는 것을 배열의 크기가 100을 안 넘는다고 이해해버렸다. 비몽사몽 한 상태였기에 더 잘못 이해한 것 같다.

비교적 쉬운 문제임에도 오래 걸렸던 것에는 공백이 포함된다는 점과 내 환경에서는 100,001개의 배열이 실행 안 됐다는 점이 맞물렸던 것 같다.

profile
연락 : publicminsu@naver.com
post-custom-banner

0개의 댓글