C# 9184번 신나는 함수 실행
2022. 1. 22. 17:52ㆍ코딩테스트 문제 풀이/[백준] 동적 계획법1
728x90
반응형
코드 :
using System;
namespace PracticeAlgo
{
class Program
{
static int[,,] w;
static void Main(string[] args)
{
using (var prnt = new System.IO.StreamWriter(Console.OpenStandardOutput()))
{
w = new int[101, 101, 101];
while (true)
{
var a = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
if (a[0] == -1 && a[1] == -1 && a[2] == -1)
{
break;
}
if (w[a[0] + 50, a[1] + 50, a[2] + 50] == 0)
{
GetW(a[0] + 50, a[1] + 50, a[2] + 50);
}
prnt.WriteLine(string.Format("w({0}, {1}, {2}) = {3}", a[0], a[1], a[2], w[a[0] + 50, a[1] + 50, a[2] + 50]));
}
}
}
static int GetW(int a, int b, int c)
{
if (w[a, b, c] != 0)
{
return w[a, b, c];
}
if (a <= 50 || b <= 50 || c <= 50)
{
w[a, b, c] = 1;
}
else if (a > 70 || b > 70 || c > 70)
{
w[a, b, c] = GetW(70, 70, 70);
}
else if (a < b && b < c)
{
w[a, b, c] = GetW(a, b, c - 1) + GetW(a, b - 1, c - 1) - GetW(a, b - 1, c);
}
else
{
w[a, b, c] = GetW(a - 1, b, c) + GetW(a - 1, b - 1, c) + GetW(a - 1, b, c - 1) - GetW(a - 1, b - 1, c - 1);
}
return w[a, b, c];
}
}
}
코드 설명 :
먼저 수의 범위가 -50부터 50까지이므로 +50을하여 인덱스가 0부터 시작할 수 있도록 전처리작업을 진행한다.
728x90
반응형
'코딩테스트 문제 풀이 > [백준] 동적 계획법1' 카테고리의 다른 글
C# 1932번 정수 삼각형 (0) | 2022.01.22 |
---|---|
C# 1149번 RGB거리 (0) | 2022.01.22 |
C# 9461번 파도반 수열 (0) | 2022.01.22 |
C# 1904번 01타일 (0) | 2022.01.22 |
C# 1003번 피보나치 함수 (0) | 2022.01.22 |