import Foundation

/*
 동전 종류 N
 가치의 합 K
 
 K원을 만드는데 필요한 동전 개수의 최솟값은?
 */

let firstInputItems = readLine()!.components(separatedBy: " ").map { Int($0)! }
let kinds = firstInputItems[0]
var sum = firstInputItems[1]
var elements = [Int]()

elements = Range(0 ... kinds - 1)
  .map { _ in Int(readLine()!)! }
  .reversed()

var count = 0

elements
  .forEach { element in
    let value = sum / element
    
    if value > 0 {
      count += value
      sum -= element * value
    }
    
    if sum == 0 {
      return
    }
  }

print(count)

 

해설

입력값을 받아놓고 큰 값부터 처리하기 위해 reversed()를 사용했고 큰값으로 나눈 몫을 동전의 총 가치에서 빼주는 작업을 sum이 0이 될때 까지 진행합니다.

반응형

+ Recent posts