cbbatte   6년 전

color변수를 ArrayList<Integer>로 선언했을때 테스트케이스는 통과하지만 제출은 실패합니다.

하지만 주석처리처럼 int[]로 선언하고 코드를 짜면 통과하더군요..

똑같이 특정 인덱스에 값 넣고 특정인덱스에 있는 값 비교하는 로직인데 무슨 차이일까요?

제가 알기론 둘 간의 차이는 1차원이라는 가정하에 동적할당정도? 밖에없는데

여기서는 왜 되고 안되고의 차이가 나는지 이해가 안갑니다. 설명 해주실분!! ㅠㅠ

chogahui05   6년 전

ArrayList<Integer>로 선언하면..

get 메서드를 썼을 때는 Integer 객체가 리턴되지 않을까요?


그렇다면 if(color.get(adjNode) == cValue)

이 문장은 Integer 객체랑 int형 변수랑 비교하는 것이군요. 물론 Integer 안에 있는 것이 작다면

예를 들어서 Integer 5하고 int 5를 비교하면 같다고 리턴이 될 수도 있겠습니다만..

Integer 2222222220 하고 int 2222222220을 비교하면 같다고 리턴은 안 됩니다. 애초에 객체랑 int형이랑 비교하는 건데요. 

chogahui05   6년 전

제가 예전에 답변했던 글 참고해 보세요.

https://www.acmicpc.net/board/...


비슷한 질문인 거 같습니다. Integer 클래스는 내부적으로 어떻게 구현이 되어 있는지는 모르겠지만

작은 수에 대해서는 new Integer(x) == x가 성립합니다.

그래서 TC를 돌려보면 맞는 거고요.

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