본문 바로가기
알고리즘/코드트리 문제풀이

코드트리 [자바 java] 아름다운 수

by 잔디🌿 2023. 8. 6.

https://www.codetree.ai/missions/2/problems/beautiful-number/submissions

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

이 문제는 입력받은 수 길이의 아름다운 수가 얼마나 있는지 계산하는 것이다.

1은 하나씩, 2는 두개씩, 3은 3개씩, 4는 4개씩 한번에 나타나야 한다. 이 문제는 위와 같은 방식이지만, 1,2,3,4를 한 덩어리로 생각해서 배열에 넣어주었다. 이 문제에서 한 덩어리의 수를 넣었을 때 배열을 벗어나는 경우에 대한 예외처리를 해야하는 것을 주의해야 한다.

 

import java.io.*;
import java.util.*;


public class Main {
    static int n;
    static int cnt = 0;
    static int[] arr;



    static void func(int num){
        if(num == n){
            cnt++;
        }
        else{
            for(int i = 1;i<=4;i++){
                if(num+i > n){
                     return;
                }
                else{
                    for(int j = 0;j<i;j++){
                        arr[num + j] = i;
                    }
                    func(num + i);
                }
            }
        }
    }

    public static void main(String[] args) throws IOException{
        // 여기에 코드를 작성해주세요.
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        n = Integer.parseInt(br.readLine());
        arr = new int[n];
        func(0);
        System.out.println(cnt);

        
    }
}