ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์์์ด ์ฃผ์ด์ง ๋, ๊ดํธ๋ฅผ ์ถ๊ฐํ์ฌ ์ต๋๊ฐ ๋๋ ์๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ๊ดํธ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์๋ 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
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2133 ํ์ผ ์ฑ์ฐ๊ธฐ (0) | 2020.10.09 |
---|---|
๋ฐฑ์ค: 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ (0) | 2020.10.06 |
๋ฐฑ์ค: 17070 ํ์ดํ ์ฎ๊ธฐ๊ธฐ 1 (0) | 2020.10.05 |
๋ฐฑ์ค: 1655 ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ (0) | 2020.10.04 |
๋ฐฑ์ค: 2606 ๋ฐ์ด๋ฌ์ค (0) | 2020.10.04 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ