ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

16198๋ฒˆ: ์—๋„ˆ์ง€ ๋ชจ์œผ๊ธฐ

N๊ฐœ์˜ ์—๋„ˆ์ง€ ๊ตฌ์Šฌ์ด ์ผ๋ ฌ๋กœ ๋†“์—ฌ์ ธ ์žˆ๊ณ , ์—๋„ˆ์ง€ ๊ตฌ์Šฌ์„ ์ด์šฉํ•ด์„œ ์—๋„ˆ์ง€๋ฅผ ๋ชจ์œผ๋ ค๊ณ  ํ•œ๋‹ค. i๋ฒˆ์งธ ์—๋„ˆ์ง€ ๊ตฌ์Šฌ์˜ ๋ฌด๊ฒŒ๋Š” Wi์ด๊ณ , ์—๋„ˆ์ง€๋ฅผ ๋ชจ์œผ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ๋ฐ˜๋ณตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๏ฟฝ

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ๋ฌธ์ œ๋Š” ๊ตฌ์Šฌ๋“ค ์ค‘์— ํŠน์ • ๊ตฌ์Šฌ์„ ์ œ๊ฑฐํ•˜๊ณ , ์ œ๊ฑฐํ•œ ๊ตฌ์Šฌ ์ฃผ์œ„์˜ ๊ฐ’๋“ค์„ ๊ณฑํ•˜๋Š” ๋ฐฉ์‹์„ ํ†ตํ•ด ๊ตฌ์Šฌ์ด 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`์— ๋Œ€ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€