콘솔창 & 윈도우창/코딩 테스트

프로그래머스 LV.2 짝지어 제거

뽀또치즈맛 2024. 11. 12. 03:10

https://school.programmers.co.kr/learn/courses/30/lessons/12973

 
 
 
시간 초과 뜬 코드

int solution(string s)
{
    int i;
    for (i = 0; i < s.size(); ++i) {
        if (s[i] == s[i + 1]) {

            string s1 = s.substr(0, i);
            string s2 = s.substr(i+2, s.size());
            s = s1 + s2;
            i--;
            cout << s << endl;
        }
    }
    if (s[0] == s[1]) s = "";

    if (s.size() == 0) return 1;
    
    return 0;
}

 
 
통과된 코드

#include <iostream>
#include<string>
#include <stack>

using namespace std;

int solution(string s)
{
    stack<char> stk;

    for (int i = 0; i < s.size(); i++) {
        if (stk.empty()) stk.push(s[i]);
        else if (stk.top() == s[i]) stk.pop();
        else stk.push(s[i]);
    }

    return stk.empty();
}