inblog logo
|
Gyeongwon's blog
    Algorithm

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

    도경원's avatar
    도경원
    Aug 27, 2025
    [알고리즘 #2] 이차원 ArrayList 사용하기
    Contents
    1. 이차원 ArrayList 선언과 초기화2. 그래프 데이터 저장하기3. 그래프 데이터 가져오기
    이차원 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
    Contents
    1. 이차원 ArrayList 선언과 초기화2. 그래프 데이터 저장하기3. 그래프 데이터 가져오기

    Gyeongwon's blog

    RSS·Powered by Inblog