본문 바로가기

코테/Greedy17

[C/C++] 나동빈 숫자 카드 게임, Greedy 문제 숫자 카드 게임은 세로N개, 가로M개 형태로 놓인 카드들 사이에서 가장 큰 수가 적힌 카드를 뽑는 게임이다. 이 게임의 규칙은 아래와 같다 1. 먼저 뽑고자 하는 카드가 있는 행을 선택한다. 2. 그 다음 그 행에 포함된 카드들 중에서 가장 낮은 수가 적힌 카드를 뽑는다. 따라서, 전체 행렬에서 큰 수가 아닌 하나의 행에서 가장 낮은 수를 고려하여 뽑아야 한다. 예를들어 카드가 아래와 같이 나열되어 있다고 하자. 3 1 2 4 1 4 2 2 2 전체 행렬에서 가장 큰 수는 4지만, 4가 포함된 행의 가장 낮은 수는 1이므로 최종 수는 1이 된다. 첫 번째 행의 최종 숫자도 마찬가지이다. 마지막 행의 가장 큰 수는 2이지만, 가장 낮은 수도 2이므로 마지막 행을 선택해야 2가 도출되어 이길 수 있다... 2023. 2. 2.
[C/C++] 나동빈 가장 큰 수 만들기, Greedy 문제 다양한 숫자들로 구성된 배열이 있을 때, 주어진 수를 M번 더하여 가장 큰 수를 만들되, 해당 숫자의 인덱스에 해당하는 수가 연속 K번 초과하여 더해질 수 없다. 예시1) N={2, 4, 5, 4, 6}, M=8, K=3 정답: 6+6+6+5+6+6+6+5=46 예시2) N={3, 4, 3, 4, 3}, M=7, K=2 정답: 4+4+4+4+4+4+4=28 첫 번째 줄에 배열의 크기 N(2≤N≤1,000), M(1≤M≤10,000), K(1≤K≤10,000)의 자연수가 주어지며 각 자연수는 공백으로 구분한다. 두 번째 줄에 자연수인 배열의 원소가 주어지며 각 원소는 공백으로 구분한다. K는 항상 M보다 작거나 같아야 한다. 코드 #include #include #include #include #in.. 2023. 2. 2.
[C/C++] 나동빈 거스름돈, Greedy 문제 거슬러줘야 할 돈이 N원일 때, 거스름돈으로 사용할 동전 500원, 100원, 50원 그리고 10원을 조합한 동전의 최소 개수를 구하라. 단, N은 항상 10의 배수이다. 코드 #include #include using namespace std; int coin[4] = { 500,100,50,10 }; int main() { int N, sum = 0; cin >> N; for (int i = 0; i < 4; i++) { sum += N / coin[i]; N %= coin[i]; } cout 2023. 2. 2.
[C/C++] 백준 11047, Greedy 문제 11047번: 동전 0 (acmicpc.net) 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 코드1 #include #include #include #include using namespace std; int main() { int n, k; int t; int m = 0; vector arr, cnt; //arr:동전의 액면가, cnt: 동전의 개수 scanf("%d %d", &n, &k); for (int i = 0; i < n; i+.. 2022. 12. 10.
[C/C++] 백준 2839, Greedy 2839번: 설탕 배달 (acmicpc.net) 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net #include #include using namespace std; int main() { int n; int a, b; scanf("%d", &n); //2. a는 쓸 수 있는 최대 갯수의 5kg짜리 봉지의 수/ b=0 a = n / 5; b = 0; while (a >= 0) { //남은 무게: 전체 무게 - 5kg으로 만들 수 있는 무게 //n-5*a if ((n - 5 * a) % 3 == 0) { b = (n - .. 2022. 12. 10.