728x90
Backtracking으로 문제를 해결해 봤다.
📚TroubleShooting🫧
- 초기값을 0으로 잡았는데 이 경우에 음수 최대값을 찾을 수 없어서 문제가 있어 초기값을 음수로 세팅했다.
- 알파벳의 종류와 관계 없어 숫자를 배당했는데 오류가 생겼다. 예를 들어 a+a+a 일 때 3 + 3 + 3 뿐만 아니라 1 + 2 + 3도 계산해 버린것! ➡️ 변수 사전을 만들어 해결했다.
import sys
def plus(a, b):
return a + b
def minus(a, b):
return a - b
def product(a, b):
return a * b
# input 처리
eq = list(input())
ops_map = {
"+": 1,
"-": 1,
"*": 1
}
# input에 몇개의 알파벳과 기호가 있는 지 확인
total_symbol_count = 0
symbol_dict = {}
ops = []
total_sym = 0
sym_arr = []
for e in eq:
if e in ops_map:
total_symbol_count += 1
ops.append(e)
else:
if e not in symbol_dict:
symbol_dict[e] = total_sym
total_sym += 1
max_val = -sys.maxsize
def recursion(count):
global max_val
if count == total_sym:
eq_copy = eq[:]
val = sym_arr[symbol_dict[eq_copy.pop(0)]]
while eq_copy:
temp = eq_copy.pop(0)
if temp in ops_map:
num = sym_arr[symbol_dict[eq_copy.pop(0)]]
if temp == "+":
val = plus(val, num)
elif temp == "-":
val = minus(val, num)
elif temp == "*":
val = product(val, num)
if max_val < val:
max_val = val
return
for i in range(1, 5):
sym_arr.append(i)
recursion(count + 1)
sym_arr.pop()
recursion(0)
print(max_val)
728x90
'TIL' 카테고리의 다른 글
[2024.9.7 - 9.8] TIL - SQL 마스터 클라스, 코드트리 (5) | 2024.09.08 |
---|---|
[2024.9.3] TIL - SQL 마스터 클라스, 코드트리 (0) | 2024.09.03 |
[코드트리] 2명의 도둑 (0) | 2024.09.02 |
[2024.8. 31] TIL - SQL 마스터 클라스 (0) | 2024.08.31 |
[코드트리 조별과제] 사다리 타기 (0) | 2024.08.18 |