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