dohpkim   4년 전

안녕하십니까

본 문제를 해결하기 위해 더 효율적으로 코딩하는 방법이 궁금합니다.

0. 문제를 맞추긴 하였으나, 프로세싱 시간이 248ms 나 나와버렸습니다. 다른 분들은 0ms 인데 다른분들 코드를 봐도 어디서 그런 차이가 나는지 잘 모르겠습니다.

1. 문제에 함수를 정의해서 풀어보라고 하여, 일부러 재귀함수 방식으로 풀어보았습니다.

하지만 시간이 오래 걸리는 이유가 그것 때문은 아닌것 같습니다. 재귀호출 없이 반복문으로만 처리해도 시간이 248ms이 나옵니다.

제 코드중 어느 부분이 비효율적이고, 생각을 바꾸면 어떤 부분에서 개선을 할 수 있는지 알고싶습니다.

2. 주석 질문2의 조건이 없으면 틀리는 이유가 궁금합니다.

3. 저는 올해부터 직업훈련학교에서 공부를 시작한 비전공자 출신입니다. 선배님들에겐 아주 당연한 사실도, 저는 모르는 부분이 많습니다.

사소한 지적 하나 하나도 저에겐 아주 큰 도움이 됩니다.

장황한 글 읽어주셔서 감사합니다!  


chw0501   4년 전

먼저,

2. 출려결과에 0이 포함되는 이유는 d(--n)에 있습니다.

n=1인 상황에서 d(--n)을 수행하면 그다음 if문 안에서는 n=0인 상황입니다.

그리고 당연히 self=1에서 변할리 없으므로 n=0이 출력됩니다.

시간을 줄이고 싶으시면 에라토스테네스의 체와 똑같은 원리를 적용하시면 됩니다.

1부터 시작(1은 셀프넘버)

-> 2 -> 4 -> 8 -> 16 -> 23 -> ..  이것들은 모두 셀프넘버 후보에서 제외.

숫자 2 확인: 앞에서 후보에서 제외됨.

숫자 3 확인: 3은 셀프넘버

-> 6 -> 12 -> 15 -> 21 -> ..  이것들도 세프넘버 후보에서 제외

..

이렇게 말이죠

dohpkim   4년 전

chw0501

답변 감사합니다! 에라토스테네스의 체 구현방법 공부해 보겠습니다~

댓글을 작성하려면 로그인해야 합니다.