반응형
요번 거는 간단한거.. 근데 뭐가 문제인지 모르고 좀 헤맸다.
원래 알고리즘 풀 때 리스트랑 배열을 같이 쓰는 것을 안 좋아하는데, 오늘은 무슨 바람이 불었는지 이렇게 풀고 싶었다.
public class Main {
public static void main(String[] args) {
List<Integer>[] graph = new ArrayList[3];
Arrays.fill(graph, new ArrayList<>());
for (int i = 0; i < 3; i++) {
graph[i].add(i);
}
System.out.println(Arrays.toString(graph));
}
}
이런 식으로 List<Integer>[] 로 이차원 배?열을 만들었다.
그리고 Arrays.fill로 각 배열 요소에 ArrayList를 넣어주었다.
그리고 (원래는 입력 받아 넣겠지만 패스하고) 반복문으로 각 인덱스에 해당 인덱스를 리스트에 넣도록 해주었다.
[[0], [1], [2]]
예상 출력 결과는 위일 줄 알았다.
[[0, 1, 2], [0, 1, 2], [0, 1, 2]]
하지만 결과는 이랬다.
지금은 이렇게 for 문으로 순서대로 숫자를 넣으니 바로 리스트가 같은 인스턴스로 들어갔구나 유추가 쉬웠지만, 내가 문제 풀 때는 입력이 다양했어서 알아채기가 힘들었다.
public class Arrays {
public static void fill(Object[] a, Object val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
}
문제는 Arrays.fill 부분이었다. 각 요소별 넣어줄 줄 알았는데... 이 멍청이 ㅠㅠ
그래서 배열이나 컬렉션 같이 주소를 넣어주는 거는 조심히 써야겠다.
public class Main {
public static void main(String[] args) {
List<List<Integer>> graph = new ArrayList<>();
for (int i = 0; i < 3; i++) {
graph.add(new ArrayList<>());
}
}
}
지금까지 해왔던 대로 앞으로는 그냥 이렇게 List<LIst<>> 쓰면 되겠다.
간단한 건데 어이없어서 글로 써본다...
반응형
'TIL' 카테고리의 다른 글
| TIL #131 : Spring Kafka에서 @KafkaListener 기본 컨테이너 팩토리 설정 오류 해결 (1) | 2025.06.09 |
|---|---|
| TIL #130 : 컨트롤러 테스트에서 커스텀 UserDetails 인증 객체 사용하기 (0) | 2025.04.10 |
| TIL #129 : 구글 번역 → next-intl 전환으로 렌더링 속도 70% 개선 (2.34s → 0.71s) (0) | 2025.04.08 |
| TIL #128 : PNG 이미지를 WebP 확장자로 변환하여 95% 용량 절감 (0) | 2025.04.07 |
| TIL #127 : Axios Interceptor 도입으로 인증 공통화 및 141줄 절감 (0) | 2025.04.07 |