https://www.inflearn.com/course/lecture?courseSlug=%EB%91%90%EC%9E%87-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9E%90%EB%B0%94&unitId=148321
에지를 중심으로 그래프를 표현함
가중치가 없는 그래프는 배열의행 2개면 충분함
방향이 없는 그래프와 방향이 없는 그래프가 있음
※ []에 있는 값은 인덱스가 아닌 벨류로 기재하였음
ex) 방향이 있는 그래프
1->2->3
arr[1][2];
arr[2][3];
ex) 방향이 없는 그래프
1-2-3
arr[1][2];
arr[2][1];
arr[2][3];
arr[3][2];
가중치가 있는 그래프는 행을 3개로 늘려 3번째 행에 가중치를 저장
2차원 배열로 자료 구조를 이용하여 그래프를 표현
인접리스트는 ArrayList로 그래프를 표현함
노드 개수만큼 ArrayList를 선언함
Integer 형이면 ArrayList<Integer>[노드개수]로 선언함
ArrayList를 사용하는 이유는 가변적이기 때문
※ 에지 리스트의 개수가 일정하지 않기때문임
가중치가 있는 경우 별도의 Node 객체를 생성하여서 사용
구현은 복잡한 편임
다만 노드와 연결되어 있는 에지를 탐색하는 시간이 매우 뛰어남
노드의 개수가 커도 공간 효율이 좋아 메모리 초과 에러도 발생하지 않음