compareTo 를 잘못 구현하셨습니다.
예를 들어 tree1.year = 1 이고 tree2.year = 1 라고 가정하면
지금 구현하신 대로라면 tree1.compareTo(tree2) == 1, tree2.compareTo(tree1) == 1 이 됩니다.
이는 compareTo 의 계약조건인 sgn(tree1.compareTo(tree2)) == -sgn(tree2.compareTo(tree1)) 을 어긴게 됩니다.
관련된 API 문서를 자세히 읽어보세요.
Java 표준 라이브러리 에서는 잘못 구현된 compareTo 때문에 정렬 등을 할 수 없다고 판단되면 runtime error 를 발생시킬 수도 있습니다.
cocobino 5년 전
다음과같이 봄함수에 Comparable를 활용해 year 기준으로 오름차순 정렬을 한후
Collections.sort(tree.get(x).get(y)); 을 사용하여 양분을 먹게 하였습니다. 헌데 TEST_CASE가 커지면 어긋나게 됩니다.
그래서 저는 가을에 다음과같이 add 0번인덱스에 1살나무를 추가해주는 방식으로 했습니다.
tree.get(nx).get(ny).add(0,new Tree(nx,ny,1,true));
위방식으로 푸니 정답은 맞았는데 가을에 나무가 추가될떄 앞에서 더해주는 방법이 아니라
봄에 나무가 영야분을 먹기전에 year을 기준으로 하는 정렬 설정이 잘못된거일까요 ??
아니면제가 comareTo 함수를 잘못사용한거일까요? 옳바른 사용법을 알고싶습니다.
2. LinkedList 를 사용하면 시간 초과가 났는데 ArrayList 차이점도 궁금합니다.
고수님들 부탁드립니다 !!