어려운 문제
문제 링크 : 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));
}
}
}
댓글남기기