[14888] 연산자 끼워넣기

toru·2022년 10월 1일
0
let n = Int(readLine()!)!
let arr = readLine()!.split(separator: " ").map{Int(String($0))!}
var asmd = readLine()!.split(separator: " ").map{Int(String($0))!}
var max = Int.min
var min = Int.max

func dfs(_ index:Int,_ sum:Int) {
    if n == index {
        if max < sum {
            max = sum
        }
        if min > sum {
            min = sum
        }
    }
    // sum을 나눈다.
    for i in 0..<4 {
        if asmd[i] != 0 {
            asmd[i] -= 1
            switch i {
            case 0 : dfs(index+1, sum + arr[index])
            case 1 : dfs(index+1, sum - arr[index])
            case 2 : dfs(index+1, sum * arr[index])
            default: dfs(index+1, sum / arr[index])
            }
            asmd[i] += 1
        }
    }
}
dfs(1, arr[0])
print(max,min)
profile
iOS

0개의 댓글