[백준 7489] 팩토리얼 JAVA

2024. 11. 7. 09:50·코딩테스트/백준

 

 

 

 

 


 

 

 

 

기존에 작성한 코드

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		int[] n = new int[t];
		for (int i = 0; i < t; i++) {
			n[i] = sc.nextInt();
		}
		
		String[] a = new String[t];		
		for (int i = 0; i < n.length; i++) {
			a[i] = Integer.toString(pac(n[i])).replaceAll("0+$", "");
			//a[i] = a[i].replaceAll("0+$", "");
		}
		
		for (int i = 0; i < a.length; i++) {
			System.out.println(a[i].charAt(a[i].length()-1));
		}
	}

	static int pac(int n) {
		if(n < 2) {
			return n;
		}
		return n*pac(n-1);
	}
}

 

결과는 런타임 에러..

 

이것저것 시도해보다 보니 int형보다 큰 숫자가 들어가서 그렇다고 한다.

 

 

 

 

 

 

새로 작성한 코드

import java.math.BigInteger;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		int[] n = new int[t];
		for (int i = 0; i < t; i++) {
			n[i] = sc.nextInt();
		}
		
		String[] a = new String[t];		
		for (int i = 0; i < n.length; i++) {
			a[i] = pac(n[i]).toString();
			a[i] = a[i].replaceAll("0+$", "");
		}
		
		for (int i = 0; i < a.length; i++) {
			System.out.println(a[i].charAt(a[i].length()-1));
		}
	}
	
	static BigInteger pac(int n) {
        BigInteger result = BigInteger.ONE;
        for (int i = 1; i <= n; i++) {
            result = result.multiply(BigInteger.valueOf(i));
        }
        return result;
    }
}

 

빅인티저 BigInteger는 처음 이번 계기로 처음 알게되었다.

 

int와 long은 크기 제한이 있는 기본형 타입이며, BigInteger는 그 범위에 제한이 없고 매우 큰 정수를 처리할 수 있다는 장점이 있다.

 

Type 최소값 최대값
int -2,147,483,648 (-2^31) 2,147,483,647 (2^31 - 1)
long -9,223,372,036,854,775,808 (-2^63) 9,223,372,036,854,775,807 (2^63 - 1)
BigInteger 시스템 메모리에 의존 (이론상 무제한) 시스템 메모리에 의존 (이론상 무제한)

 

 

 

 

채점 결과

 

 

 

 

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

[백준 1157] 단어 공부 JAVA - LinkedHashSet, HashMap 사용  (0) 2024.11.09
[백준 1316] 그룹 단어 체커 JAVA - 데크(Deque) 사용  (0) 2024.11.08
[백준 11718] 그대로 출력하기 JAVA  (0) 2024.10.30
[백준 10809] 알파벳 찾기 JAVA  (0) 2024.10.29
[백준 2588] 곱셈, [2908] 상수 JAVA  (0) 2024.01.29
'코딩테스트/백준' 카테고리의 다른 글
  • [백준 1157] 단어 공부 JAVA - LinkedHashSet, HashMap 사용
  • [백준 1316] 그룹 단어 체커 JAVA - 데크(Deque) 사용
  • [백준 11718] 그대로 출력하기 JAVA
  • [백준 10809] 알파벳 찾기 JAVA
오은이
오은이
  • 오은이
    오은이 하우스
    오은이
  • 전체
    오늘
    어제
    • 분류 전체보기 (81)
      • 일기 (2)
      • Python (1)
      • Java (4)
      • CS (2)
      • 코딩테스트 (26)
        • 백준 (25)
        • 프로그래머스 (1)
      • 웹 개발 (17)
        • Spring (6)
        • JavaScript (3)
        • WebSquare (5)
        • React (3)
      • DB (5)
        • MySQL (4)
        • Oracle (1)
      • 서버&인프라 (18)
        • Server (5)
        • Cloud (12)
        • Linux (1)
      • 자격증 (6)
        • 정보처리기사 (1)
        • AICE (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    백준자바
    Apache
    EC2
    머신러닝
    AI
    websquare
    리액트
    알고리즘
    톰캣
    자바
    웹스퀘어
    MySQL
    AICE Associate
    cloud DB
    docker배포
    클라우드
    백준
    Associate
    dockerspring
    db
    tomcat
    react
    클라우드 배포
    AICE
    Spring
    docker
    SpringBoot
    오블완
    티스토리챌린지
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
오은이
[백준 7489] 팩토리얼 JAVA
상단으로

티스토리툴바