ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
4๊ฐ์ ๊ธฐํธ โ(โ, โ)โ, โ[โ, โ]โ๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด์ง๋ ๊ดํธ์ด ์ค์์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค.
- ํ ์์ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ง โ()โ์ โ[]โ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ค.
- ๋ง์ผ X๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ฉด โ(X)โ์ด๋ โ[X]โ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ๋๋ค.
- X์ Y ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ผ๋ฉด ์ด๋ค์ ๊ฒฐํฉํ XY๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ๋๋ค.
์๋ฅผ ๋ค์ด โ(()[[]])โ๋ โ(())[][]โ ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด์ง๋ง โ([)]โ ๋ โ(()()[]โ ์ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด ์๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ค ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด X์ ๋ํ์ฌ ๊ทธ ๊ดํธ์ด์ ๊ฐ(๊ดํธ๊ฐ)์ ์๋์ ๊ฐ์ด ์ ์ํ๊ณ ๊ฐ(X)๋ก ํ์ํ๋ค.
- โ()โ ์ธ ๊ดํธ์ด์ ๊ฐ์ 2์ด๋ค.
- โ[]โ ์ธ ๊ดํธ์ด์ ๊ฐ์ 3์ด๋ค.
- โ(X)โ ์ ๊ดํธ๊ฐ์ 2ร๊ฐ(X) ์ผ๋ก ๊ณ์ฐ๋๋ค.
- โ[X]โ ์ ๊ดํธ๊ฐ์ 3ร๊ฐ(X) ์ผ๋ก ๊ณ์ฐ๋๋ค.
- ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด X์ Y๊ฐ ๊ฒฐํฉ๋ XY์ ๊ดํธ๊ฐ์ ๊ฐ(XY)= ๊ฐ(X)+๊ฐ(Y) ๋ก ๊ณ์ฐ๋๋ค.
์๋ฅผ ๋ค์ด โ(()[[]])([])โ ์ ๊ดํธ๊ฐ์ ๊ตฌํด๋ณด์. โ()[[]]โ ์ ๊ดํธ๊ฐ์ด 2 + 3ร3=11 ์ด๋ฏ๋ก โ(()[[]])โ์ ๊ดํธ๊ฐ์ 2ร11=22 ์ด๋ค. ๊ทธ๋ฆฌ๊ณ โ([])โ์ ๊ฐ์ 2ร3=6 ์ด๋ฏ๋ก ์ ์ฒด ๊ดํธ์ด์ ๊ฐ์ 22 + 6 = 28 ์ด๋ค.
์ฌ๋ฌ๋ถ์ด ํ์ด์ผ ํ ๋ฌธ์ ๋ ์ฃผ์ด์ง ๊ดํธ์ด์ ์ฝ๊ณ ๊ทธ ๊ดํธ๊ฐ์ ์์์ ์ ์ํ๋๋ก ๊ณ์ฐํ์ฌ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
2504๋ฒ: ๊ดํธ์ ๊ฐ
4๊ฐ์ ๊ธฐํธ โ(โ, โ)โ, โ[โ, โ]โ๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด์ง๋ ๊ดํธ์ด ์ค์์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค. ํ ์์ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ง โ()โ์ โ[]โ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ค. ๋ง์ผ X
www.acmicpc.net
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๊ดํธ์ด์ ๋ํ๋ด๋ ๋ฌธ์์ด(์คํธ๋ง)์ด ์ฃผ์ด์ง๋ค. ๋จ ๊ทธ ๊ธธ์ด๋ 1 ์ด์, 30 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ทธ ๊ดํธ์ด์ ๊ฐ์ ๋ํ๋ด๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ผ ์ ๋ ฅ์ด ์ฌ๋ฐ๋ฅด์ง ๋ชปํ ๊ดํธ์ด์ด๋ฉด ๋ฐ๋์ 0์ ์ถ๋ ฅํด์ผ ํ๋ค.

๋ฌธ์ ํ์ด
์ด ๋ฌธ์ ๋ ์ด์ ์ ๋ค๋ค๋ ๋ฌธ์ ์ ์ ์ฌํ ํ์์ ๋๋ค.
์ด๋ ๊ดํธ์ ๊ด๋ จ๋ ๋ฌธ์ ๋ก, ๊ดํธ๋ค์ด ํน์ ์กฐ๊ฑด์ ๋ง๊ฒ ๊ตฌ์ฑ๋์ด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ๊ดํธ๋ฅผ ์คํ์ ์ ์ฅํ๊ณ , ๊ดํธ์ ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ํ, ๊ดํธ ๋ด๋ถ์ ์๋ ๊ดํธ ์์ด ์๋ฏธํ๋ ๊ณ์ฐ ๊ณผ์ ์ ๋จผ์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, [()()]์ ๊ฒฝ์ฐ์๋ [] ์์ ์๋ ๊ณ์ฐ์ด ๋จผ์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.
[2 + 2]
3 * 4
12
์ด ๊ณผ์ ์ ์์ ๋ฑ์ฅํ๋ ๊ณฑํด์ ธ์ผ ํ ๊ฐ๋ค์ ๋์ ํ์ฌ ๊ณฑํ ํ, ํด๋น ๊ดํธ๊ฐ ๋์ ๊ณฑ์ ๋ฏธ์น๋ ์ํฅ์ด ๋๋๋ฉด ๋๋์ ์ ํตํด ์ ๊ฑฐํฉ๋๋ค.
๋ง์ฝ, ์ด๋ฆฐ ๊ดํธ ๋ค์์ ๋ซํ ๊ดํธ๊ฐ ์ค๋ฉด ํด๋น ๋์ ๊ณฑ์ ์ ๋ต ๋ณ์์ ๋ํด์ค๋๋ค.
์๋ฅผ ๋ค์ด, (([]))๊ฐ ์ฃผ์ด์ก์ ๋๋ฅผ ์๊ฐํด๋ด ์๋ค.
ํด๋น ๋ฌธ์์ด์ ์ํํ๋ฉด ์ฒ์์ผ๋ก ์ค๋ ๋ฌธ์๋ '('์ด๊ณ , ๋์ ๊ณฑ์ 2๊ฐ ๋ฉ๋๋ค.
๋ค์ ๋ฌธ์๋ ๋ '('์ด๊ณ ๋์ ๊ณฑ์ด 2*2๋ก 4๊ฐ ๋ฉ๋๋ค.
๋ค์์ '['์ด ์ค๊ณ ๋์ ๊ณฑ์ 2*2*3=12๊ฐ ๋ฉ๋๋ค.
์ด์ด์ ๋ซํ ๊ดํธ ']'๊ฐ ์ค๋ฉด ๋์ ๊ณฑ์ ์ ๋ต ๋ณ์์ ๋ํ๊ณ ํด๋น ๊ดํธ์ ์ํฅ์ ๋์ ๊ณฑ์์ ์ ๊ฑฐํฉ๋๋ค.
2 * 2 * 3 = 12
12 / 3 = 4
๋ค์์ผ๋ก๋ ๋ ๋ซํ ๊ดํธ๊ฐ ์ค๋ฉฐ, ์ด์ ๊ดํธ๊ฐ ์ด๋ฆฐ ๊ดํธ๊ฐ ์๋ ๋ซํ ๊ดํธ์ด๋ฏ๋ก
์ ๋ต ๋ณ์์ ๊ฐ์ ๋ํด์ฃผ์ง ์๊ณ ๋์ ๊ณฑ์์ ์ํฅ๋ง ์ง์์ค๋๋ค.
2 * 2 * 3 = 12
12 / 3 = 4
4 / 2 = 2
์์ ๋์ผํฉ๋๋ค.
2 * 2 * 3 = 12
12 / 3 = 4
4 / 2 = 2
2 / 2 = 1
๊ฒฐ๋ก ์ ์ผ๋ก, ์ด๋ฆฐ ๊ดํธ ๋ค์์ ๋ซํ ๊ดํธ๊ฐ ์ค๋ฉด ์ ๋ต ๋ณ์์ ๋์ ๊ณฑ์ ๋ํ๊ณ , ๊ดํธ์ ๋ฐ๋ผ ๋์ ๊ณฑ ๋ณ์๋ฅผ ๊ณฑํ๊ณ ๋๋์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
์ดํด๊ฐ ์ด๋ ต๋ค๋ฉด ์๋ ์ ๋ต ์ฝ๋๋ฅผ ํ์ธํด๋ณด์ธ์!
ํ์ด ์์
1. ์ ๋ ฅ ๊ฐ์ผ๋ก ๋ฐ์ ๋ฌธ์์ด๋ก ์ํ๋ฅผ ๋๋ค
2. ์ํ๋ฅผ ๋๋ ๋ฌธ์๋ก ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค.
2-1. ํด๋น ๋ฌธ์๊ฐ ์ด๋ฆฐ ๊ดํธ์ผ ๊ฒฝ์ฐ, ๋์ ๊ณฒ์ ํด๋น ๊ดํธ์ ์ํฅ์ ์ฃผ๋ ๊ฐ์ ๊ณฑํด์ค๋ค.
2-2. ํด๋น ๋ฌธ์๊ฐ ๋ซํ ๊ดํธ์ผ ๊ฒฝ์ฐ, ๊ดํธ๊ฐ ๋์ผ ์ ์๋ ์กฐ๊ฑด์ด ๋ง๋ ์ง ๋จผ์ ํ์ธํด์ฃผ๊ณ ๋ง๋ค๋ฉด ์ด์ ๊ดํธ์ ๋ฐ๋ผ ์กฐ๊ฑด์ ์ฒ๋ฆฌํด์ค๋ค.
3. ์ ๋ต์ ์ถ๋ ฅํ๋ค.
ํ์ด ์ฝ๋
< Swift>
// Swift
let str = readLine()!
var s = [Character]()
var ans = 0
var n = 1 // ๊ณฑํด์ง๋ ๊ฐ
var prev: Character = " " // ๋ฐ๋ณต๋ฌธ์ ์ง์ ๋ฌธ์ ์ ์ฅ
for c in str {
if c == "(" {
n *= 2
s.append(c)
} else if c == "[" {
n *= 3
s.append(c)
} else if c == ")" {
if s.isEmpty || s.last != "(" {
s.append(" ") // ์ ๋ต ์ถ๋ ฅ ์, ์คํ์ ๋น๋ฐฐ์ด ๋ถ๊ธฐ์ฒ๋ฆฌ๋ก ์ ๋ต์ ํ ๋ฒ๋ง ์ถ๋ ฅํ๊ธฐ ์ํจ
break
} else if prev == "(" {
ans += n
n /= 2
s.removeLast()
} else { // ๊ฒฝ์ฐ: ๋ซ -> ๋ซ
s.removeLast()
n /= 2
}
} else { // c == "]'
if s.isEmpty || s.last != "[" {
s.append(" ")
break
} else if prev == "[" {
ans += n
n /= 3
s.removeLast()
} else { // ๊ฒฝ์ฐ: ๋ซ -> ๋ซ
s.removeLast()
n /= 3
}
}
prev = c // ์ง์ ๋ฌธ์ ๊ธฐ๋ก
}
if s.isEmpty {
print(ans)
} else {
print(0)
}
< C++>
// C++
#include <bits/stdc++.h>
using namespace std;
stack<char> s;
int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
string str;
cin >> str;
int ans = 0;
int n = 1;
for(int i = 0; i < str.size(); i++){
if(str[i] == '('){
n *= 2;
s.push(str[i]);
}
else if(str[i] == '['){
n *= 3;
s.push(str[i]);
}
else if(str[i] == ')'){
if(s.empty() || s.top() != '('){
cout << 0;
return 0;
}
if(str[i-1] == '(') ans += n;
n /= 2;
s.pop();
}
else{ // ']'
if(s.empty() || s.top() != '['){
cout << 0;
return 0;
}
if(str[i-1] == '[') ans += n;
n /= 3;
s.pop();
}
}
if(s.empty()) cout << ans;
else cout << 0;
}
๋ง๋ฌด๋ฆฌ
๊ดํธ์ ๊ด๋ จ๋ ๋ฌธ์ ๋ ์คํ์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํด์ผ ํจ์ ๊นจ๋ฌ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ดํธ ๋ด๋ถ์ ์๋ ๊ณ์ฐ ๊ณผ์ ์ ํด๋น ๊ดํธ๋ณด๋ค ๋จผ์ ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์
์ด ๋ถ๋ถ์ ๋ค๋ฃจ๋ ๊ฒ์ด ๊ฝค ์ด๋ ค์ ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ๋์ ๊ณฑ ๊ฐ๋ ์ ๋์ ํ์ฌ ๊ณ์ํด์ ์ํฅ์ ์ฃผ๋ ๊ฐ์ ์ ์ฅํ๊ณ
์ด๋ฅผ ์ด์ฉํ์ฌ ์ ๋ต์ ์ฒ๋ฆฌํด ์ฃผ์์ต๋๋ค.
'Coding Test > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 10799๋ฒ - ์ ๋ง๋๊ธฐ (Swift, C++) (0) | 2024.02.26 |
---|---|
[BOJ] 4949๋ฒ - ๊ท ํ์กํ ์ธ์ (Swift, C++) (0) | 2024.02.25 |
[BOJ] 10845๋ฒ - ํ (Swift, C++) (0) | 2024.02.23 |
[BOJ] 10773๋ฒ - ์ ๋ก (Swift, C++) (0) | 2024.02.22 |
[BOJ] 5397๋ฒ - ํค๋ก๊ฑฐ (Swift, C++) (0) | 2024.02.21 |
- tipkit
- ์์ด ๊ณต๋ถ
- C++
- ์คํ
- ๋ฒ์ฉ๊ณ ์ ์๋ณ
- ๊ดํธ์ ๊ฐ
- ํ๊ณ
- remainder
- ๊ณต๊ฐ ๋ณต์ก๋
- 2024๋ ๋ชฉํ
- ํ
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ ํ์์นด๋ฐ๋ฏธ
- ์์ด ๋ด์ค
- 24๋ ํ๊ณ
- ๊ท๋๋ผ๋ฏธ ์์ด
- ์ํํธ์คํฌ
- root view controller
- Anyobject
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- pageViewController
- 2023๋ ํ๊ณ
- containerView
- 10808
- Container View Controller
- Swift
- BOJ
- ์๋ฃ ๊ตฌ์กฐ
- ๊ฐ๋ฐ์
- ๊ท๋๋ผ๋ฏธ ์์ด
- Total
- Today
- Yesterday