본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 2798번 (블랙잭)

by Joahnee 2021. 8. 18.

요구능력 : 경우의수를 전부따지는 브루트포스 알고리즘에 대해 알고있느냐

 

코드설명 : 

입력받은 n개의 수를 모두 더해보면서 m을 넘지않고, 현재 더한 3개의 수가 이전에 구한 sum보다 크다면,

이전에 구한 sum보다 m의 값에 가깝다는 의미이므로 이 때, sum변수에 넣도록 하였다.

 

후기 : 브루트포스라는 이름이 어려운 알고리즘인줄 알았는데 그냥 단순한 모든경우의수를 따져보는 알고리즘이었다..

 

let arr = readLine()!.split(separator: " ").map{ Int($0)! }
let n = arr[0]
let m = arr[1]
var suArr = readLine()!.split(separator: " ").map{Int($0)!}
var sum = 0

for i in 0..<n {
    for j in i+1..<n {
        for k in j+1..<n {
            if suArr[i] + suArr[j] + suArr[k] <= m {
                if suArr[i] + suArr[j] + suArr[k] > sum {
                    sum = suArr[i] + suArr[j] + suArr[k]
                }
                
            }
        }
    }
    
}
print("\(sum)")

댓글