1 분 소요

문제 링크 : https://level.goorm.io/exam/49054/%EC%96%B4%EB%A0%A4%EC%9A%B4-%EB%AC%B8%EC%A0%9C/quiz/1

문제 제목 : 어려운 문제

어려운 문제제출완료 100점 참여자 317 정답률 74.7% 16 4 문제

팩토리얼은 느낌표를 사용하여 표기하며, 다음과 같이 정의합니다.

(단, 을 만족해야한다) 하지만, 팩토리얼 연산의 결과는 큰 값인 경우가 많아서, 이를 한 자릿수로 만드는 연산을 하려고 합니다. 연산 과정은 아래와 같습니다. 팩토리얼 연산을 통해서 만들어진 결괏값을 라고 정의합니다. 만약 가 한 자릿수이면 연산 과정을 종료합니다. 그렇지 않다면, 의 모든 자릿수를 더한 새로운 값 를 구합니다. 의 값을 로 교체하고, 2번 과정으로 돌아갑니다. 이 주어졌을 때, 주어진 연산 과정에 따라 의 결과를 한 자릿수로 바꾼 결과를 출력하세요.

입력 첫째 줄에 정수 이 주어집니다.

출력

의 결과를 한 자릿수로 바꾼 결과를 출력하세요. 입/출력 예시 : 공백 : 줄바꿈 : 탭 예시 1 입력 10 출력 9 예시 2 입력 4 출력 6 예시 3 입력 5 출력 3 예시 4 입력 4021 출력 9 ⋇ 입출력 형식을 잘 지켜주세요

문제 풀이

import java.io.*;
class Main {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int N = Integer.parseInt(br.readLine());
    System.out.println(repeat(Integer.toString(factorial(N))));
  }
  
  public static int factorial(int N){
    if(N == 0){
      return 1;
    }
    else if(N >= 6){
      return 720;
    }
    return N * (factorial(N - 1));
  }
  
  public static String repeat(String N){
    if(N.length() == 1){
      return N;
    }
    else
    {
      String[] Arr = N.split("");
      int sum = 0;
      for(int i = 0; i < Arr.length; i++)
      {
        sum += Integer.parseInt(Arr[i]);
      }
      return repeat(Integer.toString(sum));
    }
  }
}

댓글남기기