[백준 14888번][Python/파이썬] 연산자 끼워넣기

공학도 Lee·2023년 2월 9일
0

백준 문제 풀이

목록 보기
40/63
post-custom-banner

1. 문제


출처: 백준 14888번 연산자 끼워넣기

2. 풀이


다행히도, 곱하기와 나누기의 연산 우선순위가 없기 때문에 문제를 단순하게 접근할 수 있다.

숫자를 하나씩 뽑아서, 남아있는 연산자 중 하나를 이용해 계산해 나가는 DFS를 구성하면 된다.

모든 숫자를 다 사용했다면, 전역변수로 사용하고 있는 최대, 최솟값과 비교해서 값을 업데이트해주면 된다.

3. 소스코드


case = int(input())
numbers = list(map(int,input().split()))
four=list(map(int,input().split()))

max_value = -1e9
min_value = 1e9

def dfs(i, value):
    global max_value, min_value
    if i == case:
        max_value = max(max_value,value)
        min_value = min(min_value,value)
        
    else:
        if four[0] > 0:
            four[0] -= 1
            dfs(i+1, value+numbers[i])
            four[0] += 1
        if four[1] > 0:
            four[1] -= 1
            dfs(i+1, value-numbers[i])
            four[1] += 1
        if four[2] > 0:
            four[2] -= 1
            dfs(i+1, value*numbers[i])
            four[2] += 1
        if four[3] > 0:
            four[3] -= 1
            dfs(i+1, int(value/numbers[i]))
            four[3] += 1

dfs(1,numbers[0])
print(max_value)
print(min_value)

4. 그 외


profile
이창민, Changmin Lee
post-custom-banner

0개의 댓글