코딩 공부 연습
프로그래머스 짝지어 제거하기
miffy짱
2022. 9. 1. 15:48
반응형
프로그래머스 레벨체크 2단계를 통과했다!
좀 쉬운문제들로 2개가 나와서 할 수 있었던 것 같다 기분이 매우 좋노 아ㅋㅋ
이 문제는 그냥 스택에 계속 집어넣으면서 top에 있는 것과 같으면 pop만 잘 시켜주면 된다.
이 아이디어로 풀면 한 케이스가 seg fault가 나오는데, 이는 스택이 비어있는 경우에 st.top()을 참조하려 하기 때문에 일어난다. 그래서 비어있을 때는 그냥 push 해주는 경우만 추가해주면 무리없게 통과할 수 있다!!
#include <iostream>
#include<string>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
int solution(string s)
{
int answer = -1;
stack <char> st;
// 그냥 한번씩 계속 돌면서 없애는편이 나을 거 같음 (i, i+1 ) 비교 멍청하게
// 효율성에서 문제생기면 다시 생각해봄되지
st.push(s[0]);
cout << s.size() << '\n';
for (int i = 1; i < s.size(); i++)
{
if (st.empty())
st.push(s[i]);
else if (s[i] == st.top())
st.pop();
else
st.push(s[i]);
}
int n = st.size();
if ( n == 0 )
return 1;
else return 0;
}