습관처럼
programmers [C++] : 짝지어 제거하기 본문
programmers.co.kr/learn/courses/30/lessons/12973
문제 설명
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.
접근 방법
초기에는 스트링을 검색하면서 반복되는 문자가 보일 경우 erase를 사용하여 삭제하는 방식으로 코드를 작성했습니다.
하지만 효율성에서 통과하지 못했습니다 ㅠㅠ 그래서 고민하다가 stack으로 방향을 바꾸고 나서야 통과할 수 있었습니다~
코드
#include <iostream>
#include <string>
#include <algorithm>
#include <stack>
using namespace std;
int solution(string s)
{
stack<char>st;
int Size=s.size();
int k=0,answer=0;
while(k!=Size){
if(st.empty()){
st.push(s[k]);
k++;continue;
}
else if(st.top()==s[k]){
st.pop();k++;continue;
}
else{
st.push(s[k]);k++;continue;
}
}
if(st.size()==0)return 1;
else return 0;
}
funny algorithm 0_<
'Algorithms > programmers' 카테고리의 다른 글
programmers [C++] : 영어 끝말잇기 (0) | 2020.06.23 |
---|---|
programmers [C++] : 소수 만들기 (0) | 2020.06.23 |
programmers [C++] : 폰켓몬 (0) | 2020.06.22 |
programmers [C++] : 2019 카카오 개발자 겨울 인턴십 튜플 (0) | 2020.06.22 |
programmers [C++] : 2020 KAKAO BLIND RECRUITMENT 가사검색 (0) | 2020.06.22 |