Dolphins의 HelloWorld

[백준]Baekjoon9095(재귀) 본문

Algorithm/baekjoon문제풀이

[백준]Baekjoon9095(재귀)

돌핀's 2018. 9. 29. 14:45

문제링크 : https://www.acmicpc.net/problem/9095



풀이



재귀를 이용해서 풀었을 때 간단하게 풀 수 있는 문제이다.


재귀함수의 매개변수로는 (현재까지 더해진 숫자, 나타내야하는 정수) 2개를 준다.

-> func(int sum, int goal)


여기서 sum == goal이 될 때까지 


func(sum+1, goal) ; func(sum+2, goal) ; func(sum+3,goal) 을 이용해서


뻗어나가고 만약 조건이 충족이 된다면 자연스럽게 그 경우의 수들은 처음 시작한 함수로


모일것이다.


#include <iostream>

using namespace std;

int func(int sum, int goal)
{
	if (sum > goal) return 0;
	if (sum == goal) return 1;
	int now = 0;

	for (int i = 1; i <= 3; i++)
	{
		now += func(sum + i, goal);
	}
	return now;
}
int main()
{
	int T;
	scanf("%d", &T);

	while (T--)
	{
		int num;
		scanf("%d", &num);
		printf("%d\n", func(0, num));
	}
}

'Algorithm > baekjoon문제풀이' 카테고리의 다른 글

[백준]Baekjoon1987(백 트래킹)  (0) 2018.10.04
[백준]Baekjoon9663(백트래킹)  (0) 2018.10.01
[백준]Baekjoon1525(queue)  (0) 2018.09.26
[백준]Baekjoon9019(BFS,큐)  (0) 2018.09.21
[백준]Baekjoon1963(BFS,큐)  (0) 2018.09.19
Comments