728x90
반응형
27969번: I LOVE JavaScript
문제
https://www.acmicpc.net/problem/27969
27969번: I LOVE JavaScript
한 줄에 걸쳐, ASON 객체의 유효한 표기가 주어진다. 주어지는 문자열의 길이는 스페이스 문자를 제외하고 $15\,000$ 이하이다.
www.acmicpc.net
풀이
ASON을 구성하는 것은 [, ], 문자열, 정수가 있고 각각 공백으로 구분되어 있으므로 각각을 토큰화하기 위해 while문 조건 안에 cin을 넣어 EOF가 발생할 때까지 공백을 기준으로 문자열을 입력받는다.
스택을 사용해 객체의 시작을 의미하는 [가 입력되면 0을 push한다.push 한다. 마찬가지로 정수가 입력되면 8을, 문자열이 들어오면 길이+12를 push 한다. 그리고 ]가 입력되면 [를 만나기 전까지 즉, 0이 나오기 전까지 모든 원소에 대해 top, pop을 반복하며 값을 더해준다. 마지막으로 0도 제거한 다음 (더한 값 + 8)을 push 해준다.
이를 모두 반복하고 나면 1개의 원소만 스택에 남아있게 되는데, 이게 답이므로 top을 출력하면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
stack<long long> s;
string str;
while (cin >> str) {
if (str == "[") {
s.push(0);
} else if (isdigit(str[0])) {
s.push(8);
} else if (str == "]") {
long long tmp = 0;
while (s.top() != 0) {
tmp += s.top();
s.pop();
}
s.pop();
s.push(tmp + 8);
} else {
s.push(str.size() + 12);
}
}
cout << s.top();
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 27970 OX (4) | 2023.04.21 |
---|---|
[백준 / BOJ] C++ 15311 약 팔기 (0) | 2023.04.20 |
[백준 / BOJ] C++ 27968 사사의 사차원 사탕 봉지 (4) | 2023.04.19 |
[백준 / BOJ] C++ 27966 △ (2) | 2023.04.19 |
[백준 / BOJ] C++ 27964 콰트로치즈피자 (2) | 2023.04.18 |