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 |
Tags
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과정
- 플러터 #flutter #restful #rest api
- flutter #app #취준
- 백준 #boj #baekjoon
- 백준
- flutter #플러터
- unity #2d-game #minigame #vscode
- unity #2d-game
- flutter #git
- 비주얼스튜디오 #코드스니펫
- firebase #파이어베이스
- flutter #todolist
- git #unity #깃허브
- Flutter
- 백준 #c++
- VS #비주얼스튜디오
- flutter #상태관리
- flutter #깃
- boj #baekjoon
- 로컬저장소 #이름변경
- flutter #firebase #플러터 #파이어베이스 #연동
- boj #c++
- 백준 #boj
- baekjoon #boj #c++
- flutter #플러터 #분석
- 유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과
- 비주얼 스튜디오 #vs #visual studio
- 인턴 #프론트엔드 #개발자 #프론트엔드개발자 #취준
- baekjoon #백준 #boj
- boj #baekjoon #c++
Archives
- Today
- Total
cococo-coding
[C++풀이] 11047번. 동전 0 본문
문제 분석
그리디 알고리즘 문제이다. 이 문제로 처음 접했는데, 그 순간의 최적의 해를 구하는 알고리즘이다.
보통 위와 같이 '최대한 적은~ 최대한 많은~' 이런 문제형태로 나온다고 한다.
이 문제 역시 가장 적은 동전 개수로 k를 구하는 문제이다.
벡터에 동전가치들을 넣고, for문으로 k를 나눈 몫과 나머지를 계속해서 구하면 된다.
알고리즘 설계
int형 벡터를 이용해 동전 가치를 입력받아 초기화한다.
벡터의 끝부터 k를 나눠본다.
나눈 몫은 동전의 개수가 되므로 coin에 누적해서 쌓고,
나눈 나머지는 새로운 k로 넣어주는 방식으로 계속해서 k를 나눈다.
만약 k가 0이 되면 break로 반복문을 탈출한다.
코드
#include <iostream>
#include <vector>
using namespace std;
/*
그리디 알고리즘
1. 동전종류n와 만들어야하는 수k 를 입력받는다
2. 동전의 가치를 입력받는다
3. k원을 최소한의 동전으로 구현한다
4. 동전개수를 출력한다.
*/
int main() {
//1
int n, k;
cin >> n >> k;
//2
vector <int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
//3
int coin = 0;
for (int j = n - 1; j >= 0; j--) {
coin += (k / v[j]);
k = k % v[j];
if (k == 0) {
//cout << "Coin개수: " << coin << '\n';
break;
}
}
cout << coin << '\n';
return 0;
}
느낀 점
처음에는 벡터의 0 인덱스부터 시작해서 v[i]>k 가 되는 순간의 v[i-1]로 위의 과정을 시도했다. 그러나 이 경우에는 벡터가 작은 것->큰 것으로 올라가기때문에 오히려 계산이 복잡해졌다.
그래서 벡터를 거꾸로 큰 인덱스부터 내려오면서 계산을 하니 코드가 훨씬 간편해졌다.
그리디 알고리즘이라는 용어도 처음 접했는데, 지금까지 풀었던 문제에도 적용했던 개념이었다.
앞으로는 알고리즘 공부도 시작해야겠다.
'[BOJ] 코드 모음 > C++_learning 문제집' 카테고리의 다른 글
[C++ 풀이] 10953번. A+B - 6 (0) | 2024.01.26 |
---|---|
[C++ 풀이] 1357번. 뒤집힌 덧셈 (1) | 2024.01.26 |
[C++ 풀이] 11944번. NN (0) | 2024.01.25 |
[C++ 풀이] 5218번. 알파벳 거 (0) | 2024.01.24 |
[C++ 풀이] 11365번. !밀비 급일 (0) | 2024.01.24 |