티스토리 뷰
반응형
거스름돈에 포함되는 잔돈의 갯수가 몇 개인지 구하는 문제
문제의 조건
1. 1원 이상 1000원 미만의 지불해야 하는 금액이 주어진다.
2. 잔돈의 종류는 500, 100, 50, 10, 5, 1원이 있다.
2. 1000원 짜리를 냈을 때 받을 거스름돈에서 각 잔돈을 몇 개를 써서 받으면 최소로 받는지 구해서 출력
풀이 과정
앞서 풀었던 몇 문제와 비슷하게 남은 돈에서 가능한 가장 큰 액수의 잔돈을 먼저 뺀 다음에
그 다음 작은 액수의 잔돈과 비교해서 또 빼고 하는 방식으로 잔돈의 갯수를 구했습니다.
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, const char * argv[])
{
int N;
cin >> N;
vector<int> changes{500, 100, 50, 10, 5, 1};
int change = 1000 - N;
int answer = 0;
int i = 0;
while (0 < change)
{
if (changes[i] <= change)
{
//현재 인덱스의 잔돈을 최대 몇 개까지 포함할 수 있는지 구한다.
int count = change / changes[i];
answer += count;
//구하고 나면 그만큼 남은 돈에서 빼기
change -= count * changes[i];
}
else
{
i++; //현재 인덱스가 남은 돈보다 크면 다음 인덱스(더 작은 값) 탐색
if (changes.size() <= i)
i = changes.size() - 1;
}
}
cout << answer;
return 0;
}
반응형
'알고리즘 문제 풀이 > Greedy' 카테고리의 다른 글
[C++] 백준 온라인 저지 10162번 전자레인지 풀이 (0) | 2021.10.24 |
---|---|
[C++] 백준 온라인 저지 2217번 로프 풀이 (0) | 2021.10.23 |
[C++] 백준 온라인 저지 1541번 잃어버린 괄호 풀이 (0) | 2021.10.22 |
[C++] 백준 온라인 저지 1026번 보물 풀이 (0) | 2021.10.22 |
[C++] 백준 온라인 저지 1931번 회의실 배정 풀이 (0) | 2021.10.21 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래밍
- 알고리즘
- 컴퓨터사이언스
- 문제풀이
- BFS
- DFS
- 컴퓨터
- 아이패드
- 영어공부
- 캐나다생활
- greedy
- 애플
- 스위프트플레이그라운드
- 하드웨어
- 프로그래머스
- c언어
- dp
- hackerrank
- 해커랭크
- c++
- 백준
- 다이나믹프로그래밍
- 기초
- 캐나다
- C언어기초
- 깊이우선탐색
- 컴퓨터공부
- 코딩공부
- 그리디
- 너비우선탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함