SteffenLee

[BOJ]10799번-쇠막대기 본문

Problem Solving/BOJ

[BOJ]10799번-쇠막대기

SteffenLee 2018. 7. 31. 14:50

오늘은 백준 10799번을 풀어보겠습니다.


문제를 한 번 보겠습니다.

잘리고 난후의 파이프 갯수를 세면 되는 문제입니다.


입출력을 보겠습니다.


입력 예제를 보겠습니다.



이제 코드를 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
#include<string>
using namespace std;
 
int cnt = 0, result = 0;
string str;
 
int main() {
    cin >> str;
    for (int i = 0; i < str.size(); ++i) {
        if (str[i] == '(' && str[i + 1== ')') {
            result += cnt;
            i++;
        }
        else {
            if (str[i] == '(')
                cnt++;
            else {
                cnt--;
                result++;
            }
        }
    }
    cout << result << endl;
}
cs

'('의 개수를 카운트 하는 이유는('()'제외) 길이가 결정되지는 않았지만 파이프는 생성이 되었습니다. 그리고 잘리게 된다면

일단 조각은 확실하게 나옵니다. 위의 예제를 예로 들자면, (((()이런 식으로 되어있는데 이걸 그대로 적용하면 '('의 개수가 카운트됩니다.

3개가 카운트 됩니다. 파이프 개수가 3개인 건 확정이 되었고 그것이 잘린다면 일단 3개는 확정이 됩니다.


이러한 방식으로 잘린 파이프의 개수를 세어 줍니다.

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ]1015-수열 정렬  (0) 2018.08.04
[BOJ]10804-카드 역배치  (0) 2018.08.02
[BOJ]10798번-세로읽기  (0) 2018.07.22
[BOJ]천하제일코딩대회 예선 - E번 호 안에 수류탄  (0) 2018.07.16
[BOJ]10797번-10부제  (0) 2018.07.15
Comments