캐또's coding

10872 - 팩토리얼 - node.js 본문

기초 공부/백준 문제 풀이

10872 - 팩토리얼 - node.js

JS_K_coding 2023. 1. 17. 17:10

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

 

10872번: 팩토리얼

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

www.acmicpc.net


팩토리얼 즉 곱연산에 관한 문제이다. N의 팩토리얼은 N!로 표시한다. 예를 들어서 N이 10이라면?

1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10이라는 뜻이다. 

직관적인 풀이는 다음과 같다.

const fs = require("fs");
let input = Number(fs.readFileSync("/dev/stdin").toString().trim());
//입력값 받기

let result = 1;
if (input == 0 || input == 1) {
  result = 1;
  //입력값이 0이나 1이면 1로 결과값 바꾸기
} else {
  for (i = input; i > 0; i--) {
    result *= i;
    //0과 1이 아닌 경우 for문을 돌면서 입력값-1씩 곱하기
  }
}
console.log(result);
//결과 출력

검색을 통해 다른 해결 방법을 찾아보았다.

 

const fs = require("fs");
let input = Number(fs.readFileSync("/dev/stdin").toString().trim());
//입력 값 받는 부분 동일

function facto(n) {
	if(!n || n===1) return 1;
    return n * facto(n-1);
}
//함수로 팩토리얼(입력값)
//만약 0이나 1이라면 return으로 1
//return은 입력받은 값 * 함수(입력값-1)  : 재귀 사용
//재귀로 1까지 => 입력값이 10이라면 10, 10-1... 반복

console.log(facto(input));
//결과 출력
Comments