ohyuni   4년 전

안녕하세요.

7569번 문제를 푸는데 시간 초과 문제가 발생해서 질문 드립니다.

제 코드에서 불필요한 부분이나 개선할 수 있는 부분이 있다면 알려주시면 고맙겠습니다.

감사합니다.

ohyuni   4년 전

PyPy3로 제출하여 통과했습니다.

Python3로 제출하여 통과하는 방법은 없을까요?

어느 부분이 오래 걸리는지 알고 싶습니다.

indioindio   4년 전

이 코드를 제출하면 런타임에러가 납니다.

ohyuni   4년 전

주석 문제 같습니다.

시간 초과 받은 코드 그대로 복사하여 첨부합니다.

ohyuni   4년 전

주석을 입력하면서 한글 입력 오류(??)가 발생하길래 그 부분을 지웠는데 그와 함께 코드 일부분이 지워져서 런타임 에러가 발생하네요 ㅠㅠ

신중하게 확인하지 못한 점 죄송합니다.

indioindio   4년 전

알고리즘 자체의 개선사항은 python3 정답자들의 코드를 확인하는 것이 좋을 것 같고,

저는 기술적인 부분만 조금 수정해보았습니다.

box = [[sys.stdin.readline().split() for i in range(N)] for j in range(H)] 로 append 대신 box의 생성 시점에서 입력을 받게끔 하였고

nh, nr, nc = h+i, r+j, c+k 로 중복된 덧셈 계산을 줄여보았습니다. 4452ms 로 통과하네요.

loop unrolling을 사용하면 더 성능이득을 볼 수 있습니다만, (https://www.acmicpc.net/source/13576932) 다른 개선방안을 참조하는 것이 더 좋을 것 같네요.

indioindio   4년 전

is_in_range 함수호출 대신 if 문 내에서 전부 비교했다는 내용을 빼먹었습니다.

ohyuni   4년 전

확인했습니다.

답변 감사합니다.

알려주신 부분 모두 모르고 있던 내용이었는데 답변을 통해 배우고 가요.

말씀하신대로 다른 알고리즘 자체의 개선 방안 역시 찾아보겠습니다.

깨달음 주셔서 감사합니다.

좋은 하루 되세요 :D

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