반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 "백준 BOJ - 11047 동전 0" 문제를 풀었습니다.


Github

 

GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

github.com

 

문제 링크

 

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

 


풀이

이번 문제는 그리디 알고리즘을 이용한 문제입니다.

그리디 알고리즘의 예제로 많이 나오는 유형인데요. 저도 그리디 알고리즘을 연습하고자 이 문제를 찾게 되었습니다.

 

오름차순으로 입력된 화폐를 내림차순으로 정렬합니다.

높은 가치의 화폐부터 카운트를 해서 코인의 개수를 세면 최소 개수의 결과를 얻을 수 있습니다.

 


전체 코드


      
//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)")

아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

 

반응형
유정주