50번째줄 복사가 시간이 많이 걸리는 것 같습니다.
한번 소트하고 나면 새로운 나무는 앞에 넣으면 되고..
기존 나무는 나이가 1살 먹거나 죽으니까(erase) 소트상태는 유지되니 sort 도 처음 한번만 하고
fall 에도 복사하지 말고 그냥 원본에 앞에 넣으면 전체 결과에 영향을 주지 않을 것 같습니다.
그래도 각 셀별로 관리하는 것보다 많이 느린 것 같네요.
16235번 - 나무 재테크
저도 리스트로 해서 자꾸 시간초과 뜨길래 각 칸을
0, 1, 2, 3, 4
5, 6, 7, 8, 9
이런 식으로 순번을 붙여서 해쉬맵 HashMap<Integer, List<Integer>>로 상수시간으로 접근 후 나무별로 리스트를 관리해줬더니 통과했습니다..
그리고 list에서 죽은 나무들을 remove하지 않고 살아서 성장한 나무들만 새로 리스트를 만들어서 아예 리스트를 교체해줬습니다.
remove가 삭제하는데 O(n)이 걸려서 오버가나나 하고요!
저도 실력이 부족한지라 답변 잘 안다는데 삼성 문제중에 시간초과 문제들이 자주 발생하는 것 같아 해쉬맵을 우선적으로 적용해봐야하지 하고 깨닫게 되어서 이렇게 댓글남깁니다
댓글을 작성하려면 로그인해야 합니다.
zmaaq 5년 전 1
시간초과가 나서 질문드립니다.
처음에는 모든 나무를 하나의 리스트로 관리하였다가 실패해서
살아있는 나무와 죽은 나무를 분리해서 시도했지만 여전히 시간초과가 납니다.
다른 질문을 봤을 때 땅 별로 나무를 관리하면 해결된다는 답변을 보았는데
그렇게 관리했을 때에도 모든 나무에 대해서 체크가 필요하다고 생각하는데
어떤 차이가 있는지 궁금합니다.
또한 sort() 를 사용해서 나이순으로 정렬하는데 이게 시간초과의 원인이 될 수 있을까요?
혹시 그렇다면 다른 대안이 있는지 궁금합니다.