포스트

[ 프로그래머스 ] 짝지어 제거하기

문제


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

풀이


주어진 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾고, 제거하는 것을 반복하여 모든 문자가 사라질 수 있는지를 판단하는 함수를 구하는 문제로, 일반적으로 반복문을 통해 붙어있는 문자를 찾고 이를 제거하는 것을 반복할 수 있으나, 이러한 방법은 효율성이 떨어진다. 따라서 stack을 활용, 비교하여 제거를 진행한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include<string>
#include <stack>
using namespace std;

int solution(string s)
{
    int answer = 0;

    stack<char> st;

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

        else
        {
            if (s[i] == st.top())
            {
                st.pop();
            }

            else
            {
                st. push(s[i]);
            }
        }
    }

    if (st.empty())
    {
        answer = 1;
    }


    return answer;
}

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.