https://www.acmicpc.net/problem/35289
๋ฌธ์
| A | B | C | D | E | F |
| ( | (( | ) | )) | () | )( |
์ฌ์ฏ ์ข ๋ฅ์ ๊ดํธ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ์นด๋๋ฅผ ์์์ ์์๋ก ๋์ดํด ๋ง๋ค ์ ์๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ์ต๋ ๊ธธ์ด ๊ตฌํ๊ธฐ(๋ชจ๋ ์นด๋๋ฅผ ์ฌ์ฉํ ํ์ X)
๋จ, ์นด๋๋ ๋ค์ง๊ฑฐ๋ ํ์ ํ ์ ์๊ณ , ์นด๋์ ์ ํ ๋ฌธ์์ด์ ๋ถ๋ฆฌํด ์ฌ์ฉํ ์ ์์
ํ์ด ๋ฐฉ์
์ฒ์์ ๊ดํธ ๋ฌธ์์ด์ด์ด์ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์์ ๊ณ ๋ฏผํจ. ์คํ์ ์ด์ฉํด์ ํธ๋ ๋ฐฉ๋ฒ์ ์์ด๋์ด๊ฐ ๋ ์ค๋ฅด์ง ์์ ์กฐ๊ฑด ๋ถ๊ธฐ๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ์ ๊ทผํจ.
- E ๊ดํธ ๋ฌธ์์ด์ธ ()๋ ๋จ๋ ์ผ๋ก ์ฌ์ฉํด๋ ์ฌ๋ฐ๋ฅธ ๋ฌธ์์ด์ด๋ฏ๋ก ๋ณ๋๋ก ์ธ์ด์ค
- F ๊ดํธ ๋ฌธ์์ด์ธ )(๋ ์์น๊ฐ ๊ฐ์ด๋ฐ์ ๋ฐฐ์น๋์ด์ผ ํจ(ex: AFC, BFC, BFFFFC ๋ฑ). ๊ฐ์ฅ ๊ธด ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ ๊ฒ๋ถํฐ ์ ๊ทผ
- B+F๊ธธ์ด+D → (( )()(...)( ))
- A+F๊ธธ์ด+C → ( )()(...)( )
- B+F๊ธธ์ด+CC → (( )()(...)( ))
- AA+F๊ธธ์ด+D → (( )()(...)( ))
- B ๊ดํธ ๋ฌธ์์ด ((๋ ๋ซํ ๊ดํธ๊ฐ ๋์์ฃผ์ด์ผ ํจ(ex: BD, BCC ๋ฑ)
- B+D → (( ... ))
์ฌ๊ธฐ์ B์ D ์ค ๊ฐ์๊ฐ ๋ ์ ์ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด ์์ฑ - ๋ง์ฝ B>D์ธ ๊ฒฝ์ฐ, ๋จ๋ B๋ C์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด ๋ง๋ค ์ ์์ ๊ณ ๋ ค B+CC → (( ... ))
์ด ๋ถ๋ถ๋ B์ CC ์ค ๊ฐ์๊ฐ ๋ ์ ์ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด ์์ฑ
- B+D → (( ... ))
- D ๊ดํธ ๋ฌธ์์ด ))๋ A ๊ดํธ๊ฐ 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ๋ ๋งค์นญ๋ ์ ์์
- AA+D → (( ... ))
- ๋จ์ A ๊ดํธ ๋ฌธ์์ด์ ๋จ์ C๋ก ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด ๋ง๋ค ์ ์์
- A+C → (( ... ))
์ฝ๋
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
// A: (, B: ((, C: ), D: )), E: (), F: )(
let [A, B, C, D, E, F] = input[0].split(' ').map(Number);
let answer = 0;
// E๋ ํญ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์
if (E > 0) {
answer += E * 2;
E = 0;
}
// F๊ฐ ์กด์ฌํ ๋
if (F > 0) {
// (()()()()(...)())
if (B > 0 && D > 0) {
answer += F * 2 + 4;
B--;
D--;
}
// ()(...)()
else if (A > 0 && C > 0) {
answer += F * 2 + 2;
A--;
C--;
}
// (()(...)())
else if (A >= 2 && D > 0) {
answer += F * 2 + 4;
A -= 2;
D--;
}
// (()(...)())
else if (B > 0 && C >= 2) {
answer += F * 2 + 4;
B--;
C -= 2;
}
}
// B๊ฐ ์กด์ฌํ ๋
if (B > 0) {
if (D > 0) {
const min = Math.min(B, D);
answer += min * 2 * 2;
B -= min;
D -= min;
}
if (B > 0 && C >= 2) {
const min = Math.min(B, Math.floor(C / 2));
answer += min * 2 * 2;
B -= min;
C -= 2 * min;
}
}
// D๊ฐ ์กด์ฌํ ๋
if (D > 0) {
if (A >= 2) {
const min = Math.min(D, Math.floor(A / 2));
answer += min * 2 * 2;
A -= 2 * min;
}
}
// A๊ฐ ์กด์ฌํ ๋
if (A > 0) {
if (C > 0) {
const min = Math.min(A, C);
answer += min * 2;
}
}
console.log(answer);'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค-258711] ๋๋๊ณผ ๋ง๋ ๊ทธ๋ํ (0) | 2026.05.27 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค-49191] ์์ (0) | 2026.05.17 |
| [ํ๋ก๊ทธ๋๋จธ์ค-1843] ์ฌ์น์ฐ์ฐ (0) | 2026.05.02 |
| [ํ๋ก๊ทธ๋๋จธ์ค-42895] N์ผ๋ก ํํ (0) | 2026.04.30 |
| [ํ๋ก๊ทธ๋๋จธ์ค-42860] ์กฐ์ด์คํฑ (0) | 2026.04.27 |