https://www.acmicpc.net/problem/16637
16637번: 괄호 추가하기
길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순
www.acmicpc.net
문제 접근
괄호를 넣지않고 미리 계산하는 방식으로 dfs를 써서 구현했다.
괄호를 쓰지않는경우, 4칸을 묶는경우, 그 이상 묶는경우 3가지로 구분했다.
괄호를 쓰지않으면 처음 인덱스에서 2칸을 건너가면 된다.
괄호를 쓰는경우 4칸을 건너가서 묶어 계산하면 되고
만약 그이상 묶는경우라면 굳이 6칸을 묶을필요없이 4칸묶고 2칸묶는것과 결과가 같다.
그래서 4칸묶기와 2칸묶기 경우로 나눠서 dfs를 만들었더니 해결됐다.
푸는도중 연산을 어떡할까 하다가 eval로 해결된다는걸 검색후에 알았다.
코드
import sys
input = sys.stdin.readline
N = int(input())
exp = input()
ans = float("-inf")
#4칸뒤까지 계산먼저 하고 2칸뒤 계산으로 재귀 반복
def dfs(i, val):
global ans
if i >= N:
ans = max(ans, eval(val))
return
if i + 4 <= N:
dfs(i + 4, str(eval(str(val) + exp[i] + str(eval(exp[i+1:i + 4])))))
if i + 2 <= N:
dfs(i + 2, str(eval(val + exp[i:i + 2])))
dfs(1, exp[0])
print(ans)
'백준 > 문제풀이_python' 카테고리의 다른 글
13537 수열과 쿼리 1 python (0) | 2024.02.01 |
---|---|
14427 수열과 쿼리 15 (0) | 2024.01.31 |
16566 카드 게임 (python) (0) | 2023.11.22 |
15686 치킨 배달 (python) (0) | 2023.11.19 |
9663 N_Queen (python) (0) | 2023.11.18 |
댓글