Wrong Answer

seokma97 Reply 9 years 32 weeks ago
#include <stdio.h> #include <stack> #include <string.h> using namespace std; stack<char> st; bool isOpen(char c){ if (c=='('||c=='{'||c=='[') return true; return false; } bool isClose(char c){ if (c==')'||c=='}'||c==']') return true; return false; } int main() { int n; char str[1005]; bool isLegal = true; scanf("%d\n",&n); for (int i=0;i<n;i++){ fgets(str,sizeof(str),stdin); int len = strlen(str); for (int index=0;index<len;index++){ char ch = str[index]; if (isOpen(ch)) st.push(ch); if (isClose(ch)){ if (!st.empty() && isOpen(st.top())) st.pop(); else isLegal = false; } } if (st.empty() && isLegal) printf("Y\n"); if (!st.empty() || !isLegal) printf("N\n"); isLegal = true; } return 0; } Wrond Answer이 왜 나오는 걸까요...
booksky Reply 9 years 32 weeks ago
하나의 답이 N이 나오면 그 뒤로는 정답이 오건 오답이 오건 전부 N만 출력하게 됩니다. 왜 계속해서 N이 발생하게 되는지... 왜 이런 일이 발생할지 생각해보시기 바랍니다.
pichulia Reply 9 years 32 weeks ago
2 (() ) 이 경우를 테스트해보세요. 테스트가 끝난 뒤 st를 비우지 않아서 생긴 문제입니다.
seokma97 Reply 9 years 32 weeks ago
아 제가 생각이 짧았네요...ㅠ 감사합니다^^.