소수 결정 알고리즘을 사용 할 줄 알아야 하는 것도 핵심인 거 같다. 


그 이외에는 몇 가지 예외를 처리하는 식으로 문제를 풀었다. 좋은 방법으로 푼 것은 아닌 것 같아 조금 더 연구를 해봐야 할 것 같다. 

하지만, 더블릿에서 실행 속도 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
Posted by slender ankles
,