Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
29 | 30 |
Tags
- DP
- 알고리즘
- 백트래킹
- 다익스트라
- 가장 긴 증가하는 부분 수열
- 투포인터
- C++ 1918
- BFS
- strtok
- C++1967
- C++ 17071
- Backtracking
- 프로그래머스
- C++ 1937
- c언어
- 소트 게임
- 백준 17071
- 조합
- 인덱스 트리
- C++
- DFS
- C++1167
- 16933
- 순열
- 위상정렬
- 조합론
- 문자열
- 백준
- 백준 숨바꼭질5
- LIS
Archives
- Today
- Total
블로그
[C++] 백준 2504 : 괄호의 값 본문
728x90
https://www.acmicpc.net/problem/2504
2504번: 괄호의 값
4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X
www.acmicpc.net
사람 기 죽이는 실버
ㅋㅋㅋ
보자마자 스택 써야겠다는 걸 알겠어도 푸는게 쉽지가 않음
어려웠던 가장 큰 이유는
base인 tmp를 자꾸 가장 안의 괄호로 생각해서 그런 것 같다
스택이 아래서부터 쌓이는데 자꾸 중간을 생각해서..
구글링 해봤는데 분배법칙처럼 생각하면 좋다고 하던데 그 말이 맞는 거 같다 아니 어떻게 생각하지? ㅋㅋ
스택이니까 왼쪽(아래쪽) 부터차례로 해야겠다 뭐 그런 식으로 생각하면 되는 건가
그러려고 노력해 봐야겠다
아래 주석의 //처음부터 닫힘 안 들어온다는 부분은
i-1 범위체크 안 해준 거 말하는 거임
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
int main() {
char str[31];
scanf("%s", str);
int str_len = strlen(str);
stack<char> s;
bool not_okay = false;
int ans = 0;
int tmp = 1;
for(int i = 0; i<str_len; i++){
if (str[i] == '(') {
s.push('(');
tmp *= 2;
}
else if (str[i] == '[') {
s.push('[');
tmp *= 3;
}
else if (str[i] == ')') {
if (s.empty()) {
not_okay = true;
break;
}
if (s.top() == '(') {
s.pop();
//처음부터 닫힘안들어오니까
if (str[i - 1] != ')' && str[i - 1] != ']') {
ans += tmp;
}
tmp /= 2;
}
else {
not_okay = true;
break;
}
}
else if (str[i] == ']') {
if (s.empty()) {
not_okay = true;
break;
}
if (s.top() == '[') {
s.pop();
if (str[i - 1] != ')' && str[i - 1] != ']') {
ans += tmp;
}
tmp /= 3;
}
else {
not_okay = true;
break;
}
}
}
if (not_okay || !s.empty()) printf("0");
else printf("%d", ans);
}
'PS' 카테고리의 다른 글
백준 배낭 모음.. (0) | 2023.03.05 |
---|---|
[C++] 백준 2407 : 조합 (0) | 2023.03.05 |
[C++] 백준 4256 : 트리 (0) | 2023.03.05 |
[C++] 백준 2263 : 트리의 순회 (0) | 2023.03.05 |
[C++] 백준 1780 : 종이의 개수 (0) | 2023.03.05 |
Comments