ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JUNGOL...28
    일지 2020. 12. 4. 12:11

    Language_Code/함수3/형성평가1


    문제                                            

    자연수 N을 입력받아 1부터 N까지 출력을 하되 n-1번째 값은 n번째 값을 2로 나눈 몫이 되도록 하는 프로그램을 작성하시오.

     

    입력 예                                        

    100

     

    출력 예                                        

    1 3 6 12 25 50 100

     

    Hint!

    n/2를 호출한 후에 n을 출력하도록 하는 재귀함수를 작성한다.


    FormativeFunction301.h

    #include <iostream>
    
    class FormativeFunction301 : public Base
    {
    private:
    	void Function(int n);
    };

     

    FormativeFunction301.cpp

    void FormativeFunction301::Code()
    {
    	int n;
    
    	std::cin >> n;
    
    	Function(n);
    }
    
    void FormativeFunction301::Function(int n)
    {
    	if (n == 0)
    	{
    		return;
    	}
    
    	Function(n / 2);
    	std::cout << n << ' ';
    }

     

    Language_Code/함수3/형성평가2


    문제                                            

    자연수 N을 입력받아 N이 홀수인 경우에는 1부터 N까지의 홀수를 짝수인 경우는 2부터 N까지의 짝수를 모두 출력하는 프로그램을 재귀함수로 작성하시오.

     

    입력 예                                        

    15

     

    출력 예                                        

    1 3 5 7 9 11 13 15


    FormativeFunction302.h

    #include <iostream>
    
    class FormativeFunction302 : public Base
    {
    private:
    	void Function(int n);
    };

     

    FormativeFunction302.cpp

    void FormativeFunction302::Code()
    {
    	int n;
    
    	std::cin >> n;
    
    	Function(n);
    }
    
    void FormativeFunction302::Function(int n)
    {
    	if (n <= 0)
    	{
    		return;
    	}
    
    	Function(n - 2);
    	std::cout << n << ' ';
    }

     

    Language_Code/함수3/형성평가3


    문제                                            

    자연수 N과 M을 입력받아서 주사위를 N번 던져서 나온 눈의 합이 M이 나올 수 있는 모든 경우를 출력하는 프로그램을 작성하시오. 단, N은 10 이하의 정수이다.

     

    입력 예                                        

    3 10

     

    출력 예                                        

    1 3 6

    1 4 5

    1 5 4

    1 6 3

    2 2 6

    2 3 5

    6 2 2

    6 3 1

     

    Hint!

    재귀함수에 레벨(level)과 합계(sum) 두 개의 인수를 전달하여 sum이 M과 같은 경우에만 출력하도록 한다. (정의 : void dice(int level int sum) 호출 : dice(level+1 sum+i))


    FormativeFunction303.h

    #include <iostream>
    
    class FormativeFunction303 : public Base
    {
    private:
    	void Function(int arr[], int curIdx, int sum, int n, int m);
    };

     

    FormativeFunction303.cpp

    void FormativeFunction303::Code()
    {
    	int arr[10];
    	int n, m;
    
    	std::cin >> n >> m;
    
    	std::fill_n(arr, n, 1);
    
    	Function(arr, 0, 0, n, m);
    }
    
    void FormativeFunction303::Function(int arr[], int curIdx, int sum, int n, int m)
    {
    	if (curIdx == n)
    	{
    		if (sum == m)
    		{
    			for (int i = 0; i < n; i++)
    			{
    				std::cout << arr[i] << ' ';
    			}
    			std::cout << '\n';
    		}
    		return;
    	}
    
    	for (int i = 1; i <= 6; i++)
    	{
    		arr[curIdx] = i;
    		Function(arr, curIdx + 1, sum + i, n, m);
    	}
    }

     

    Language_Code/함수3/형성평가4


    문제                                            

    첫 번째는 1, 두 번째는 2, 세 번째부터는 앞의 두 수의 곱을 100으로 나눈 나머지로 이루어진 수열이 있다.

    100 이하의 자연수 N을 입력받아 재귀함수를 이용하여 N번째 값을 출력하는 프로그램을 작성하시오.

     

    입력 예                                        

    8

     

    출력 예                                        

    92

     

    Hint!

    1 2 2 4 8 32 56 92 ...


    FormativeFunction304.h

    #include <iostream>
    
    class FormativeFunction304 : public Base
    {
    private:
    	void Function(int num1, int num2, int n);
    };

     

    FormativeFunction304.cpp

    void FormativeFunction304::Code()
    {
    	int n;
    
    	std::cin >> n;
    
    	Function(1, 2, n - 1);
    }
    
    void FormativeFunction304::Function(int num1, int num2, int n)
    {
    	if (n == 0)
    	{
    		std::cout << num1;
    		return;
    	}
    
    	Function(num2, (num1 * num2) % 100, n - 1);
    }

     

    Language_Code/함수3/형성평가5


    문제                                            

    100만 이하의 자연수 N을 입력받아 짝수이면 2로 홀수이면 3으로 나누는 작업을 반복하다가 그 값이 1이 되면 그때까지 나누었던 작업의 횟수를 출력하는 프로그램을 재귀함수로 작성하시오.

     

    입력 예                                        

    100

     

    출력 예                                        

    6

     

    Hint!

    100 → 50 → 25 → 8 → 4 → 2 → 1 횟수(level)도 함께 전달하고 n이 1이면 level을 출력하면 된다. 함수(n/2 또는 n/3 level+1)


    FormativeFunction305.h

    #include <iostream>
    
    class FormativeFunction305 : public Base
    {
    private:
    	void Function(int n, int count);
    };

     

    FormativeFunction305.cpp

    void FormativeFunction305::Code()
    {
    	int n;
    
    	std::cin >> n;
    
    	Function(n, 0);
    }
    
    void FormativeFunction305::Function(int n, int count)
    {
    	if (n == 1)
    	{
    		std::cout << count;
    		return;
    	}
    	
    	if (n % 2 == 0)
    	{
    		Function(n / 2, count + 1);
    	}
    	else
    	{
    		Function(n / 3, count + 1);
    	}
    }

     

    Language_Code/함수3/형성평가6


    문제                                            

    3자리로 이루어진 자연수 3개를 입력받아 그 수들의 곱을 구한 후 그 결과값의 각 자리 숫자들중 0을 제외한 모든 수들의 곱을 구하여 출력하는 프로그램을 재귀함수로 작성하시오.

     

    입력 예                                        

    100 123 111

     

    출력 예                                        

    270

     

    Hint!

    입력예제의 세 수의 곱은 1365300이다. 그러므로 1 * 3 * 6 * 5 * 3 = 270 1의 자리수 * 1의 자리를 제외한 남은 자리수의 곱 (단 1의 자리수가 0이면 1로 바꾸어서 곱한다.)


    FormativeFunction306.h

    #include <iostream>
    
    class FormativeFunction306 : public Base
    {
    private:
    	void Function(int num, int result);
    };

     

    FormativeFunction306.cpp

    void FormativeFunction306::Code()
    {
    	int num1, num2, num3;
    
    	std::cin >> num1 >> num2 >> num3;
    
    	Function(num1 * num2 * num3, 1);
    }
    
    void FormativeFunction306::Function(int num, int result)
    {
    	if (num == 0)
    	{
    		std::cout << result;
    		return;
    	}
    
    	int var{ num % 10 };
    	var = (var != 0 ? var : 1);
    
    	Function(num / 10, result * var);
    }

     

    NadanKim/CodingTest_JUNGOL: JUNGOL 코딩 테스트를 위한 저장소 (github.com)

     

    NadanKim/CodingTest_JUNGOL

    JUNGOL 코딩 테스트를 위한 저장소. Contribute to NadanKim/CodingTest_JUNGOL development by creating an account on GitHub.

    github.com

     

    댓글

Designed by Tistory.