인프런 커뮤니티 질문&답변
stack의 선언 위치에 대한 질문
작성
·
377
0
자료구조 stack을 일반 변수 선언하듯이 main 메서드 바깥에 선언했는데 메인문 안에 선언하는 것과 답이 다릅니다. 변수 생명주기와 관련있는건가요?
답변 3
0
정Logan
질문자
코드랑 답변이랑 같이 안올라가서 딸로 올립니다!! main 문 바깥에 stack을 선언했을 때랑 main 내부에 선언했을 때랑 결과 같이 다릅니다. c++에서도 변수 선언 위치에 따라 결과가 달라지나요?
0
정Logan
질문자
#include<bits/stdc++.h>
using namespace std;
int n,cnt = 0;
string a;
stack<char> b;// 제가 선언한 위치
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
for ( int i = 0 ; i < n; i++) {
cin >> a;
// stack<char> b; 제가 선언한 위치
for (char x : a) {
if(b.size() != 0 && b.top() == x) b.pop();
else b.push(x);
}
if(b.size() == 0)cnt++;
}
cout << cnt;
return 0;
}0






아니요. 저건 테스트케이스마다 "스택"을 초기화 해주어야 하기 떄문입니다. 예를 들어 A테스트가 끝나고 스택에 어떤 값이 남아있으면 다음 테스트케이스에 영향을 미치겠죠? 그렇기 때문에 이런 테스트케이스 문제는 초기화를 해주는 것이 중요합니다.
선언위치에 따라 스택에 갑자기 무슨 값이 들어가지는 않습니다. ㅎㅎ
감사합니다.