-
https://www.acmicpc.net/problem/1662
1662번: 압축
압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이
www.acmicpc.net
구현이 어려운 문제, N~N^2에 풀리는 문제인데도 N=50으로 꽤나 제한이 널널하다.
#include <bits/stdc++.h>using namespace std;#ifdef ONLINE_JUDGEconstexpr bool local = false;#elseconstexpr bool local = true;#endifusing ll = long long;using pi = pair<ll, ll>;string s;int S;bool vst[55];int f(int idx) {int ret = 0;for (int i = idx; i < S; i++) {if (vst[i]) continue;vst[i] = true;if (s[i] == ')') return ret;if (i + 1 < S && s[i + 1] == '(' && vst[i + 1] == false) {vst[i + 1] = true;ret += (s[i] - '0') * f(i + 2);} else if ('0' <= s[i] && s[i] <= '9')ret++;}return ret;}int main(void) {if (!local) ios_base::sync_with_stdio(0), cin.tie(0);cin >> s;S = s.length();cout << f(0);return 0;}
'BOJ' 카테고리의 다른 글
[2281] 데스노트 (0) 2022.03.12 [2002] 추월 (0) 2022.03.09 [1256] 사전 (0) 2022.03.06 [15684] 사다리 조작 (0) 2022.03.06 [15810] 풍선 공장 (0) 2022.03.04