๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš“ Self Study/๐Ÿ”“ Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ, 2017 ํŒ์Šคํƒ€์šด) C++

by UKHYUN22 2022. 1. 4.
728x90

 

Stack์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ฌธ์ œ์ด๋‹ค.

ํ˜„์žฌ์˜ ๊ฒƒ๊ณผ ์ด์ „์˜ ๊ฒƒ์„ ๋น„๊ตํ•˜๊ณ  erase ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ stack์„ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ๋‹ค.

 

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

int solution(string s)
{
    int answer = -1;
    stack<char> st;
    
    // ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋งŒํผ ๊ฒ€์‚ฌ๋ฅผ ํ•œ๋‹ค.
    for(int i = 0 ; i < s.size() ; i++) {
        // stack์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด์˜ ํ˜„์žฌ ๋ฌธ์ž์™€ top์ด ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด push๋ฅผ ํ•œ๋‹ค.
        if(st.empty() || st.top() != s[i]) 
            st.push(s[i]);
        // top๊ณผ ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ œ๊ฑฐ์‹œํ‚จ๋‹ค.
        else if(st.top() == s[i])
            st.pop();
    }
    
    if(st.empty()) return 1;
    else return 0;
    
}

 

 

๋‹ค์Œ์€ ํšจ์œจ์„ฑ ๋ฌธ์ œ์—์„œ ๋‹ค ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๊ฑธ๋ ธ๋˜ ๋‚ด ํ’€์ด

 

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

int solution(string s)
{
    int answer = -1;
    int len = s.size();

    for(int i =0 ; i < len - 1  ; i++) {
        if(s[i] == s[i+1]) {
            s.erase(i,2);
            if(i != 0)
                i = i - 2;
            else if(i == 0)
                i = i - 1;
        }
        
        if(s.size() == 0) {
            answer = 1;
            break;
        }
    }
    
    if(s.size() != 0) return 0;
    else return answer;
}