본문 바로가기
Baekjoon/단계별로 풀어보기

[단계10] 재귀 (4문제)

by 해적거북 2021. 1. 12.
728x90

www.acmicpc.net/step/19

 

● [문제번호 10872] 팩토리얼

#include <stdio.h>

int factorial(int N)
{
    if(N == 1 || N == 0)
        return 1;
    
    return N * factorial(N - 1);
}

int main()
{
    int N;
    scanf("%d", &N);
    
    printf("%d", factorial(N));
    
    return 0;
}

 

● [문제번호 10870] 피보나치 수5

#include <stdio.h>

int fibonacci(int n)
{
    if(n == 0)
        return 0;
    else if(n == 1)
        return 1;
    
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main()
{
    int n;
    scanf("%d", &n);
    
    printf("%d", fibonacci(n));

    return 0;
}

 

● [문제번호 10872] 별 찍기 - 10

#include <stdio.h>

#define size 6561

char mat[size][size];

void initStar(int N)
{
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            mat[i][j] = '*';
}

void star(int N, int temp)
{
    if(N == temp)
        return;
        
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            if(temp <= i % (temp * 3) && i % (temp * 3) < 2 * temp)
                if(temp <= j % (temp * 3) && j % (temp * 3) < 2 * temp)
                    mat[i][j] = ' ';
    
    star(N, temp * 3);
}

void printStar(int N)
{
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
            printf("%c", mat[i][j]);
        printf("\n");
    }
}

int main()
{
    int N;
    scanf("%d", &N);
    
    initStar(N);
    
    star(N, 1);
    
    printStar(N);
    
    return 0;
}

 

● [문제번호 10872] 하노이 탑 이동순서

#include <stdio.h>
#include <math.h>

void hanoi(int N, int from, int by, int to)
{
    if(N == 1)
    {
        printf("%d %d\n", from, to);
        return;
    }
    
    hanoi(N - 1, from, to, by);
    printf("%d %d\n", from, to);
    hanoi(N - 1, by, from, to);
}

int main()
{
    int N;
    scanf("%d", &N);
    
    // 횟수는 구글링으로 알아냄
    printf("%.0lf\n", pow(2, N) - 1);
    
    hanoi(N, 1, 2, 3);

    return 0;
}
728x90

댓글