코딩테스트/JAVA

[JAVA/백준 27433번] 팩토리얼 2

할루솔이 2023. 10. 22. 00:18
반응형

https://www.acmicpc.net/problem/27433

 

27433번: 팩토리얼 2

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

문제

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다.

 

출력

첫째 줄에 N!을 출력한다.

예제 입력 1 

10

예제 출력 1 

3628800

예제 입력 2 

0

예제 출력 2 

1

👉 풀이과정

오류가 10번 이상 생긴 것 같다....

도대체 코드에 이상이 없는 것 같은데 왜 틀렸다는거지???????하고 계속 살폈는데도

못 찾다가 구글링을 해보니..

자료형때문이다...

N이 10까지면 int타입으로 가능하지만, 20까지라서 long타입을 사용해야 한다.

int를 long으로 바꾸니 바로 해결됐다...

 

📌 제출코드

-재귀X

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        int n = scan.nextInt();
        long fac = 1;
        for(int i=1;i<=n;i++){
            fac *= i;
        }
        System.out.println(fac);
    }
}

 

-재귀O

import java.util.*;

public class Main {
    public static long fac(int n){
        if (n == 0) {
            return 1;
        }
        return n * fac(n - 1);
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int n = scan.nextInt();
        long sum = fac(n);
        System.out.println(sum);
    }

}

 

 

 

반응형

'코딩테스트 > JAVA' 카테고리의 다른 글

[JAVA/백준 1026번] 보물  (0) 2023.10.24
[JAVA/백준 5585번] 거스름돈  (0) 2023.10.23
[JAVA/백준 11047번] 동전 0  (0) 2023.10.21
[JAVA/백준 11399번] ATM  (0) 2023.10.20
[JAVA/백준 9095번] 1, 2, 3 더하기  (1) 2023.10.19