https://www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
문제

문제풀이
#include <bits/stdc++.h>
using namespace std;
//쇠막대기
//여러 개의 쇠막대기를 레이저로 절단하려고 함.
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
long long ans=0;
string s;
cin >> s;
stack<char> st;
for(int i=0;i<s.size();i++){
if(s[i] == '('){
st.push(s[i]);
}else{
if(s[i-1] == '('){
st.pop();
ans += st.size();
}else{
st.pop();
ans++;
}
}
}
cout << ans;
return 0;
}
문제의 포인트
- 레이저가 표현되면 스택의 사이즈가 절단되는 막대의 갯수!!
- s[i-1]이 왜 필요한지 생각해보기
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
| [c/c++] 백준/BOJ 1012번 문제 - 유기농 배추 (0) | 2022.03.11 |
|---|---|
| [c/c++] BOJ 2504번 문제 - 괄호 값 (0) | 2022.03.11 |
| [c/c++] BOJ 3986번 문제 - 좋은단어 (0) | 2022.03.07 |
| [c/c++] BOJ 5430번 문제 - AC (0) | 2022.03.07 |
| [c/c++] BOJ 2164번 문제 - 카드2 (0) | 2022.03.07 |