Search
Duplicate

괄호의 값

주차
21
문제번호
2504
언어
C++
티어
실버
유형
구현
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Code

제출 날짜

@5/27/2021

메모리

2024 KB

시간

0 ms
#include <iostream> std::string inp; int ans, size; void io_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { io_faster(); std::cin >> inp; size = inp.size(); } char opposition(char ch) { if (ch == ')') return '('; else if (ch == ']') return '['; return (0); } char error(char ch) { if (ch == '(') return ']'; else if (ch == '[') return ')'; return (0); } int recursion(int &i) { char val = inp[i]; int cnt = 0, tmp; if (val == ')' || val == ']') return (0); while(++i < size) { if (val == opposition(inp[i])) { if (!cnt) cnt = 1; if (val == '(') return (cnt * 2); else if (val == '[') return (cnt * 3); } else if (error(val) == inp[i]) return (0); else { tmp = recursion(i); if (!tmp) return (0); cnt += tmp; } } return (0); } void solve() { int i = -1; int tmp; while(++i < size) { tmp = recursion(i); if (!tmp) { ans = 0; return ; } ans += tmp; } } void print_val() { std::cout << ans; } int main() { input(); solve(); print_val(); return (0); }
C++
복사