카테고리 없음

기본 수학 1단계 2775

wny0320 2022. 10. 13. 08:59

백준 온라인 코딩 문제풀이

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

코드 참고

https://replit.com/@wny0320

 

wny0320 (박 상운)

Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.

replit.com

 

2775에 대해 다룸

 


2775

using System;
class Program
{
    static void Main(string[] args)
    {
        int T = int.Parse(Console.ReadLine());
        int k=0;
        int n=0;
        int[] result = new int[T];
        for(int i = 0; i < T; i++)
        {
            k = int.Parse(Console.ReadLine());
            n = int.Parse(Console.ReadLine());
            result[i] = floor(k, n);
        }
        for(int i = 0; i < T; i++)
        {
            Console.WriteLine(result[i]);
        }

        int floor(int k_, int n_)
        {
            if(k_ == 0)
            {
                return n_;
            }
            else
            {
                int sum = 0;
                for(int i = 1; i <= n_; i++)
                {
                    sum += floor(k_ - 1, i);
                }
                return sum;
            }
        }
    }
}

재귀를 이용하여 풀음

 

floor라는 메서드를 하나 생성한 후 층의 값(k)가 0이면 해당 n값 출력

 

k가 0이 아닐 경우에 floor의 값은 k-1층에 있는 1호부터 n호까지의 사람수의 합

 

따라서 sum을 만들어 반복문을 통해 1~n까지 돌려서 floor(k-1,i)값을 하여 아래층 1호부터 n호까지의 합을 재귀하여 찾음