https://www.acmicpc.net/problem/3980
3980๋ฒ: ์ ๋ฐ ๋ช ๋จ
๊ฐ๊ฐ์ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์, ๋ชจ๋ ํฌ์ง์ ์ ์ ์๋ฅผ ์ฑ์ ์ ๋, ๋ฅ๋ ฅ์น์ ํฉ์ ์ต๋๊ฐ์ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค. ํญ์ ํ๋ ์ด์์ ์ฌ๋ฐ๋ฅธ ๋ผ์ธ์ ์ ๋ง๋ค ์ ์๋ค.
www.acmicpc.net
๋ฌธ์
์ฑํผ์ธ์ค ๋ฆฌ๊ทธ ๊ฒฐ์น์ ์ ์๋๊ณ ์๋ ๋งจ์ฒด์คํฐ ์ ๋์ดํฐ๋์ ๋ช ์ฅ ํผ๊ฑฐ์จ ๊ฐ๋ ์ ์ด๋ฒ ๊ฒฝ๊ธฐ์ 4-4-2 ๋ค์ด์๋ชฌ๋ ์ ์ ์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค.

์ค๋ ๊ฒฐ์น์ ์ ๋ธ ์ ๋ฐ ์ ์ 11๋ช ์ ๋ฏธ๋ฆฌ ๊ณจ๋ผ๋์์ง๋ง, ์ด๋ค ์ ์๋ฅผ ์ด๋ ํฌ์ง์ ์ ๋ฐฐ์นํด์ผ ํ ์ง ์์ง ๊ฒฐ์ ํ์ง ๋ชปํ๋ค.
์์์ฝ์น ๋ง์ดํฌ ํ ๋์ 11๋ช ์ ์ ์๊ฐ ๊ฐ๊ฐ์ ํฌ์ง์ ์์์ ๋ฅ๋ ฅ์ 0๋ถํฐ 100๊น์ง์ ์ ์๋ก ์์นํ ํ๋ค. 0์ ๊ทธ ์ ์๊ฐ ๊ทธ ํฌ์ง์ ์ ์ ํฉํ์ง ์๋ค๋ ๋ป์ด๋ค.
์ด๋, ๋ชจ๋ ์ ์์ ํฌ์ง์ ์ ์ ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ชจ๋ ํฌ์ง์ ์ ์ ์๋ฅผ ๋ฐฐ์นํด์ผ ํ๊ณ , ๊ฐ ์ ์๋ ๋ฅ๋ ฅ์น๊ฐ 0์ธ ํฌ์ง์ ์ ๋ฐฐ์น๋ ์ ์๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฌ๋ฌ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฒซ์งธ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ C๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ์ผ์ด์ค๋ 11์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , i๋ฒ ์ค์ 0๊ณผ 100์ฌ์ด์ 11๊ฐ์ ์ ์ sij๋ฅผ ํฌํจํ๊ณ ์๋ค. sij๋ i๋ฒ์ ์๊ฐ j๋ฒ ํฌ์ง์ ์์ ๋ธ ๋์ ๋ฅ๋ ฅ์ด๋ค. ๋ชจ๋ ์ ์์๊ฒ ์ ํฉํ ํฌ์ง์ ์ ์๋ ์ต๋ 5๊ฐ์ด๋ค. (๋ฅ๋ ฅ์น๊ฐ 0๋ณด๋ค ํฌ๋ค)
์ถ๋ ฅ
๊ฐ๊ฐ์ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์, ๋ชจ๋ ํฌ์ง์ ์ ์ ์๋ฅผ ์ฑ์ ์ ๋, ๋ฅ๋ ฅ์น์ ํฉ์ ์ต๋๊ฐ์ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค. ํญ์ ํ๋ ์ด์์ ์ฌ๋ฐ๋ฅธ ๋ผ์ธ์ ์ ๋ง๋ค ์ ์๋ค.
๋ฌธ์ ํ์ด
import sys
t=int(sys.stdin.readline())
# idx : idx๋ฒ์งธ ํฌ์ง์
์ ์ฌ ์ ์ ์ ์ฅ
# total : ์ด ๋ฅ๋ ฅ์น
def DFS(idx, total):
global maxans
if idx == 11:
maxans = max(maxans, total)
return
for p in range(11):
# ์ด๋ฏธ ํฌ์ง์
์ ๋ฐฐ์น๋ ์ ์์ด๊ฑฐ๋ ์ ์๊ฐ ํด๋น ํฌ์ง์
์ ๋ฅ๋ ฅ์น๊ฐ 0์ธ ๊ฒฝ์ฐ, ๋ค์ ์ ์ ํ์
if visited[p] == 1 or player[p][idx] == 0:
continue
visited[p] = 1
total += player[p][idx]
DFS(idx + 1, total)
total -= player[p][idx]
visited[p] = 0
for _ in range(t):
player=[]
# input
for i in range(11):
power=list(map(int, sys.stdin.readline().split(' ')))
player.append(power)
visited=[0]*(11)
maxans=0
DFS(0,0)
print(maxans)
[๋ฐฑ์ค 3967 ๐ฅ] ๋งค์ง ์คํ
๋ฌธ์ ๋งค์ง ์คํ๋ 1๋ถํฐ 12๊น์ง ์ซ์๊ฐ ํฅ์ฌ๊ทธ๋จ(hexagram)์ ์ฑ์์ ธ ์๋ ๋ชจ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๋งค์ง ์คํ์ ์ด๋ฆ์ ๋งค์ง์ด ๋ค์ด๊ฐ๋ ์ด์ ๋ ์ซ์ ๋ค ๊ฐ๋ก ์ด๋ฃจ์ด์ง ์ค์ ์ซ์๋ฅผ ๋ชจ๋ ํฉํ๋ฉด 26
1eehyunji.tistory.com
- ์ ๋ฌธ์ ์ ๋น์ทํ๊ฒ DFS๋ฅผ ์ด์ฉํ ์์ ํ์ ์ฌ์ฉํด์ ํ์๋ค!
- DFS(idx, total) : idx๋ฒ์งธ ํฌ์ง์ ์ ์ด๋ค ์ ์๊ฐ ์ฌ์ง ํ์ํ๋ DFS์ด๊ณ , total์ ์ด์ ํฌ์ง์ ์ ์ค๋ ์ ์๋ค์ ๊ณ์ฐํด์ ๋์จ ํ์ฌ๊น์ง์ ์ด ๋ฅ๋ ฅ์น๋ฅผ ์๋ฏธํ๋ค.
- ๊ฐ idx๋ณ๋ก DFS๋ฅผ ๋๋ฉด์ ์์ง ํฌ์ง์ ์ด ๋ฐฐ์ ๋์ง ์์๊ณ (visited[p]==0), ํด๋น ํฌ์ง์ ์ ๋ฅ๋ ฅ์น๊ฐ 0 ์ด์(player[p][idx]>0)์ธ ์ ์๋ฅผ idx๋ฒ ํฌ์ง์ ์ ๋ฐฐ์ ํ๊ณ , (visitied[p]=1, total+=player[p][idx]) DFS ํ์ ํ์ ํด๋น DFS๊ฐ ํ์์ด ์ข ๋ฃ๋๋ฉด ๋ค์ ์ ํํด์ (visited[p]=0, total-=player[p][idx])ํด์ค๋ค.
- ์ด์ ๊ฐ์ DFS ํ์ ๊ณผ์ ์์ idx๊ฐ 11์ด ๋๋ฉด, ์ฆ ๋ชจ๋ ํฌ์ง์ ์ ๊ฐ ์ ์๋ค์ ๋ฐฐ์ ํ๋ฉด total ๊ฐ๊ณผ maxans ๊ฐ์ ๋น๊ตํ์ฌ ์ต๋๊ฐ์ ๊ฐฑ์ ํ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๊ทธ๋ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 14226 ๐ฅ] ์ด๋ชจํฐ์ฝ (1) | 2023.10.16 |
---|---|
[๋ฐฑ์ค 2251 ๐ฅ] ๋ฌผํต (0) | 2023.09.24 |
[๋ฐฑ์ค 25552 ๐ฅ] ์๋ ์์ธกํ๊ธฐ (0) | 2023.09.13 |
[๋ฐฑ์ค 15900 ๐ฅ] ๋๋ฌด ํ์ถ (0) | 2023.09.02 |
[๋ฐฑ์ค 14888 ๐ฅ] ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (1) | 2023.08.31 |