godnes628   3년 전

틀렸습니다 라고 나옵니다!

혹시 이유를 알 수 있을까요

또한

제 코딩하는 습관?에서 불필요해 보이는 게 있다면 알려주시면 감사하겠습니다

appie701   3년 전

12 ~ 15라인에서 소수가 아닌 수들을 a에서 0으로 바꿔주는 식으로 코딩하신 것 같은데

일단 이중 for문 순서가 조금 위아래가 바뀐것 같고 전반적으로 어떤 의도로 짜신건지 정확히 이해 안가는 부분들이 있어서

우선 첫째로 작성자님 코드를 수정해서 돌아가는 코드에 주석달아서 올려둡니다. 비교해서 어디가 틀린건지 확인해보실 수 있으면 좋을거 같습니다.

appie701   3년 전

그리고 x부터 y까지 돌면서 일단 소수 아닌수들을 다 0으로 지우고

다시 x부터 y까지 돌면서 그게 a에서 소수로 되어있는지를 in연산자로 검사를 하시는 방식으로 계산을 하시는데

in연산자가 한번 실행하면 a의 내부원소들을 하나하나 확인해보므로 O(n)만큼 시간이 걸리는것으로 알고있습니다

그런데 애초에 처음에 x부터 y까지 돌면서 소수임을 확인하면 바로 sum 과 min에 반영해주면

in도 쓸필요없고 이중for문도 한번 더 돌 필요가 없습니다.

이것도 성자님 코드 기반으로 제가 설명드린 걸 반영한 코드를 작성했습니다

아래의 코드는 120ms정도만 소요되지만

위에 제가 올린 코드는 1184ms가 소요됩니다.

godnes628   3년 전

너무 감사합니다. 이해도 한 번에 됐어요!

위에 수정해주신 바탕으로 제가 부족했던 부분을 수정하고 보완하겠습니다. 감사합니다!

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