이전 풀이는 수열의 규칙을 찾아서 풀려고 하다가 반례가 나와서 실패했다
스택을 통해서 테트리스처럼 새 단어와 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;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
백준 1629/c++ )) 곱셈 - divde and conquer, 재귀함수 (0) | 2022.06.17 |
---|---|
백준 1940/c++ )) 주몽 - 투포인터 사용 (0) | 2022.06.16 |
백준 3986/c++ )) 좋은 단어 - 오답 (0) | 2022.06.16 |
stack, queue 사용 시 size()를 꼭 써줘야한다 (0) | 2022.06.16 |
백준 1213/c++ )) 팰린드롬 만들기 (0) | 2022.06.15 |
댓글