6210seok   2년 전

시간 초과라고 뜹니다. 방법이 틀리진 않은 것 같은데 어떤 부분을 수정해야 속도가 빨라질까요?

lcr7324   2년 전

지금 코드는 i가 1000이라면 d(1)이 i인지 확인하고, d(2)가 i인지 확인하고, ..., d(999)가 i인지 확인합니다.

그 다음 i가 1001이면 또 다시 d(1)이 i인지 확인하고, d(2)가 i인지 확인하고, ..., d(1000)이 i인지 확인합니다.

달라지지 않는 d(N) 값을 이렇게 계속 반복해서 구할 필요가 있을까요?

amsminn   2년 전

N=10000이기 때문에 $O(N^2logN)$는 시간초과의 여지가 있습니다.

잘 생각해보면 n<=10000이기 때문에 범위에서 특정한 x가 셀프넘버라면 생성자는 구간 $[x-36,x]$에 존재합니다.

그래서 $O(36*N)$으로 해결할 수 있습니다.

아래는 정답처리를 받은 제 코드입니다.

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