[C#] 백준 2775번 부녀회장이 될테야

2021. 12. 21. 22:34C#/[백준] 기본 수학1

문제

정답 코드 :

using System;

namespace _6
{
    class Program
    {
        static void Main(string[] args)
        {
            int T = Convert.ToInt32(Console.ReadLine());
            for (int K = 0; K < T; K++)
            {
                int k = Convert.ToInt32(Console.ReadLine()); //층
                int n = Convert.ToInt32(Console.ReadLine()); //호
                int person = 0;
                int[,] room = new int[n, k + 1]; //4층에 3호를 구하고 싶으면 0층 1호를 (1,1)으로 기준점을 잡고 (3,4)를 구한다.
                int[] Floor0 = new int[n];

                for (int i = 0; i < n; i++) //0층 값 채우기
                {
                    room[i, 0] = i + 1;
                }
                for (int i = 1; i < k + 1; i++) //1호 값 채우기
                {
                    room[0, i] = 1;
                }


                for (int i = 1; i < k + 1; i++)
                {
                    for (int j = 1; j < n; j++)
                    {
                        room[j, i] = room[j, i - 1] + room[j - 1, i];
                    }
                }
                person += room[n - 1, k];
                Console.WriteLine(person);
            }
        }
    }
}

문제를 그림으로 표현하자면 아파트는 이런식인지 채워진다.

잘 보면 46이라는 숫자는 왼쪽의 21과 아래층 35의 합으로 구할 수 있다.

따라서 이를 수식으로 표현했다.

for (int i = 1; i < k + 1; i++)
{
	for (int j = 1; j < n; j++)
	{	
		room[j, i] = room[j, i - 1] + room[j - 1, i];
	}
}