๋ฌธ์
1๋ถํฐ N๊น์ง์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ด ์์ด 1 2 3 ... N์ ์๊ฐํ์.
๊ทธ๋ฆฌ๊ณ '+'๋ '-', ๋๋ ' '(๊ณต๋ฐฑ)์ ์ซ์ ์ฌ์ด์ ์ฝ์ ํ์(+๋ ๋ํ๊ธฐ, -๋ ๋นผ๊ธฐ, ๊ณต๋ฐฑ์ ์ซ์๋ฅผ ์ด์ด ๋ถ์ด๋ ๊ฒ์ ๋ปํ๋ค). ์ด๋ ๊ฒ ๋ง๋ ์์์ ๊ฐ์ ๊ณ์ฐํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๊ฐ 0์ด ๋ ์ ์๋์ง๋ฅผ ์ดํผ์.
N์ด ์ฃผ์ด์ก์ ๋ ์์์ ๊ฒฐ๊ณผ๊ฐ 0์ด ๋๋ ๋ชจ๋ ์์์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค(<10).
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ค(3 <= N <= 9).
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ASCII ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ 0์ด ๋๋ ๋ชจ๋ ์์์ ์ถ๋ ฅํ๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ ํ ์ค์ ๋์ ๊ตฌ๋ถํ๋ค.

๋ฌธ์ ํ์ด
import sys
t=int(sys.stdin.readline())
def calculate(express):
if ' ' in express:
express=express.replace(' ','')
return eval(express)
def combination(num, arr):
global n, ans
if num==n:
if calculate(arr)==0:
ans.append(arr)
return
combination(num+1, arr+'+'+str(num+1))
combination(num+1, arr+'-'+str(num+1))
combination(num+1, arr+' '+str(num+1))
for _ in range(t):
n=int(sys.stdin.readline())
ans=[]
combination(1, '1')
ans.sort()
for a in ans:
print(a)
print('')
- ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์ n์ ์ ๋ ฅ๋ฐ์์ ๋ง๋ค์ด๋ผ ์ ์๋ ๋ชจ๋ ์์๋ค์ ํ์ํ๋ค.
- ์ฌ๊ทํจ์ combination์์ ์ถ๊ฐํ๊ฑฐ๋, ๋นผ๊ฑฐ๋, ์ด์ด์ฃผ๋ ์ซ์ num์ด n์ด๋ผ๋ฉด ์ฆ, arr๊ฐ 1๋ถํฐ n๊น์ง ํฌํจํ๋ ๋ฌธ์์ด์ด๋ผ๋ฉด calculate ํจ์๋ฅผ ์ด์ฉํด์ ํด๋น ์์์ ๊ฐ์ด 0์ธ์ง ํ์ธํ๋ค.
- 0์ด๋ผ๋ฉด ๋ฐฐ์ด ans์ ์ถ๊ฐํด์ค๋ค.
- calculate ํจ์์์ ๋จผ์ ์์์ ๊ณต๋ฐฑ์ replace๋ฅผ ์ด์ฉํด์ ์ ๊ฑฐํด์ค๋ค.
- ์ฌ๊ธฐ์ replace๋ sortํจ์์ฒ๋ผ ๋ฆฌํด๊ฐ ์์ด ์ง์ ์ ์ผ๋ก ํด๋น ๋ฌธ์์ด์ ๋ณํ์ ์ฃผ๋ ๊ฒ์ด ์๋๋ผ, ๋ฐํ ๊ฐ์ ์ฃผ๋ ๊ฒ์ด๋ฏ๋ก express=express.replace(' ','')์ ๋ฐํ๊ฐ์ express์ ๋์ ํด์ค์ผ ์ ์์ ์ผ๋ก ๊ณ์ฐ๋๋ค.
- ๊ณต๋ฐฑ์ด ์ ๊ฑฐ๋ express๋ฅผ ๋ฌธ์์ด ์์์ ๊ณ์ฐํด์ฃผ๋ ํ์ด์ฌ ๋ด์ฅํจ์ eval()์ ์ด์ฉํด์ ๊ณ์ฐํ๋ค.
- ๋ง์ง๋ง์ผ๋ก ans์ ์ ์ฅ๋ ๋ฌธ์์ด๋ค์ ์์คํค ์ฝ๋์์ผ๋ก ์ ๋ ฌํด์ค ๋ค์ ์ถ๋ ฅํด์ค๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 24337 ๐ฅ] ๊ฐํฌ์ ํ (0) | 2023.08.15 |
---|---|
[๋ฐฑ์ค 22251 ๐ฅ] ๋น๋ฐ ํธ์ (0) | 2023.08.11 |
[๋ฐฑ์ค 7682 ๐ฅ] ํฑํํ (0) | 2023.08.03 |
[๋ฐฑ์ค 14719 ๐ฅ] ๋น๋ฌผ (0) | 2023.08.01 |
[๋ฐฑ์ค 8911 ๐ฅ] ๊ฑฐ๋ถ์ด (0) | 2023.07.31 |