코테/BOJ

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

동 캄 2025. 3. 5. 18:56
반응형

https://www.acmicpc.net/problem/14888

 

# 백준 14888 연산자 끼워넣기


N=int(input()) #총 숫자 갯수
numbers=list(map(int,input().split())) #숫자 배열 저장
opers=list(map(int,input().split())) #연산자 배열 저장
max_ans=-10**9-1 #최댓값 저장
min_ans=10**9+1 #최솟값 저장

def calcul(val,cnt):
    global max_ans 
    global min_ans
    if cnt==N: #연산자 배치가 완료되면
        if val>max_ans:
            max_ans=val
        if val<min_ans:
            min_ans=val
    if opers[0]: #연산자 더하기를 할 수 있는 경우
        val+=numbers[cnt]
        opers[0]-=1
        calcul(val,cnt+1)
        opers[0]+=1
        val-=numbers[cnt]
    if opers[1]: #연산자 빼기를 할 수 있는 경우
        val-=numbers[cnt]
        opers[1]-=1
        calcul(val,cnt+1)
        opers[1]+=1
        val+=numbers[cnt]
    if opers[2]: #연산자 곱하기를 할 수 있는 경우
        val*=numbers[cnt]
        opers[2]-=1
        calcul(val,cnt+1)
        opers[2]+=1
        val//=numbers[cnt]
    if opers[3]: #연산자 나누기를 할 수 있는 경우
        temp=val
        if val<0:
            val=-((-val)//numbers[cnt])
        else:
            val//=numbers[cnt]
        opers[3]-=1
        calcul(val,cnt+1)
        opers[3]+=1
        val=temp
        
start_num=numbers[0] #시작 값 설정
calcul(start_num,1)
print(max_ans)
print(min_ans)

 

반응형