banggeut   4년 전

제출만 10번 넘었네요

시간초과가 왜 나는지 모르겠습니다

어느 부분에서 오래 걸리는 걸까요??

문제에서 주어진 예제는 다 맞는데 또 다른 반례가 있는걸까요?

통과한 코드랑 비교해봐도 뭐가 다른지 잘 모르겠습니다 ㅠㅠ

도와주세요..

미세먼지랑 정말 안녕하고 싶다..!

----------------------------------------------------------------------------------

제가 푼 방법은 1. 현재 좌표에서 확산될 미세먼지 //5 를 또 다른 리스트 move에 저장해주고,

2. 공기청정기가 아닌 좌표을 돌면서 인접한 4방향에 대해 유입, 유출될 미세먼지 (move)를 구해 미세먼지 (dust)를 갱신하도록 하였습니다.

그리고 3. 공기청정기 윗부분에 대해 모서리를 돌며 값을 변경해주고, 4. 아랫부분에 대해 값을 변경해주었습니다.

어디서 잘못된 걸까요?

djm03178   4년 전

PyPy3로 내면 맞습니다.

이 문제를 Python 3로 맞은 코드는 거의 대부분 4초 후반으로, 시간 보너스에 의한 제한인 5초에 거의 근접합니다. 즉, 매우 효율적으로 구현을 해야만 통과가 된다는 것이고, 최적화에 매우 능숙해야 통과가 가능할 것입니다.

Python 3는 동일한 로직을 사용하더라도 C나 C++에 비해 30~100배 느리기 때문에 BOJ에서 주는 보너스로는 불충분한 문제가 많습니다.

반면에 PyPy3는 Python 3와 동일한 시간 보너스를 받으면서도 대부분의 상황에서 Python 3보다 훨씬 빠른 동작을 보이기 때문에 거의 모든 문제는 Python 3 대신에 PyPy3로 푸는 것이 시간 면에서 이득입ㄴ다.

banggeut   4년 전

답변 정말 감사합니다

덕분에 오늘 발 뻗고 자겠네요

아직 최적화에 능숙하지 않아서요 더 열심히 공부해야겠습니다

행복하세요 ~~~ !!

banggeut   4년 전

아, 그리고 주변분께 도움을 요청했는데 코드를 수정해주셨습니다.

통과가 되더라구요.

참고하시라고 코드 올려드립니다 ㅎ

jmkk27   3년 전

저도 Python3로 시간초과가 나서 같은 코드를 PyPy3로 내서 통과했습니다.

제가 짠 코드나 글쓴님께서 수정 전후에 작성하신 코드나 모두 돌아가는 원리는 동일해 보이는데

어느 부분에서 시간 단축이 일어난 걸까요?

최적화에 대해 잘 알지는 못해서 질문을 남깁니다.

djm03178   3년 전

그냥 CPython과 PyPy의 구현체 자체가 다르기 때문에 한 가지로 말하기는 어렵습니다. 둘의 차이에 대해 찾아보시는 게 좋을 것 같네요.

jmkk27   3년 전

아, 제 질문은 언어의 차이가 아니라 글쓴님 코드의 수정 전후의 차이를 말하는 것이었습니다. 채점결과를 보니 수정 후 코드는 Python3으로도 통과된 것으로 보이는데, 수정 시 어떤 부분에서 시간 단축이 일어났을지 궁금하여 질문드리는 것입니다.

griezmann07   3년 전

파이파이로 해도 시간초과가 납니다ㅠㅠ 최적화를 해봐야겠어요!

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