ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ฌธ์ ๋ ๊ตฌ์ฌ๋ค ์ค์ ํน์ ๊ตฌ์ฌ์ ์ ๊ฑฐํ๊ณ , ์ ๊ฑฐํ ๊ตฌ์ฌ ์ฃผ์์ ๊ฐ๋ค์ ๊ณฑํ๋ ๋ฐฉ์์ ํตํด ๊ตฌ์ฌ์ด 2๊ฐ๊ฐ ๋ ๋๊น์ง ๊ณ์ํด์ ์งํํ์ฌ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ์์ ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์๊ฐํ ์ ์๋ค.
๊ทธ๋ฆผ์ ์์ ์ ๋ ฅ 1์์ ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ํ๋ธ ๊ฒฝ์ฐ์ด๋ค. ๊ตฌ์ฌ์ด 4๊ฐ ์ด๋ฏ๋ก ๋ฐ์ํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ 2๊ฐ์ง๊ฐ ๋๋ค. ๊ทธ๋ฆผ์์ ์ ์ ์๋ฏ์ด ์ด๋ค ๊ตฌ์ฌ์ ๋จผ์ ์ ๊ฑฐํ๋๋์ ๋ฐ๋ผ ๊ฒฝ์ฐ์ ์๊ฐ ๋ฌ๋ผ์ง๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฐฑํธ๋ํน์ ํตํด ๊ฐ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
์ฝ๋
from sys import stdin
def dfs(sum_bead):
global answer
if len(beads) == 2:
answer = max(answer, sum_bead)
return
for i in range(1, len(beads) - 1):
value = beads[i - 1] * beads[i + 1]
origin = beads[i]
del beads[i]
dfs(sum_bead + value)
beads.insert(i, origin)
if __name__ == '__main__':
answer = 0
n = int(stdin.readline())
beads = list(map(int, stdin.readline().split()))
dfs(0)
print(answer)
`visited` ๋ฐฐ์ด์ ํตํด ๊ฐ ์ธ๋ฑ์ค์ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ณ , i ๊ฐ์ ๊ณ์ฐํ์ฌ๋ ๋์ง๋ง n์ด ์ต๋ 10์ด๋ฏ๋ก `insert`, `del`์ ๋ํ ์ค๋ฒํค๋๊ฐ ํฌ์ง ์์ผ๋ฏ๋ก ์ดํดํ๊ธฐ ์ฝ๊ณ ๊ฐํธํ ๋ฐฉ์์ ์ฌ์ฉํ์๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 13459 ๊ตฌ์ฌ ํ์ถ (0) | 2020.08.07 |
---|---|
๋ฐฑ์ค: 1987 ์ํ๋ฒณ (0) | 2020.08.06 |
๋ฐฑ์ค: 2580 ์ค๋์ฟ (0) | 2020.08.05 |
๋ฐฑ์ค: 16933 ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ 3 (0) | 2020.08.04 |
๋ฐฑ์ค: 14442 ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ 2 (0) | 2020.08.03 |