[python_파이썬_Fail_미해결]백준_14888번_연산자 끼워넣기_백트레킹_풀이

2024. 8. 26. 20:53코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/WSAIqn6prZQ?feature=shared

<첫번째 시도 : 틀렸습니다.>

총 1시간 이상 고민한 것 같은데 아직 해결을 못했다.

어떻게 백 트레킹으로 구현해야하는지도 감이 잡히지 않는다.

eval()을 활용해서 연산의 결과 값을 구하는 코드를 작성하였다.

※ 이 문제의 조건은 일반적인 연산 법칙을 따르는 것이 아닌 순서대로 연산을 하는게 주요 포인트이다. => 그래서 틀림.

#첫번째 시도 : 연산자를 순서대로 계산하는 조건 불만족
N = int(input())
nums = list(map(int, input().split()))
oper_num = list(map(int, input().split()))
oper = ["+", "-", "*", "//"]

new_oper = []

for i in range(len(oper)):
    if oper_num[i] > 0:
        new_oper.extend(list(oper[i] * oper_num[i]))
       
check_oper = list(i for i in itertools.permutations(new_oper, len(new_oper)))

answer = []

for i in range(len(check_oper)):
    result = []
    for j in range(len(nums)):
        if j < len(nums) - 1:
            result.append(nums[j])
            result.append(check_oper[i][j])
        else:
            result.append(nums[j])
    answer.append(eval("".join(map(str, result))))

print(max(answer))
print(min(answer))

 

728x90
반응형