Programmers_짝지어 제거하기
4439 단어 programmersalgorithmcppalgorithm
😑 처음에는 문자열 함수 erase를 사용해서 풀려 했는
stack
을 사용하면 훨씬 훨씬 쉽게 풀수 있을 것이라 판단하여 풀려는 방식을 바꿨음.
- 나와 다음 글자가 같을 시 : 제거
- 나와 다음 글자가 다를 시 : 삽입
- 위의 방식이 기본 방식이다. 어차피 2개의 값을 비교하는 작업이기 때문에
stack.top()
값과 새로운string
값을 비교해주고 위처럼 실행시키면 된다. - 마지막 나온 값에서 stack의 크기에 따라 answer 값을 정해주면 된다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int solution(string s)
{
int answer = 0;
stack <char> con; //값을 저장해 줄 stack
for(int i=0;i < s.size();i++)
{
if(!con.empty() && con.top() == s[i]) con.pop(); // stack의 top()을 사용하기 위해서는 거의 많은 상황에서 empty()의 가능성을 살펴보고 참조해야 함.
else con.push(s[i]); // 가장 마지막 값과 s[i]가 다를시에는 s[i]의 값을 없애줄 필요가 없으므로 push
}
if(con.size() == 0) answer = 1; // answer의 초깃값이 0이므로 그에 대한 상황은 생략.
return answer;
}
재밌다. 알고리즘은 재밌다.
Author And Source
이 문제에 관하여(Programmers_짝지어 제거하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@luck2901/Programmers짝지어-제거하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)