쥐수의 공부노트
백준 14888번 연산자 끼워넣기 본문
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 |