쥐수의 공부노트

백준 14888번 연산자 끼워넣기 본문

swift 알고리즘/백트래킹

백준 14888번 연산자 끼워넣기

쥐수 2023. 7. 25. 15:05
728x90

정답 :

let n = Int(readLine()!)!

let num = readLine()!.split(separator: " ").map{Int($0)!}
var oper = readLine()!.split(separator: " ").map{Int($0)!}
var maxValue = Int.min
var minValue = Int.max

func compare(check : Int, d : Int) {
    if d == n {
        maxValue = max(maxValue, check)
        minValue = min(minValue, check)
        return
    }
    for i in 0..<4 {
        if oper[i] < 1 {
            continue
        }
        oper[i] -= 1
        switch i {
        case 0 : compare(check: check + num[d], d: d + 1)
        case 1 : compare(check: check - num[d], d: d + 1)
        case 2 : compare(check: check * num[d], d: d + 1)
        case 3 : compare(check: check / num[d], d: d + 1)
        default:
            break
        }
        oper[i] += 1
    }
    
}
compare(check: num[0], d: 1)

print(maxValue)
print(minValue)

해당 문제는 switch문을 이용하여 i가 몇인지에 따라 사칙연산을 나눴다.

 

0이면 +, 1이면 -, 2면 *, 3이면 / 를 진행하고 다음으로 넘어간다.

 

넘어갈때마다 max값과 min 값을 재설정 하는 방법!

728x90

'swift 알고리즘 > 백트래킹' 카테고리의 다른 글

백준 14889번 스타트와 링크  (0) 2023.07.25
백준 15652번 N과 M(4)  (0) 2023.07.18
백준 15651번 N과 M (3)  (0) 2023.07.14
백준 15650번 N과 M(2)  (0) 2023.07.12
백준 15649번 N과 M (1)  (0) 2023.07.12