※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 5874번 문제인 소를 찾아라이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/5874
5874번: 소를 찾아라
천방지축 베시(소, 1세)는 외양간을 탈출해서 풀로 뒤덮인 산등성이에 숨었다. 농부인 존씨는 베시를 다시 잡기위해 온 풀숲을 샅샅히 뒤졌지만 찾지 못하였다. 안타깝게도 그는 베시를 찾는
www.acmicpc.net
'('와 ')'로 이루어진 문자열에서 왼쪽에 "((", 오른쪽에 "))"이 있는 쌍을 몇 쌍 찾을 수 있는지 계산하는 문제이다.
문자열을 순서대로 둘러보면서 "))"가 나올 때마다 이전에 있던 "(("의 개수를 더해나가는 식으로 문제를 해결할 수 있다.
"(("의 개수를 매번 새로 세면 오래 걸리니, 이전까지 셌던 "(("의 개수를 계속 이용해 효율적으로 계수하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string s; cin >> s;
int cnt = 0;
int ans = 0;
int slen = s.length() - 1;
for (int i = 1; i < slen; i++) {
if (s[i] == ')' && s[i + 1] == ')') ans += cnt;
if (s[i] == '(' && s[i - 1] == '(') cnt++;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 11379 // C++] Avoider (0) | 2022.02.23 |
---|---|
[BOJ 11380 // C++] Hole in the Wall (0) | 2022.02.22 |
[BOJ 24416 // C++] 알고리즘 수업 - 피보나치 수 1 (0) | 2022.02.20 |
[BOJ 24417 // C++] 알고리즘 수업 - 피보나치 수 2 (0) | 2022.02.20 |
[BOJ 24391 // C++] 귀찮은 해강이 (0) | 2022.02.19 |