BRACKETS2 질문 람지 문제 BRACKETS2 코드 #include <iostream> #include <stack> #include <string> using namespace std; bool decide(const string& str) { stack<char> brakets; int strLen = str.length(); for (int i = 0; i < strLen; i++) { char current = str.at(i); if (current == '(' || current == '{' || current == '[') brakets.push(current); else if (current == ')' || current == '}' || current == ']') { if (brakets.empty()) return false; if (current == ')' && brakets.top() == '(') brakets.pop(); else if (current == '}' && brakets.top() == '{') brakets.pop(); else if (current == ']' && brakets.top() == '[') brakets.pop(); else return false; } } if (brakets.empty()) return true; //else //return false; } int main() { int c; cin >> c; for (int tc = 0; tc < c; tc++) { string str; cin >> str; if (decide(str)) cout << "YES\n"; else cout << "NO\n"; } return 0; } decide 함수 마지막 부분 주석처리한 두 줄 주석 해제 하면 정답이 나옵니다. 근데 저 부분을 주석처리 했을때 오답이 뜨는 이유가 궁금합니다. 저부분 조건문을 참으로 통과하려면 빈 stack에 닫힌 괄호를 넣는 경우가 아니여야 함 (즉시 return 되므로) 닫힌 괄호일때 stack에 있는 열린 괄호에 대응되지 않는 경우가 아니여야 함 (즉시 return 되므로) 비어있는 stack이 아니여야 함 이 조건을 모두 만족해야되는데 이런 테스트케이스가 도저히 떠오르지 않습니다. 어떤 테스트케이스틑 통과 못한것인지 궁금합니다...ㅠ 4년 전
2개의 댓글이 있습니다. cadenzah 열린 괄호만 존재하는 경우를 위한 것 아닌가요? (( 이런 경우처럼요. 4년 전 link 람지 아 그걸 왜 생각 못했을까요... 감사합니다 :) 4년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
람지
문제
BRACKETS2
코드
decide 함수 마지막 부분 주석처리한 두 줄 주석 해제 하면 정답이 나옵니다.
근데 저 부분을 주석처리 했을때 오답이 뜨는 이유가 궁금합니다.
저부분 조건문을 참으로 통과하려면
비어있는 stack이 아니여야 함
이 조건을 모두 만족해야되는데 이런 테스트케이스가 도저히 떠오르지 않습니다. 어떤 테스트케이스틑 통과 못한것인지 궁금합니다...ㅠ
4년 전