πŸ™‡β€β™€οΈ[Silver IV] 동전 0 - 11047

문제 링크

μ„±λŠ₯ μš”μ•½

λ©”λͺ¨λ¦¬: 2020 KB, μ‹œκ°„: 0 ms

λΆ„λ₯˜

그리디 μ•Œκ³ λ¦¬μ¦˜

제좜 일자

2023λ…„ 12μ›” 27일 10:00:26

문제 μ„€λͺ…

μ€€κ·œκ°€ 가지고 μžˆλŠ” 동전은 총 Nμ’…λ₯˜μ΄κ³ , 각각의 동전을 맀우 많이 가지고 μžˆλ‹€.

동전을 적절히 μ‚¬μš©ν•΄μ„œ κ·Έ κ°€μΉ˜μ˜ 합을 K둜 λ§Œλ“€λ €κ³  ν•œλ‹€. μ΄λ•Œ ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 Nκ³Ό Kκ°€ 주어진닀. (1 ≀ N ≀ 10, 1 ≀ K ≀ 100,000,000)

λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 λ™μ „μ˜ κ°€μΉ˜ Aiκ°€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 주어진닀. (1 ≀ Ai ≀ 1,000,000, A1 = 1, i β‰₯ 2인 κ²½μš°μ— AiλŠ” Ai-1의 배수)

좜λ ₯

첫째 쀄에 K원을 λ§Œλ“œλŠ”λ° ν•„μš”ν•œ 동전 개수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€.

πŸš€ν’€μ΄

이건 κ·Έλƒ₯ ν’€μ—ˆμŒ.

int res = 0;
void solve()
{
	int i = 0;
	int temp = k;
	while (k != 0)
	{
		if ((temp /= vec[i]) != 0)
		{
			temp = k;
			res += (temp / vec[i]);
			k %= vec[i];
		}
		else
		{
			temp = k;
			i++;
		}
	}

	cout << res;
}

πŸš€μ „μ²΄ μ½”λ“œ

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int n, k;
vector<int> vec;
void setting()
{
	cin >> n >> k;

	int temp;
	for (int i = 0; i < n; ++i)
	{
		cin >> temp;
		vec.push_back(temp);
	}

	reverse(vec.begin(), vec.end());
}

int res = 0;
void solve()
{
	int i = 0;
	int temp = k;
	while (k != 0)
	{
		if ((temp /= vec[i]) != 0)
		{
			temp = k;
			res += (temp / vec[i]);
			k %= vec[i];
		}
		else
		{
			temp = k;
			i++;
		}
	}

	cout << res;
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	setting();
	solve();

	return 0;
}

νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ: