반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "백준 BOJ - 11047 동전 0" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 그리디 알고리즘을 이용한 문제입니다.
그리디 알고리즘의 예제로 많이 나오는 유형인데요. 저도 그리디 알고리즘을 연습하고자 이 문제를 찾게 되었습니다.
오름차순으로 입력된 화폐를 내림차순으로 정렬합니다.
높은 가치의 화폐부터 카운트를 해서 코인의 개수를 세면 최소 개수의 결과를 얻을 수 있습니다.
전체 코드
//11047 동전 0
import Foundation
let input1 = readLine()!.split(separator: " ").map { Int(String($0))! }
let count = input1[0]
var sum = input1[1]
var coins: [Int] = []
var coinCount = 0
for _ in 0..<count {
let input = Int(readLine()!)!
coins.append(input)
}
coins.sort(by: >)
for coin in coins {
if sum >= coin {
coinCount += (sum / coin)
sum %= coin
}
}
print("\(coinCount)")
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형