괄호닫기 문제 질문 mismatched bracket 정여진 입력 받은 문자열에서 괄호의 갯수가 홀수인지 확인하고 홀수일때 no "({[" 괄호가 입력될 때에는 push에 넣고, 닫는 괄호가 입력 될 때에는 (push가 없고 닫힐 때 no)짝이 맞는 경우와 아닌 경우로 나눠서 짝이 맞지 않을 때 no 짝이 맞는 경우는 pop. 그리고 마지막에 stack이 비어있지 않으면 no 이런식으로 검사를 하는데,틀린 예제가 무엇인지 모르겠습니다!! #include <iostream> #include <string> #include <stack> using namespace std; int main(){ int num; cin >> num; string input; string opening("({["); string closing(")}]"); //괄호 여는 부분이면 push() //닫는 부분이면 pop() for (int j = 0; j < num; j++){ cin >> input; stack<char> in; bool check = false; if (input.size() % 2 == 1){ //홀수 cout << "NO" << endl; continue; } for (int i = 0; input[i] != '\0'; i++){ //여는 거일때 if (opening.find(input[i]) != -1){ in.push(input[i]); }//닫는거 일때 else { //짝이 안맞을 때 if (in.empty()){ cout << "NO" << endl; check = true; break; } if (opening.find(in.top()) != closing.find(input[i])){ cout << "NO" << endl; check = true; break; } //짝이 맞는 경우 in.pop(); } } if (!in.empty()){ cout << "NO" << endl; } else if (!check){ cout << "YES" << endl; } } return 0; } ~~~ c++ 9년 전
1개의 댓글이 있습니다. Toivoa NO가 두번 출력되는 케이스가 있습니다. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
정여진
입력 받은 문자열에서 괄호의 갯수가 홀수인지 확인하고 홀수일때 no
"({[" 괄호가 입력될 때에는 push에 넣고, 닫는 괄호가 입력 될 때에는 (push가 없고 닫힐 때 no)짝이 맞는 경우와 아닌 경우로 나눠서
짝이 맞지 않을 때 no 짝이 맞는 경우는 pop.
그리고 마지막에 stack이 비어있지 않으면 no
이런식으로 검사를 하는데,틀린 예제가 무엇인지 모르겠습니다!!
9년 전