고수님들 FIXPAREN 질문있습니다! yhw2880 #define MAX_SIZE 100 #include <iostream> #include <string> using namespace std; string inputStr; //입력되는 괄호 문자열 char leftPriority[4]; // 여는괄호의 우선순위 char rightPriority[4]; // 닫는괄호의 우선순위(당연히 여는괄호의 우선순위와 같음) char stackParen[MAX_SIZE]; //여는 괄호를 스택에 저장 int parenTop = 0; //top을 가리키는 인덱스 char stackIndex[MAX_SIZE]; //여는 괄호가 나올 때마다 그 인덱스 위치를 저장 int indexTop = 0; //top을 가리키는 인덱스 int f = 0, s = 0; //우선순위 계산 bool Calc_priority(char a, char b) { for (int i = 0; i < 4; i++) { if (rightPriority[i] == a) f = i; else if (leftPriority[i] == b) s = i; } if (f < s) return true; else if(f > s) return false; return false; } int main() { int testCase; cin >> testCase; while (testCase--){ cin >> inputStr; cin >> leftPriority; //닫는 괄호 초기화 for (int i = 0; i < 4; i++) { if (leftPriority[i] == '(') rightPriority[i] = ')'; else if (leftPriority[i] == '{') rightPriority[i] = '}'; else if (leftPriority[i] == '[') rightPriority[i] = ']'; else if (leftPriority[i] == '<') rightPriority[i] = '>'; } parenTop = 0; indexTop = 0; for (int i = 0; i < inputStr.length(); i++) { if (inputStr[i] == '(' || inputStr[i] == '{' || inputStr[i] == '[' || inputStr[i] == '<') { stackParen[parenTop++] = inputStr[i]; stackIndex[indexTop++] = i; continue; } if ((inputStr[i] == ')' && stackParen[parenTop - 1] == '(') || (inputStr[i] == '}' && stackParen[parenTop - 1] == '{') || (inputStr[i] == ']' && stackParen[parenTop - 1] == '[') || (inputStr[i] == '>' && stackParen[parenTop - 1] == '<')) { indexTop--; parenTop--; continue; } if (Calc_priority(inputStr[i], stackParen[parenTop - 1])) { inputStr[stackIndex[--indexTop]] = leftPriority[f]; parenTop--; } else { inputStr[i] = rightPriority[s]; indexTop--; parenTop--; } } cout << inputStr; } return 0; } 도저히 이해가 안됩니다.. 어디서 틀렸는지 흐미... test케이스좀 알려주시면 안될까요 ㅠㅠ 8년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
yhw2880
도저히 이해가 안됩니다.. 어디서 틀렸는지 흐미...
test케이스좀 알려주시면 안될까요 ㅠㅠ
8년 전