https://www.acmicpc.net/problem/11047
11047번: 동전 0
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
www.acmicpc.net
- 그리디 알고리즘
import Foundation
let input1 = readLine()!.split(separator: " ").map{Int(String($0))!}
let kindsOfCoin = input1[0]
let valueOfCoin = input1[1]
var coins:[Int] = []
for _ in 0 ..< kindsOfCoin {
coins.append(Int(readLine()!)!)
}
var value = valueOfCoin
var countOfCoin = 0
var prevCoinIdx = kindsOfCoin - 1
while value > 0 {
var i = prevCoinIdx
while i >= 0 && value < coins[i] {
i -= 1
}
prevCoinIdx = i
let countCurrent = (value - (value % coins[i])) / coins[i]
countOfCoin += countCurrent
value -= (countCurrent * coins[i] )
}
print(countOfCoin)
'개발 > 코딩' 카테고리의 다른 글
백준 - 보물 - Swift (0) | 2022.07.10 |
---|---|
백준 - 회의실 배정 - Swift (0) | 2022.07.10 |
백준 - ATM - Swift (0) | 2022.07.10 |
백준 - 설탕 배달 - Swift (0) | 2022.07.10 |
해커랭크(HackerRank) - Almost Sorted // C++ (0) | 2021.05.19 |
댓글