본문 바로가기
Programming Solve/프로그래머스

프로그래머스 - 짝지어 제거하기 / C++

by msm1029 2022. 3. 6.
반응형

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12973

 

코딩테스트 연습 - 짝지어 제거하기

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

programmers.co.kr

 

 

문제 풀이

문자열의 각 문자를 순회하며 스택에 넣는다.

만약 스택이 비어있다면 그냥 넣으면 되고

스택이 비어있지 않다면 top과 비교하여 같은 문자인지 확인한다.

같은 문자라면 상쇄되기 때문에 push해줄 필요없이 pop하면 상쇄된다.

다르다면 그냥 push해주면 된다.

 

스택이 비어있다면 모든 문자가 짝지어져 상쇄되는 경우이므로 1을, 아닐 경우 0을 리턴하면 된다.

 

 

소스 코드

#include <bits/stdc++.h>
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(st.top() == s[i]){
                st.pop();
            }
            else {
                st.push(s[i]);
            }
        }
    }
    
    if(st.empty()) answer = 1;
    
    return answer;
}
반응형