250x250
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 | 31 |
Tags
- 2판
- 쓰는 법
- 쉐이더
- 오류
- 튜토리얼
- tutorial
- 속성
- Final IK
- shader
- 에러
- 최적화
- NavMesh
- 메모리
- 유니티 그래픽스 최적화 스타트업
- 리깅
- c#
- 애니메이션
- 리팩토링
- github
- 파이널 IK
- 애님
- 유니티
- 유니티 그래픽 최적화
- 깃허브
- unity
- Effective C#
- error
- 프로퍼티
- 익명 타입
- 사용법
Archives
- Today
- Total
참치김밥은 최고의 한식이다
[백준] C# 9095번 : 1, 2, 3 더하기 본문
문제
5를 1,2,3으로 나타낸 경우의 수는 13이다.
4을 1,2,3으로 나타낸 경우의 수는 7이다.
3의 경우의 수는 4이다.
2의 경우의 수는 2이다.
1의 경우의 수는 1이다.
규칙이 아리까리해서 헷갈렸지만 알고 보니 쉬웠다!
4는
"1" + 3
"2" + 2
"3" + 1
으로 나타낼 수 있고,
1+ 로 시작하는 경우의 수는 3을 1,2,3으로 나타낸 경우의 수와 같다. 마찬가지로
2+로 시작하는 경우의 수는 2를 1,2,3으로 나타낸 경우의 수와 같다.
3+로 시작하는 경우의 수는 1을 1,2,3으로 나타낸 경우의 수와 같다.
따라서 위 경우의 수를 모두 더해주면 4를 1,2,3으로 나타낸 경우의 수(1+2+4)를 구할 수 있다.
5를 구할 경우에는 마찬가지로
1+4 (=> 1+로 시작하는 경우의 수는 4를 1,2,3으로 나타낸 경우의 수와 같다)
2+3 (=> 2+로 시작하는 경우의 수는 3을 1,2,3으로 나타낸 경우의 수와 같다)
3+2
이다.
즉, 이를 함수로 나타내면
dp[n] = dp[n-3] + dp[n-2] + dp[n-1]
가 된다.
나는 숫자 1, 2, 3의 경우의 수는 사람이 쉽게 구할 수 있으므로 간단하게 switch문과 재귀함수를 활용했다.
내가 푼 코드
using System;
namespace Practice
{
class Program
{
static int Main(string[] args)
{
int count = int.Parse(Console.ReadLine());
int[] numbers = new int[count];
for (int i = 0; i < count; i++)
numbers[i] = int.Parse(Console.ReadLine());
for (int i = 0; i < count; i++)
Console.WriteLine(Calculate(numbers[i]));
return 0;
}
static int Calculate(int number)
{
int result = 0;
switch (number)
{
case 1:
result = 1;
break;
case 2:
result = 2;
break;
case 3:
result = 4;
break;
}
if (number >= 4)
{
result = Calculate(number - 1) + Calculate(number - 2) + Calculate(number - 3);
}
return result;
}
}
}
728x90
'백준' 카테고리의 다른 글
[백준] C# 1120번 : 문자열 (0) | 2024.05.01 |
---|