1. 아이디어를 떠올리고, 그것을 토대로 설계를 합니다. 단, 그 아이디어가 쉬운 예제에서 뿐만 아니라 실제 예제에서도 돌아가는지 확인할 필요가 있습니다. |
/* 1218 괄호 짝짓기 문제 시작합니다. 1523분 시작합니다. 괄호들의 짝이 맞는지 확인하기. */ #include <iostream> #include <string> #include <memory.h> using namespace std; string str; int ans = 1; int map[4]; int length; void problemIn() {
cin >> str; } void solve() { length = str.size(); for (int i = 0; i < length; i++) { if (str[i] == '(') { if (map[0] >= 0) { map[0]++; } else { ans = 0; return; } } else if (str[i] == ')') { if (map[0] >= 1) { map[0]--; } else { ans = 0; return; } } else if (str[i] == '[') { if (map[1] >= 0) { map[1]++; } else { ans = 0; return; } } else if (str[i] == ']') { if (map[1] >= 1) { map[1]--;} else { ans = 0; return; } } else if (str[i] == '{') { if (map[2] >= 0) { map[2]++;} else { ans = 0; return; } } else if (str[i] == '}') { if (map[2] >= 1) { map[2]--; } else { ans = 0; return; } } else if (str[i] == '<') { if (map[3] >= 0) { map[3]++;} else { ans = 0; return; } } else if (str[i] == '>') { if (map[3] >= 1) { map[3]--;} else { ans = 0; return; } } } } int main() { for (int tc = 1; tc <= 10; tc++) { int a; cin >> a; problemIn(); solve(); cout << "#" << tc << " " << ans << endl; memset(map, 0, sizeof(map)); ans = 1; } return 0; } |