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

최은정 ◡̎님의 프로필 이미지

작성한 질문수

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

2-O

2-O 질문있습니다!

작성

·

208

0

http://boj.kr/132cce1f1dab4af7be9ad1e722220221

이 코드가 틀린 이유가 뭘까요..ㅠ 도저히 모르겠네요.

그리고, 정답 풀이에서 check bool 변수가 하는 역할이 무엇일까요? 제 코드와의 차이가 check 플래그 변수가 없다는 것이 가장 큰 차이인 거 같은데 왜인지 모르겠습니다..

답변 2

0

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

안녕하세요 은정님 ㅎㅎ

 

        stack<int> stk; 
        bool check = true;
        for(int i = 0; i < s.length(); i++){ 
            if(s[i] == ')'){ 
                if(stk.size() == 0 || stk.top() == '['){
                    check = false; 

이부분에서 check라는 것은 비정상적으로 왔을 때를 판단하는 플래그 변수입니다.

정상적 가능성 = true,

비정상적 = false

 

이렇게 놓고

만약 정상적인 stack에 아무것도 없다면 -> 완전 정상적

이라고 판별하는 것이죠.

        if(check && stk.size() == 0)  cout << "yes\n";
        else cout << "no\n";

 

은정님의 코드를 보시면

            else if (c == '(' || c == '[')
            {
                stk.push(c);
            }
            else
            {
                continue;
            }

중간에 이상한게 왔을 때 continue를 하고 있는데

ex)

()]

답 : no

은정님코드: yes

이 경우를 해결하지 못해서 그렇습니다.

해당부분을 해결해주셔야 합니다.

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용에 대한 구체적인 답변을 드리기 위해서는 실제 제출하신 코드의 내용을 살펴봐야 합니다. 다만, 여기서 코드 자체를 검토할 수는 없어요.

제출하신 코드가 틀렸다면, 주로 다음과 같은 이유가 있을 수 있습니다.

  1. 문제를 잘못 이해하고 간과한 조건이 있을 수 있습니다.
  2. 예외적인 경우를 처리하지 않았을 수 있습니다.
  3. 알고리즘 자체에 오류가 있을 수도 있고, 구현 상의 실수가 있을 수도 있습니다.

check라는 bool 변수는 일반적으로 특정 조건이 충족되었는지 안 되었는지를 확인하기 위해서 사용됩니다. 예를 들어, 반복문에서 특정 조건을 만족하는 요소를 찾으려고 할 때, 그 조건을 만족하는 요소를 찾았다는 사실을 표시하는 용도로 사용할 수 있죠.

코드에서 check 변수의 역할이 중요하다면, 그 변수는 어떤 조건이 충족되었을 때 그 정보를 저장하고, 이후 로직에서 그 정보에 따라 다른 동작을 하도록 하는 역할을 할 수 있습니다. 여러분의 코드에 check 변수가 없어서 문제가 생겼다면, 로직상에서 그러한 흐름을 제어하는 부분이 누락되었거나 다르게 처리되었을 수 있어요.

정확한 것은 직접 코드를 확인해야 알 수 있지만, 위 내용을 참조하여 코드를 다시 검토해 보시고, 필요하다면 해당 강의의 커뮤니티 질문&답변 게시판에 질문을 남겨보시기 바랍니다.

감사합니다.