어흥
[CodeForces] Unusual Competitions (C++) 본문
728x90
반응형
문제 링크: https://codeforces.com/contest/1323/problem/C
1. 구현
- 입력받은 문자열 중에서 '('의 개수와 ')'의 개수가 같지 않으면 -1 출력한다. -> 이걸 안해서 틀렸다. 다음부턴 조심하자
- 위에서 수한 개수가 같다면, '('와')'이 짝이 이뤄지지 않을 때 만큼 더한다. "))()(("같은 문자열도 처리가 되도록 변수를 2개 설정해서 구한다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int num, ans = -1;
cin >> num;
string str;
cin >> str;
int l = 0, r = 0, cnt = 0, result = 0;
for (int i = 0; i < str.size(); i++) {
if (str[i] == '(') l++;
else r++;
}
if (num % 2 == 1 || l-r!=0) cout << -1;
else {
l = 0; r = 0;
for (int i = 0; i < str.size(); i++) {
char c = str[i];
if (c == '(') {
if (r == 0) {
l++;
cnt++;
}
else {
r--;
cnt++;
if (r == 0) {
result += cnt;
cnt = 0;
}
}
}
else if (c == ')') {
if (l == 0) {
r++;
cnt++;
}
else {
l--;
cnt++;
if (l == 0) {
cnt = 0;
l = 0;
r = 0;
}
}
}
}
cout << result;
}
return 0;
}
728x90
반응형
'알고리즘 > 코드포스' 카테고리의 다른 글
[CodeForces] Count Subrectangles (C++) (0) | 2020.03.08 |
---|---|
[CodeForces] Even Subset Sum Problem (C++) (0) | 2020.03.08 |
[CodeForces] Assigning to Classes (C++) (0) | 2020.03.07 |
[CodeForces] Longest Palindrome (C++) (0) | 2020.03.07 |
[CodeForces] Kuroni and Impossible Calculation (C++) (0) | 2020.03.04 |
Comments