어려웠다 .....
다른 사람 풀이 무진장 많이 봤다...😇
고장나지 않은 버튼을 사용해서 누를 수 있는 채널 중
이동하려는 채널과 가장 가까운 채널을 찾아 이동하는 횟수를 구해주어야한다.
예를 들어 이동하려는 채널이 5457이고 고장난 버튼이 [6,7,8] 이라면
따라서, 이동하는 최솟값은 두 가지 경우 중 최솟값이고 이 경우는 6이다.
import Foundation
let channel = Int(readLine()!)!
let NumOfWrongButton = Int(readLine()!)!
var wrongButtons = [Int]()
if NumOfWrongButton != 0 {
    wrongButtons = readLine()!.split(separator: " ").map { Int(String($0))! }
    getNum()
} else {
    let a = String(channel).count
    let b = abs(100 - channel)     
    a < b ? print(a) : print(b)
}
func getNum() {
    var buttons = Array(repeating: false, count: 10)
    for i in wrongButtons {
        buttons[i] = true
    }
    
    var max = -1
    var min = -1
    
    for i in (0...channel).reversed() {
        var mode = true
        var N = i
        while N >= 0 {
            if buttons[N % 10] {
                mode = false
                break
            } else {
                N = N / 10
            }
            if N == 0 {
                break
            }
        }
        
        if mode {
            max = N
            break
        }
    }
    
    for i in channel...1000000 {
        var mode = true
        var N = i
        while N >= 0 {
            if buttons[N % 10] {
                mode = false
                break
            } else {
                N = N / 10
            }
            if N == 0 {
                break
            }
        }
        
        if mode {
            min = i
            break
        }
    }
    
    if max == -1 {
        max = 1000000
    } else {
        max = channel - max + String(max).count
    }
    
    if min == -1 {
        min = 1000000
    } else {
        min = abs(channel - min) + String(min).count
    }
    
    let mid = abs(100-channel)
    
    print([max,min,mid].min()!)
}
통과한 뒤에
진짜진짜 멋있는 다른 분의 풀이를 봐서 참고하여 수정한 풀이입니당
제 지분은,한 2프로...