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

코드트리 [자바 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);
    
            
        }
    }