Algorithm(CodeTree, Python)/Backtracking
[코드트리] 알파벳과 사칙연산 Python
by kurooru
2023. 1. 29.
# 식 입력
a = input()
# 함수들
# get_num(curr_a)
def get_num(curr_a):
# ans
ans = curr_a[0]
for i in range(len(curr_a)):
# -를 만나면
if curr_a[i] == '-':
# ans update
ans = ans - curr_a[i+1]
# +를 만나면
elif curr_a[i] == '+':
# ans update
ans = ans + curr_a[i+1]
# *를 만나면
elif curr_a[i] == '*':
# ans update
ans = ans * curr_a[i+1]
# 반환
return ans
# calc(curr_alphabets)
def calc(curr_alphabets):
# curr_a
curr_a = []
# mapper
mapper = {
'a': curr_alphabets[0],
'b': curr_alphabets[1],
'c': curr_alphabets[2],
'd': curr_alphabets[3],
'e': curr_alphabets[4],
'f': curr_alphabets[5],
'-': '-',
'+': '+',
'*': '*'
}
# a를 돌면서
for i in a:
# curr_a에 추가
curr_a.append(mapper[i])
# 반환
return get_num(curr_a)
# simulate(curr_idx)
def simulate(curr_idx):
# 전역변수 선언
global max_num
# 종료조건
if curr_idx == 7:
# max_num update
max_num = max(max_num, calc(alphabets))
return
# 숫자 넣어주기
for i in range(1, 5):
alphabets.append(i)
simulate(curr_idx + 1)
alphabets.pop()
# 설계
# alphabets
alphabets = []
# max_num
max_num = 0
# simulate
simulate(1)
# 출력
print(max_num)