본문 바로가기

알고리즘 · 코딩

[프로그래머스] 거스름돈

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12907

 

코딩테스트 연습 - 거스름돈

Finn은 편의점에서 야간 아르바이트를 하고 있습니다. 야간에 손님이 너무 없어 심심한 Finn은 손님들께 거스름돈을 n 원을 줄 때 방법의 경우의 수를 구하기로 하였습니다. 예를 들어서 손님께 5��

programmers.co.kr


C++ 풀이

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(int n, vector<int> money) {
	sort(money.begin(), money.end());
	vector <int> answer;
	answer.resize(n);

	for (int i = 0; i < n; i++) 
		if ((i + 1) % money[0] == 0) 
			answer[i] = 1; 

	for (int i = 1; i < money.size(); i++) {
		int current = money[i]; 
		for (int j = current - 1; j < n; j++) { 
			if (j == current - 1) 
				answer[j] = (answer[j] + 1) % 1000000007; 
			else if (j > current - 1) { 
				answer[j] = (answer[j] + answer[j - current]) % 1000000007;
			} 
		} 
	} 

	return answer[n - 1];
}

 

 

 

반응형