짝지어 제거하기(Lv1)

108번뇌·2020년 12월 2일

원래 내 풀이

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

vector<string>::iterator itr;

int RecurFunc(vector<string> sContainer)
{
  if(sContainer.size()==0) return 1;
       
  for(itr = sContainer.begin(); itr != sContainer.end(); itr++)
  {
      if(*itr == *(itr+1))
      {
          sContainer.erase(itr, itr+1);
          RecurFunc(sContainer);
      }
  }  
  return 0;
}


int solution(string s)
{
    int answer = 0;
    vector<string> sContainer;
    
    for(int i=0; i<s.size(); i++)
    {
        sContainer.push_back(s.substr(i,1));
    }
    
    

    answer = RecurFunc(sContainer);
    
    return answer;
}


return 1이후 에러나는데 이유를 모르겠다;;

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



int solution(string s)
{
    stack<char> sContainer;
    int answer = 0;
 

    for(int i=0; i<s.size(); i++)
    {
        if(sContainer.size() == 0 || sContainer.top() != s[i])
        {
            sContainer.push(s[i]);
        }
        else
        {
            sContainer.pop();
        }
    }
    if(sContainer.size()==0)
    {
        return 1;
    }

    
    return answer;
}

stack에 string을 넣으면 안되고 char로 넣어야한다.
재귀함수다시 살펴보고 재귀로 풀어보기

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글