
이번에 알고리즘을 공부하면서
백준 알고리즘을 이용하고 있다.
그중 단계별 풀이로 하나씩 풀어보고 있는데 그중에서 정리를 할만한 문제나 생각 나는 문제를 하나 씩 써보려고 한다.
10872 문제는 팩토리얼 문제이다
문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)가 주어진다.
출력
첫째 줄에 N!을 출력한다.
예제 입력 1 복사
10
예제 출력 1 복사
3628800
이 문제는 단계가 함수로 되어있다.
그래서 우선은 함수로 풀었다 코드는
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.*; public class Main { public static int p(int x) { if(x==1) { return 1; }else { return x*p(--x); } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int x = scanner.nextInt(); System.out.println(p(x)); } } Colored by Color Scripter |
cs |
이렇게 풀면 답이 나오는데 결과는 런타임 오류가 뜬다!
그래서 이걸 다시 일반적인 반복문을 사용해서 풀면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int x = scanner.nextInt(); int sum =1; for(int i =1 ; i<=x;i++) { sum *=i; } System.out.println(sum); } } Colored by Color Scripter |
cs |
이렇게 풀면 다시 런타임 에러가 뜨지 않고 해결이 된다.
혹시라도 런타임 오류가 왜 뜨는지 아시는분은 댓글을 남겨주면 감사하겠습니다.
'서버 개발' 카테고리의 다른 글
로컬 포트 3000 닫기, 포트 죽이기 (0) | 2020.11.06 |
---|---|
비쥬얼 스튜디오 코드(Visual Studio Code) 폰트 (Font) 설정하기 (1) | 2020.09.21 |
[JAVA] HashMap 기본을 활용하여 코딩테스트 문제 풀어보기 (0) | 2019.10.03 |
Git hub 간편한 이용 첫 푸쉬, push하기 (1) | 2019.05.06 |
우분투16.04LTS 에 APM 수동설치(소스설치) 하는 법 및 문제해결 (0) | 2019.03.20 |