[백준 2504번] 괄호의 값 (C++)PS/백준 알고리즘[BOJ]2023. 12. 21. 13:44
Table of Contents
728x90
반응형
stack의 이용한 괄호쌍의 유효성 검사 문제이다. 하지만 이 문제는 값이 존재하여 연산이 추가되었다.
먼저, 괄호가 닫힐 때마다 곱해진 값을 더해주고 갱신하면서 계산하려고 했으나 앞의 값들이 다 날아가는 문제가 생겼다.
다른 방법을 다른 블로그들을 참고하다 괄호가 열릴 때 미리 계산해야 한다는 사실을 깨달았고 이 과정에서 분배법칙을 이용하였다.
#include<iostream>
#include<stack>
#include<string>
using namespace std;
string str;
int temp, ans;
stack<char> bracket;
char pre;
int main(void){
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
temp = 1;
cin >> str;
for(auto e : str){
if(e == '(' || e == '[') {
bracket.push(e);
if(e == '(') temp *= 2;
else temp *= 3;
pre = e;
continue;
}
if(bracket.empty()) {
ans = 0;
break;
}
if(e == ')' && bracket.top() == '(') {
if(pre == '(') ans += temp;
temp /= 2;
bracket.pop();
pre = e;
}
else if(e == ']' && bracket.top() == '[') {
if(pre == '[') ans += temp;
temp /= 3;
bracket.pop();
pre = e;
}
else{
ans = 0;
break;
}
}
if(bracket.empty()) cout << ans;
else cout << 0;
return 0;
}
728x90
반응형
'PS > 백준 알고리즘[BOJ]' 카테고리의 다른 글
[백준 1238번] 파티 (C++) (1) | 2024.01.04 |
---|---|
[백준 13164번] 행복 유치원 (C++) (1) | 2023.12.21 |
[백준 10026] 적록색약 (C++) (0) | 2023.12.19 |
[백준 00000] 치즈 (C++) (0) | 2023.12.19 |
[백준 2231번] 분해합 (C++) (1) | 2023.12.15 |
@BE_개발자 :: 경이로운 개발일기
경이로운 BE 개발자가 되기 위한 프로그래밍 공부 기록장
도움이 되었다면 "❤️" 또는 "👍🏻" 해주세요! 문의는 아래 이메일로 보내주세요.