본문 바로가기
개발 노트/백준, 프로그래머스 풀이

백준 3986/c++ )) 좋은 단어 - 스택 사용 개선답

by tokkiC 2022. 6. 16.

이전 풀이는 수열의 규칙을 찾아서 풀려고 하다가 반례가 나와서 실패했다

스택을 통해서 테트리스처럼 새 단어와 stack 맨 위의 단어가 같으면 top을 pop 해서 없애주고

top과 새 단어가 다르면 stack 에 push 하여 쌓는 과정을 통해서 쉽게 코드를 짤 수 있었다

느낀점  : 문제에 맞는 최적의 자료구조를 이용하여 로직을 짜야 시간낭비도 적고, 정확도도 높은 코드를 작성가능하다

#include <bits/stdc++.h>
using namespace std;
int n;
string s;

int main(){
int cnt=0;
// 여기에 스택 선언 시, 아래 for문에서 돌때마다 스택안 값들이 남아있어서 에러가 난다  

cin >> n;
for(int i=0; i<n; i++){
cin >> s;
// 한번 돌때마다 새로 stk 를 선언, 새 스택을 가져온다  
stack<char> stk;

for(auto k : s){
if((stk.size())&&(stk.top()==k)){
stk.pop();
} else {
stk.push(k);
}
}
if(stk.size()==0){
cnt++;
}
}
cout << cnt << "\n";

return 0;
}

댓글