Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- aws
- rds
- SageMaker
- Validation
- sns
- fcm
- kubernetes
- IaC
- Lamda
- serverless
- cloudwatch
- terraform
- lambda
- 병목
- amazonqcli
- CHECK
Archives
- Today
- Total
잡다한 IT 지식
백준 - 동전 0 본문
본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.
https://github.com/ROUTINE-STUDY/Algorithm
저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.
GitHub - ROUTINE-STUDY/Algorithm: 초보 알고리즘 스터디 / 누구나 참여 가능
초보 알고리즘 스터디 / 누구나 참여 가능 :runner:. Contribute to ROUTINE-STUDY/Algorithm development by creating an account on GitHub.
github.com
문의는 댓글 바람.
문제 출처 : https://www.acmicpc.net/problem/11047
[문제 설명]
동전을 최소한 사용해서 금액을 만들어라.
[접근 방법]
매우 자주 나오는 그리디 대표 문제.
단, 조건을 무조건 확인하고 풀어야 한다.
위와 같은 조건이 없다면 다른 방법을 찾아봐야 한다.
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val (N, K) = readLine().split(" ").map { it.toInt() }
val arrOfCoin = IntArray(N) { readLine().toInt() }
// 남은 비용
var remainCost = K
// 현재 사용할 동전의 인덱스
var idx = arrOfCoin.size - 1
// 현재 사용한 동전 개수
var cntOfCoin = 0
// while : 남은 금액이 0보다 큰동안
while (remainCost > 0) {
// 만약, 동전을 다썼는데 돈이 남으면 거스를 수 없는 금액이다.
if (idx !in arrOfCoin.indices) {
cntOfCoin = -1
break
}
// 사용한 동전 개수 추가
cntOfCoin += (remainCost / arrOfCoin[idx])
// 거슬러준만큼 남은 금액 빼기
remainCost -= arrOfCoin[idx] * (remainCost / arrOfCoin[idx])
// 동전의 인덱스 감소
idx--
}
println(cntOfCoin)
}
'알고리즘 문제 풀이 > 그리디' 카테고리의 다른 글
백준 - 주유소(Kotlin) (0) | 2022.09.19 |
---|---|
백준 - 팰린드롬 만들기(Kotlin) (0) | 2022.08.01 |
17509 And the Winner Is... Ourselves! (0) | 2021.10.29 |
4796 캠핑 (0) | 2021.10.29 |
1449 수리공 항승 (0) | 2021.10.29 |