백준 알고리즘/JAVA

JAVA 백준 1676번 팩토리얼 0의 개수

RECORD :D 2018. 7. 24. 20:50

JAVA 백준 1676번 팩토리얼 0의 개수


처음에 팩토리얼 한 값을 문자열에 저장해 하나씩 0과 비교하서 COUNT 세려고 했는데 N의 값이 일정치 이상 넘어가니 변수형 long도 감당하지 못하게 된다. 그래서 규칙을 찾으려 노력했다. 처음에 하나의 규칙을 찾았다.

이렇게 2의 배수와 5의 배수가 만나면 뒤에 0이 들어가는 값이 만들어진다. 

이것을 보면 5가 곱해져 있는 만큼 0이 더해지는 것을 알 수 있다. 즉, 5가 한번 곱해졌으면 0의 count가 1증가, 어느 값에 5가 2번 곱해져 있으면 0의 count가 2증가한다는 것을 볼 수 있다. (뒤에 값을 기준으로 한다)

나중에 50값은 5가 2번 곱해져 있는것과 동시에 2도 하나 곱해져 있다. 100의 값은 5가 2번, 2가 2번 곱해져있다. 50이나 100을 5의 배수가 몇번 곱해져 있는지 알고 위해 2와 5를 계속 나눠주는 것이다.