โ๋ฌธ์
https://www.acmicpc.net/problem/2800

์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 32412 KB, ์๊ฐ: 36 ms
๋นํธ๋ง์คํน, ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ, ์๋ฃ ๊ตฌ์กฐ, ์คํ, ๋ฌธ์์ด
์ด๋ค ์์์ด ์ฃผ์ด์ก์ ๋, ๊ดํธ๋ฅผ ์ ๊ฑฐํด์ ๋์ฌ ์ ์๋ ์๋ก ๋ค๋ฅธ ์์ ๊ฐ์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ด ์์์ ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ณ์ ธ ์๋ค. ์๋ฅผ ๋ค๋ฉด, 1+2, (3+4), (3+4*(5+6))์ ๊ฐ์ ์์ ๊ดํธ๊ฐ ์๋ก ์์ด ๋ง์ผ๋ฏ๋ก ์ฌ๋ฐ๋ฅธ ์์ด๋ค.
ํ์ง๋ง, 1+(2*3, ((2+3)*4 ์ ๊ฐ์ ์์ ์์ด ๋ง์ง ์๋ ๊ดํธ๊ฐ ์์ผ๋ฏ๋ก ์ฌ๋ฐ๋ฅธ ์์ด ์๋๋ค.
๊ดํธ๋ฅผ ์ ๊ฑฐํ ๋๋, ํญ์ ์์ด ๋๋ ๊ดํธ๋ผ๋ฆฌ ์ ๊ฑฐํด์ผ ํ๋ค.
์๋ฅผ๋ค์ด (2+(2*2)+2)์์ ๊ดํธ๋ฅผ ์ ๊ฑฐํ๋ฉด, (2+2*2+2), 2+(2*2)+2, 2+2*2+2๋ฅผ ๋ง๋ค ์ ์๋ค. ํ์ง๋ง, (2+2*2)+2์ 2+(2*2+2)๋ ๋ง๋ค ์ ์๋ค. ๊ทธ ์ด์ ๋ ์์ด ๋์ง ์๋ ๊ดํธ๋ฅผ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ค ์์ ์ฌ๋ฌ ์์ ๊ดํธ๊ฐ ๊ฐ์ ์ ์๋ค.
โ๐ปํ์ด
์ฐ๋ฆฌ๋ ํญ์ ์์ด ๋๋ ๊ดํธ๋ผ๋ฆฌ ์ ๊ฑฐํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋จผ์ ๊ดํธ์ ์์ ์ฐพ์์ผ ํ๋ค. '('์ด ๋์ค๋ฉด ์คํ์ '('์ ์์น๋ฅผ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ ')'์ด ๋์ค๋ฉด ์์ ์ฐพ์์ผ๋ฏ๋ก ์คํ ๊ฐ์ฅ ์์ '('์ ์์น์ ')'์ ์์น๋ฅผ ๋ค๋ฅธ ๋ฆฌ์คํธ์ ๋ฃ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์ ์ฐพ์ผ๋ฉด ๋๋ค.
์์ ์ฐพ์์ผ๋ฉด ๊ดํธ๋ฅผ ์ ๊ฑฐํ์ฌ ๋์ฌ ์ ์๋ ์์ ๊ฐ์๋ฅผ ๊ตฌํด์ผ ํ๋ค. ๋ง์ฝ ๊ดํธ์ ์์น๊ฐ (0, 10), (3, 7)์ด ์๋ค๊ณ ํด๋ณด์. ๊ทธ๋ผ ์ฐ๋ฆฌ๋ (0, 10)๋ง ์ ๊ฑฐํด๋ ๋๊ณ , (3, 7)์ ์๋ ๊ดํธ๋ง ์ ๊ฑฐํด๋ ๋๋ค. ํน์ ๋ ๋ค ์ง์ธ ์๋ ์๋ค. ์ด๋ ์กฐํฉ์ผ๋ก combinations ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ตฌํ๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ๋์จ ์กฐํฉ์ ์ด์ฉํ์ฌ ์ง์ฐ๊ณ ์ ํ๋ ์์น๋ฅผ ๋น์นธ์ผ๋ก ๋ฐ๊พธ๋ฉด ๊ดํธ๊ฐ ์ ๊ฑฐ๋ ์์ด ๋์จ๋ค. ๋ง์ง๋ง์ผ๋ก ๋์จ ์๋ค์ ์ ๋ ฌํด์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๐ป์ฝ๋
import sys
from itertools import combinations
input = sys.stdin.readline
S = list(input().strip())
st = []
indices = []
res = set()
for i in range(len(S)):
if S[i] == '(':
st.append(i)
elif S[i] == ')':
indices.append((st.pop(), i))
for i in range(len(indices)):
for comb in combinations(indices, i+1):
temp = S[:]
for c in comb:
temp[c[0]] = temp[c[1]] = ""
res.add("".join(temp))
for s in sorted(list(res)):
print(s)
๐ํ๊ธฐ
๋จธ๋ฆฌ๋ก ์ดํดํด๋ ์ฝ๋๋ก ๋ง๋๋ ๊ฒ์ ์ด๋ ต๋ค...
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1068. ํธ๋ฆฌ/Python - Gold5 (0) | 2025.03.19 |
---|---|
[๋ฐฑ์ค] 1966. ํ๋ฆฐํฐ ํ/Python - Silver3 (0) | 2025.03.18 |
[๋ฐฑ์ค]14940. ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ/Python - Silver1 (0) | 2025.03.10 |
[๋ฐฑ์ค] 17298.์คํฐ์/Python - Gold4 (0) | 2025.03.07 |
[๋ฐฑ์ค] 2493. ํ/Python - Gold5 (0) | 2025.03.01 |