[알고리즘 #2] 이차원 ArrayList 사용하기

도경원's avatar
Aug 27, 2025
[알고리즘 #2] 이차원 ArrayList 사용하기
이차원 ArrayList를 이용한 그래프 구현

1. 이차원 ArrayList 선언과 초기화

class Edge { int endNode; int value; }
그래프의 에지를 표현하는 클래스를 만들었다.
ArrayList<Edge> List[] = new ArrayList[10];
크기가 10이고 자료형이 ArrayList인 배열을 선언한 코드이다. 보통 이렇게 선언하면 초기화가 완료되었다고 착각하는 경우가 있지만 아직 10개의 ArrayList 각각에 다음과 같은 생성 작업(메모리 할당)을 추가로 해야한다.
for (int i=0; i<10; i++) { List[i] = new ArrayList<Edge>(); }
이제 초기화를 완료했다. 이어서 이렇게 생성한 이차원 ArrayList에 그래프 데이터를 저장해 보자.

2. 그래프 데이터 저장하기

notion image
위의 그래프가 있다고 가정했다.
💬
3 4 // 노드가 3개, 에지가 4개인 그래프
1 2 4 // 1번 노드에서 2번 노드로 가는 가중치 4의 에지가 있음
2 1 10
1 3 7
3 2 6
위의 입력값을 ArrayList 자료구조를 이용해서 저장한다.
for (int i = 0; i < E; i++) { st = new StringTokenizer(br.readLine()); int s = Integer.parseInt(st.nextToken()); int e = Integer.parseInt(st.nextToken()); int v = Integer.parseInt(st.nextToken()); list[s].add(new Edge(e, v)); }

3. 그래프 데이터 가져오기

1번 노드에서 시작되는 에지 데이터 가져오자
for (int i = 0; i < list[1].size(); i++) { Edge tmp = list[1].get(i); int next = tmp.endNode; int value = tmp.value; }
notion image
 
Share article

Gyeongwon's blog