aru0504   2년 전

안녕하세요. 단순 연결 리스트 구현이라고 생각했다가 데였습니다.

시간초과 받고 나니 파이썬으로 문제를 푼 분이 안 계시다는 것을 깨닫고 문제를 해결해보고자 했는데요

최적화 방법은: 

input -> sys.stdin.readline

print -> 한 번에 list에 모아서 sys.stdout.write로  '\n'.join()

이걸로도 해결이 되지 않아서:

혹여나 Node 클래스가 무거울까 봐 dict로만 시도 (아래 코드)

를 해 봤습니다만, 여전히 해결이 되지 않습니다.

언어별 추가 시간이 없어서 파이썬으로는 풀 수 없는 문제일까요?

rkaxhdals   2년 전

제가 해보니까 되긴 됩니다만... 파이썬으로 풀기에는 정신건강에 안좋은 듯 합니다.

dict는 해싱을 해야 하기 때문에, list를 쓰세요. 1000000만 칸 list로 구현할 수 있습니다.

그리고 2D list의 arr[][]과 같은 두 번 참조는 1D list를 여러 개 만들어서 한 번 참조하는 게 빠릅니다. 이 문제에서는 이 최적화가 반드시 필요해 보입니다.;

aru0504   2년 전

안녕하세요. 도와주셔서 감사합니다! 

추가적인 최적화를 진행해봤지만 여전히 시간초과라서 다시 질문드립니다..

- dict -> list로 변경

- node_value, node_next, node_prev 세 개의 리스트를 관리했지만 node_value의 값은 필요없으므로 제거

- 함수 내에 변수 저장하므로 속도 향상 (global 제거)

를 시도했지만.. 통과하지 못했습니다.

추가적인 조언이 있다면 부탁드리겠습니다.

aru0504   2년 전

+ CPP로 해결 후 답변자님 코드 참고했습니다

모르면 풀 수 없는 문제였습니다. pypy에서의 fastio는 처음 봅니다.

위 로직에 fastio만 추가하니 맞았습니다.

감사합니다... 허무하네요

ref: https://stackoverflow.com/ques...

rkaxhdals   2년 전

애초에 저정도 수준의 fastio는 필요 없어야 정상인데... 파이썬이니 악깡버 해야겠죠 ㅠ

아무튼 해결하셨다니 고생 많으셨습니다..!

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