๐ 1. ๋ฌธ์ ์๊ฐ
2504๋ฒ: ๊ดํธ์ ๊ฐ
4๊ฐ์ ๊ธฐํธ ‘(’, ‘)’, ‘[’, ‘]’๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด์ง๋ ๊ดํธ์ด ์ค์์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค. ํ ์์ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ง ‘()’์ ‘[]’๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ค. ๋ง์ผ X
www.acmicpc.net
๐ 2. ํ์ด
ํด๋น ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ธ ์คํ ๋ฌธ์ ์ ๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ๊ฐ ๋ํด์ง ๋ฌธ์ ๋ค. ๊ดํธ๋ฅผ ์ด์ฉํ ์ผ๋ฐ์ ์ธ ์คํ ๋ฌธ์ ์ ๋ํ ์ค๋ช ์ ์๋ ๋ฌธ์ ๋ฅผ ์ฐธ๊ณ ํ๋๋ก ํ์.
9012๋ฒ: ๊ดํธ
๊ดํธ ๋ฌธ์์ด(Parenthesis String, PS)์ ๋ ๊ฐ์ ๊ดํธ ๊ธฐํธ์ธ ‘(’ ์ ‘)’ ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฌธ์์ด์ด๋ค. ๊ทธ ์ค์์ ๊ดํธ์ ๋ชจ์์ด ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(Valid PS, VPS)์ด๋ผ๊ณ
www.acmicpc.net
์ด์ ๋ถํฐ ๊ดํธ๋ค์ ์ด์ฉํ ๊ณ์ฐ์ ํตํด ์ด๋ป๊ฒ ๊ฐ์ ๊ตฌํ๋์ง ์๊ฐํด ๋ณด์.
์ฃผ์ด์ง ์์ ์ธ ( ( ) [ [ ] ] ) ( [ ] )๋ฅผ ์ดํด๋ณด์. ์ผ๋ฐ์ ์ผ๋ก ๊ณ์ฐ์ ํ๋ค๊ณ ํ๋ฉด, 2 x (2 + (3 x 3)) + (2 x 3) = 28๋ก ๊ณ์ฐํ ์ ์๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์ธ์ ๋ํด์ฃผ๊ณ (+) ์ธ์ ๊ณฑํด์ฃผ์ด์ผ(x) ํ๋์ง๋ฅผ ์ ํํ ๋๋ ์ ์๋ค๋ ๊ฒ์ด๋ค. ('๊ณฑํ๊ธฐ ์์ ๋ํ๊ธฐ'๋ฅผ ๋ง๋ค ์ ์๊ณ '๋ํ๊ธฐ ์์ ๊ณฑํ๊ธฐ'๋ฅผ ๋ง๋ค ์ ์์ด์ ๊ณ์ฐ์ด ๋ณต์กํ๋ค.)
( ( ) [ [ ] ] ) ( [ ] )๋ฅผ ๋ค์ ํ๋ฒ ์ดํด๋ณด์.
๊ฐ์ ์์ ๊ฐ์ด 2 x (2 + (3 x 3)) + (2 x 3) = 28๋ก ํ์ํ ์๋ ์๊ฒ ์ง๋ง, (2 x 2) + (2 x 3 x 3) + (2 x 3) = 28๋ก ํ์ํ ์๋ ์๋ค. ์ด๋ ๊ฒ ํ์ํ๋ฉด ๋ํ๊ธฐ(+)์ ๊ณฑํ๊ธฐ(x)๊ฐ ์ ํํ ๋ถ๋ฆฌํ ์ ์๋ค. ๊ณฑํ๊ธฐ๋ฅผ ์ด์ฉํ ์ ์์ ๋ํ๊ธฐ๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ณฑํ๊ธฐ๋ฅผ ์ด์ฉํด์ ๊ฐ์ด ๊ตฌํด์ง ์ํ์์ ๋ํ๊ธฐ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ๋ํ๊ณ ์ด๋ฅผ ๋ฐ๋ณตํ๋ฉด ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ธ์ ๊ณฑํ๊ธฐ(x)๋ฅผ ํ๊ณ ์ธ์ ๋ํ๊ธฐ(+)๋ฅผ ํด์ผ ํ ๊น?
๊ณฑํ๊ธฐ๋ ๊ดํธ๊ฐ ์ด๋ฆด ๋ ํด์ฃผ๊ณ ๋ํ๊ธฐ๋ ์ง์ ๊ดํธ์ ์ง์ ์ด๋ฃฐ ๋ ํด์ฃผ๋ฉด ๋๋ค.
์์ : ( ( ) [ [ ] ] ) ( [ ] )
( | ( | ) | ) | ||
x2 | x2 | + | |||
( | [ | [ | ] | ] | ) |
x2 | x3 | x3 | + | ||
( | [ | ] | ) | ||
x2 | x3 | + |
์ด๋ ๊ฒ ํํํ๋ฉด ( ( ) [ [ ] ] ) ( [ ] )๋ฅผ (2 x 2) + (2 x 3 x 3) + (2 x 3) = 28๋ผ๊ณ ๊ณ์ฐํ ์ ์๋ค.
์ด๋ฅผ ๊ฐ๋จํ๊ฒ ์์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
- ์ ์ฒด ๊ฐ = totalScore
- ๊ณฑํ๊ธฐ๋ฅผ ์ด์ฉํ ํ๋์ ๊ฐ = score
- (
score = score x 2 - [
score = score x 3 - )
์ง์ ๊ดํธ์ ์ง์ ์ด๋ฃจ๋ ๊ฒฝ์ฐ
→ totalScore = totalScore + score
→ score = score / 2
์ง์ ๊ดํธ์ ์ง์ ์ด๋ฃจ์ง ๋ชปํ๋ ๊ฒฝ์ฐ
→ score = score / 2 - ]
์ง์ ๊ดํธ์ ์ง์ ์ด๋ฃจ๋ ๊ฒฝ์ฐ
→ totalScore = totalScore + score
→ score = score / 3
์ง์ ๊ดํธ์ ์ง์ ์ด๋ฃจ์ง ๋ชปํ๋ ๊ฒฝ์ฐ
→ score = score / 3
๐ 3. ์ฝ๋
public class Main {
static String s;
static boolean isValid = true;
static int totalScore, score = 1;
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
s = in.readLine();
Stack<Character> stk = new Stack<>();
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '(':
score *= 2;
stk.add(c);
break;
case '[':
score *= 3;
stk.add(c);
break;
case ')':
if(stk.isEmpty() || stk.peek() != '(') {
isValid = false;
break;
}
if(s.charAt(i-1) == '(') {
totalScore += score;
score /= 2;
}
else {
score /= 2;
}
stk.pop();
break;
case ']':
if(stk.isEmpty() || stk.peek() != '[') {
isValid = false;
break;
}
if(s.charAt(i-1) == '[') {
totalScore += score;
score /= 3;
}
else {
score /= 3;
}
stk.pop();
break;
}
if(!isValid)
break;
}
if (isValid && stk.isEmpty()) {
System.out.println(totalScore);
}
else {
System.out.println(0);
}
}
}
'๐ ์๊ณ ๋ฆฌ์ฆ_๋ฌธ์ ํ์ด > BOJ_๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค BOJ / JAVA] ๋ ๋ฐฐ์ด์ ํฉ (2143๋ฒ) (1) | 2023.12.29 |
---|---|
[๋ฐฑ์ค BOJ / JAVA] ๋ฉํฐ๋ฒ์ค โ ก (18869๋ฒ) (1) | 2023.12.27 |
BOJ 14865 - ๊ณก์ ์๋ฅด๊ธฐ [JAVA] (0) | 2023.02.28 |