소수 결정 알고리즘을 사용 할 줄 알아야 하는 것도 핵심인 거 같다.
그 이외에는 몇 가지 예외를 처리하는 식으로 문제를 풀었다. 좋은 방법으로 푼 것은 아닌 것 같아 조금 더 연구를 해봐야 할 것 같다.
하지만, 더블릿에서 실행 속도 3등을 했다.!!!
설명하기 전에 소수 판별 알고리즘에 대해서 간단히 다시 정리하겠다.
문제정리)
자연수 n(2이상 1 000 000 000이하)의 자연수가 주어지면
그 것을 소인수 분해하는 것이다.
풀이)
1부터 10000정도까지 소수들의 데이터를 배열에 저장 해 놨다. 굳이 말하자면 소수들에 대한 데이터베이스를 구축해놓고,
열람하며 활용하겠다는 방식이었다. 낭비라는 생각도 들었지만 결과론적으로 이 방법이 꽤 빠르다는 것을 알았다.
그다음부터는
수학공식에 있던 방법을 고대로 가지고 와서 코드로 옮기는 방식을 사용했다.
매번 지금 계산 되고 있는 것이 소수 인지 판별한다. 소수이면 중단하고 소수가 아니면 소수리스트의 값으로 나누어준다.
이 과정을 반복하게 된다.
'알고리즘문제풀이' 카테고리의 다른 글
더블릿_이진 검색 (0) | 2015.04.06 |
---|---|
도블릿_rank sort (0) | 2015.04.06 |
더블릿_인수분해 (0) | 2015.04.03 |
더블릿_피타고라스 정리 (0) | 2015.04.03 |
2504_괄호의 값 (0) | 2015.04.02 |