치춘짱베리굿나이스

[백준] 1676 본문

팩토리얼 0의 개수

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력

첫째 줄에 구한 0의 개수를 출력한다.

풀이

const factorial = () => {
  let n = Number(require("fs").readFileSync("/dev/stdin").toString().trim());
  let ans = 0;
  for (let i = 1; i <= n; i++) {
    if (i % 125 === 0) ans += 3;
    else if (i % 25 === 0) ans += 2;
    else if (i % 5 === 0) ans += 1;
  }
  console.log(ans);
};

factorial();

반성회

굳이 팩토리얼 계산 안 하고 5의 개수 세어서 풀었다

25는 5의 2제곱이라 5가 두번 들어가므로 +2, 125는 5의 3제곱이라 5가 3번 들어가므로 +3

2와 5가 곱해져야 10이 되어서 0이 하나 추가되긴 하지만, 5의 개수보다 2의 개수가 훨씬 많기 때문에 (한 번 걸러 한번씩 늘어나므로) 5의 개수만 세어줘도 맞다

'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글

[백준] 16170  (0) 2022.07.03
[백준] 15962  (0) 2022.07.03
[백준] 1620  (0) 2022.06.27
[백준] 2407  (0) 2022.06.26
[백준] 2910  (0) 2022.06.26
Comments