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

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

16637๋ฒˆ: ๊ด„ํ˜ธ ์ถ”๊ฐ€ํ•˜๊ธฐ

์ฒซ์งธ ์ค„์— ์ˆ˜์‹์˜ ๊ธธ์ด N(1 ≤ N ≤ 19)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ˆ˜์‹์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜์‹์— ํฌํ•จ๋œ ์ •์ˆ˜๋Š” ๋ชจ๋‘ 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 9๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ž์—ด์€ ์ •์ˆ˜๋กœ ์‹œ์ž‘ํ•˜๊ณ , ์—ฐ์‚ฐ์ž์™€ ์ •์ˆ˜๊ฐ€

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ˆ˜์‹์ด ์ฃผ์–ด์งˆ ๋•Œ, ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ˆ์ œ ์ž…๋ ฅ 1์˜ ๊ฒฝ์šฐ `3 + 8 * 7 - 9  * 2`๋ฅผ ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ `DFS`๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • ๋‘์ˆ˜ ์‚ฌ์ด์— ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ž ๊ธฐํ˜ธ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • `(3 + 8) * 7 - 9 * 2`์™€ ๊ฐ™์ด ๊ฐ€์žฅ ์•ž์˜ ์—ฐ์‚ฐ์ž๋ถ€ํ„ฐ ์šฐ์„  ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • `3 + (8 * 7) - 9 * 2`์™€ ๊ฐ™์ด ๋‹ค์Œ์˜ ์—ฐ์‚ฐ์ž๋ฅผ ์šฐ์„  ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

์ฝ”๋“œ

from math import inf
from sys import stdin


def dfs(idx, sub_total):
    global answer

    if idx == len(op):
        answer = max(answer, int(sub_total))
        return

    # (3 + 8) * 7 - 9 * 2 ๋ถ€ํ„ฐ ์‹œ์ž‘.
    first = str(eval(sub_total + op[idx] + nums[idx + 1]))
    dfs(idx + 1, first)

    if idx + 1 < len(op):
        # 3 + (8 * 7) - 9 * 2 ๋ถ€ํ„ฐ ์‹œ์ž‘
        second = str(eval(nums[idx + 1] + op[idx + 1] + nums[idx + 2]))
        second = str(eval(sub_total + op[idx] + second))
        # op๋ฅผ 2๊ฐœ ์†Œ๋ชจํ–ˆ์œผ๋ฏ€๋กœ idx + 2
        dfs(idx + 2, second)


if __name__ == '__main__':
    n = int(stdin.readline())
    expression = stdin.readline().rstrip()
    nums, op = [], []
    answer = -inf

    for e in expression:
        nums.append(e) if e.isdigit() else op.append(e)

    dfs(0, nums[0])
    print(answer)

 ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž ์ฒ˜๋ฆฌ๋ฅผ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด, ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์˜€๋‹ค. ๋˜ํ•œ `3+4`์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ `eval`๋กœ ์ฒ˜๋ฆฌํ•ด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ณด๊ธฐ ์ข‹์•„์กŒ๋‹ค.๐Ÿ™‚

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