[백준/C++] 10799번 쇠막대기
2021. 3. 23. 19:25ㆍ알고리즘/구현
728x90
반응형
문제: www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
문제풀이
왼쪽부터 레이저를 만나면 현재까지의 쇠막대기 수(스택의 사이즈 -1 )를 결과값에 더해주고 쇠막대기의 끝에 도달하면 결과값에 1을 더해주었다.
( ( -> s.push(1)
( ) -> result += s.size() - 1
) ) -> result++
코드
#include <iostream>
#include <stack>
using namespace std;
int main(){
ios::sync_with_stdio(false); cin.tie(nullptr);
string str;
cin>>str;
int result = 0;
stack<int> s;
for(int i=0; i<str.length(); i++){
if(str[i] == '('){
s.push(1);
}
else{
if(str[i-1] == '('){ //레이저로 현재까지의 쇠막대기를 자름
result += s.size()-1;
}
else{ //막대의 끝이므로 조각 한 개 플러스
result++;
}
s.pop();
}
}
cout<<result;
return 0;
}
결과
728x90
반응형
'알고리즘 > 구현' 카테고리의 다른 글
[프로그래머스/Java] 행렬 테두리 회전하기 Lv.2 (0) | 2023.12.02 |
---|---|
[백준/C++] 4889번 안정적인 문자열 (0) | 2021.03.24 |
[백준/C++] 2504번 괄호의 값 (0) | 2021.03.23 |
[백준/C++] 5430번 AC (0) | 2021.03.22 |
[백준/C++] 18258번 큐 2 (0) | 2021.03.21 |