이 문제는 문제만 이해하면 금방 풀 문제이다. stack을 이용해서 다음 문자와 stack에 있는 top 문자와 같으면 두 문자를 pop해주면 되는 문제! 자세한 내용은 코드를 직접 보면서 참고하자.
여기서 한번더 집고 가야 할 문제는 cin과 string::getline() 함수를 같이 쓰면 헷깔리게 되는 점에 대해 이야기 하려고 한다. getline에 대한 포스팅은 다음 포스팅에 더 자세히 나와있다.
> https://summer-story.tistory.com/7
보통 나는 cin은 단순한 변수를 받고 싶을 때, getline은 한 줄 전체를 받고 뭔가 요리조리하고 싶을 때 사용한다. 근데 항상 실수하는 부분이 있다면 두 함수를 동시에 썼을 때 무엇이 저장되어 있는가이다.
처음에 내가 문자들을 입력받고 싶어 썻던 코드를 보면 몇 개의 case가 나오냐를 cin으로 받고, 그 다음 문자열들을 string::getline() 함수로 받았다. 이렇게 쓰게되면 문제점은 cin에 있는 입력스트림을 이미 위에서 저장했으므로 그 버퍼는 비어 원하는 문자열을 바로 못 받아드린다는 말이다.
말로 풀어쓰려니 어려우니 사진을 보면서 이해하자.... ಠ_ಠ
(코드는 꼭 한번 풀어보고 참고하세요. c++)
코드
...더보기
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main(){
int num;
cin >> num;
int count = 0;
int result = 0;
while(count < num){
string line;
cin >> line;
stack<char> s;
for(int i =0; i< line.length(); i++){
if(!s.empty()){
if(line[i] == s.top()) s.pop();
else s.push(line[i]);
}
else s.push(line[i]);
}
if(s.empty()) result++;
count++;
}
cout << result <<endl;
return 0;
}
'Algorithm > 자료구조' 카테고리의 다른 글
[Stack] 백준 2493번: 탑 (0) | 2019.07.28 |
---|---|
[Stack] 백준 1918번: 후위 표기식 (0) | 2019.07.24 |
[자료구조] 백준 Stack (0) | 2019.07.10 |