인프런 커뮤니티 질문&답변

정Logan님의 프로필 이미지
정Logan

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-M

stack의 선언 위치에 대한 질문

작성

·

295

0

자료구조 stack을 일반 변수 선언하듯이 main 메서드 바깥에 선언했는데 메인문 안에 선언하는 것과 답이 다릅니다. 변수 생명주기와 관련있는건가요?

답변 3

0

정Logan님의 프로필 이미지
정Logan
질문자

코드랑 답변이랑 같이 안올라가서 딸로 올립니다!! main 문 바깥에 stack을 선언했을 때랑 main 내부에 선언했을 때랑 결과 같이 다릅니다. c++에서도 변수 선언 위치에 따라 결과가 달라지나요?

큰돌님의 프로필 이미지
큰돌
지식공유자

아니요. 저건 테스트케이스마다 "스택"을 초기화 해주어야 하기 떄문입니다. 예를 들어 A테스트가 끝나고 스택에 어떤 값이 남아있으면 다음 테스트케이스에 영향을 미치겠죠? 그렇기 때문에 이런 테스트케이스 문제는 초기화를 해주는 것이 중요합니다.

선언위치에 따라 스택에 갑자기 무슨 값이 들어가지는 않습니다. ㅎㅎ

 

감사합니다.

감사합니다 큰돌님 !

0

정Logan님의 프로필 이미지
정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

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. ㅎㅎ 

코드도 함께 부탁드립니다. 

정Logan님의 프로필 이미지
정Logan

작성한 질문수

질문하기