https://www.acmicpc.net/problem/4889
๋ฌธ์
์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ๋ง์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ์ฌ๊ธฐ์ ์์ ์ ์ธ ๋ฌธ์์ด์ ๋ง๋ค๊ธฐ ์ํ ์ต์ ์ฐ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํ๋ค. ์์ ์ ์ธ ๋ฌธ์์ด์ ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋น ๋ฌธ์์ด์ ์์ ์ ์ด๋ค.
- S๊ฐ ์์ ์ ์ด๋ผ๋ฉด, {S}๋ ์์ ์ ์ธ ๋ฌธ์์ด์ด๋ค.
- S์ T๊ฐ ์์ ์ ์ด๋ผ๋ฉด, ST(๋ ๋ฌธ์์ด์ ์ฐ๊ฒฐ)๋ ์์ ์ ์ด๋ค.
{}, {}{}, {{}{}}๋ ์์ ์ ์ธ ๋ฌธ์์ด์ด์ง๋ง, }{, {{}{, {}{๋ ์์ ์ ์ธ ๋ฌธ์์ด์ด ์๋๋ค.
๋ฌธ์์ด์ ํํ ์ ์๋ ์ฐ์ฐ์ ์ฌ๋ ๊ดํธ๋ฅผ ๋ซ๋ ๊ดํธ๋ก ๋ฐ๊พธ๊ฑฐ๋, ๋ซ๋ ๊ดํธ๋ฅผ ์ฌ๋ ๊ดํธ๋ก ๋ฐ๊พธ๋ ๊ฒ 2๊ฐ์ง์ด๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ์ธํธ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ๋ฐ์ดํฐ ์ธํธ๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ค์๋ ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ๋ง์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 2000์ ๋๋ ๊ฒฝ์ฐ๋ ์๊ณ , ํญ์ ๊ธธ์ด๋ ์ง์์ด๋ค.
์ ๋ ฅ์ ๋ง์ง๋ง ์ค์ '-'๊ฐ ํ ๊ฐ ์ด์ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์, ํ ์คํธ ์ผ์ด์ค ๋ฒํธ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์์ด์ ์์ ์ ์ผ๋ก ๋ฐ๊พธ๋๋ฐ ํ์ํ ์ต์ ์ฐ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์คํ์ ์ด์ฉํ์ฌ ๊ดํธ๋ค์ ์ง์ ๋ง์ถ๋ฉด (์๋ ๋ฌธ์ ํ์ด ์ฐธ๊ณ , ์ด๋ ์ง์ด ์๋ง์ ๊ฒฝ์ฐ์๋ ๋ฆฌํดํ์ง ์๊ณ ์ฐ์ฐ์ ์ด์ด๋๊ฐ๋ค)
์ฐ์ฐ ํ ์คํ์๋ ์ง์ด ๋ง์ง ์๋ ๊ดํธ๋ค๋ง ๋จ๋๋ค.
์ด ์คํ์์ ๋๊ฐ์ฉ ๊บผ๋ด์ (๊ฐ์๋ ๋ฌด์กฐ๊ฑด ์ง์์ด๋ฏ๋ก)
1. ๋ ๊ดํธ์ ๋ฐฉํฅ์ด ๊ฐ๋ค๋ฉด ans++ ( '{{', '}}' )
2.๋ ๊ดํธ์ ๋ฐฉํฅ์ด ๋ค๋ฅด๋ค๋ฉด ans+2 ( '}{' )
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <stack>
using namespace std;
int main() {
string input;
int case_num = 1;
while(getline(cin, input)) {
if(input[0]=='-') {
break;
}
stack<char> s;
for(int i=0; i<input.size(); i++) {
if(input[i] == '}' && !s.empty() && s.top() == '{')
s.pop();
else
s.push(input[i]);
}
int ans = 0;
while(!s.empty()) {
char first = s.top();
s.pop();
char second = s.top();
s.pop();
if(first == second) ans++;
else ans += 2;
}
cout << case_num << ". " << ans << "\n";
case_num++;
}
return 0;
}
/*
*/
solution() ์ฝ๋ ๋ฒ์ (ํ๋ก๊ทธ๋๋จธ์ค)
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <stack>
using namespace std;
int solution(stack<char> &s) {
int ans = 0;
while(!s.empty()) {
char first = s.top();
s.pop();
char second = s.top();
s.pop();
if(first == second) ans++;
else ans += 2;
}
return ans;
}
stack<char> bracket_stack(string &input) {
stack<char> s;
for(int i=0; i<input.size(); i++) {
if(input[i] == '}' && !s.empty() && s.top() == '{')
s.pop();
else
s.push(input[i]);
}
return s;
}
int main() {
string input;
int case_num = 1;
while(getline(cin, input)) {
if(input[0]=='-') {
break;
}
stack<char> s = bracket_stack(input);
int ans = solution(s);
cout << case_num << ". " << ans << "\n";
case_num++;
}
return 0;
}
/*
*/
'๐๏ธ ICPC Sinchon > Linear Data Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 17299๋ฒ: ์ค๋ฑํฐ์ (0) | 2023.05.25 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1918๋ฒ: ํ์ ํ๊ธฐ์ (0) | 2023.05.24 |
[BOJ][C++] ๋ฐฑ์ค 20301๋ฒ: ๋ฐ์ ์์ธํธ์ค (0) | 2023.04.08 |
[BOJ S3][C++] ๋ฐฑ์ค 18115๋ฒ : ์นด๋ ๋๊ธฐ (0) | 2022.09.12 |
[BOJ S5][C++] ๋ฐฑ์ค 11866๋ฒ : ์์ธํธ์ค ๋ฌธ์ 0 (0) | 2022.09.12 |