-
[Java] 자바로 인접행렬, 인접리스트 구현하기프로그래밍/JAVA 2022. 10. 13. 11:57
작성 코드
public class Main { static int n, m; static int[][] arr; static ArrayList<Integer>[] list; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); m = Integer.parseInt(st.nextToken()); /* 배열 & 리스트 초기화 */ arr = new int[n + 1][n + 1]; list = new ArrayList[n + 1]; for (int i = 1; i <= n; i++) { list[i] = new ArrayList<>(); } /* 인접행렬 & 인접리스트 생성 */ for (int i = 0; i < m; i++) { st = new StringTokenizer(br.readLine()); int from = Integer.parseInt(st.nextToken()); int to = Integer.parseInt(st.nextToken()); arr[from][to] = 1; arr[to][from] = 1; list[from].add(to); list[to].add(from); } /* 인접행렬 출력 */ for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } System.out.println("================================================"); /* 인접리스트 출력 */ for (int i = 1; i <= n; i++) { System.out.print(i + " : "); for (int j = 0; j < list[i].size(); j++) { System.out.print(list[i].get(j) + " "); } System.out.println(); } } }
입력 값
5 7
1 4
4 1
1 3
4 3
3 5
4 5
4 2출력 결과
0 0 1 1 0
0 0 0 1 0
1 0 0 1 1
1 1 1 0 1
0 0 1 1 0
================================================
1 : 4 4 3
2 : 4
3 : 1 4 5
4 : 1 1 3 5 2
5 : 3 4'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] JVM 메모리 구조(Runtime Data Area) 정리 (0) 2022.10.17 [Java] 자바 스트림(Stream) API 내부 동작 알아보기 (0) 2022.10.14 [Java/Spring] 롬복(Lombok)이란? 활용법 정리 (0) 2022.10.12 [Java] 다형성을 이용하여 null 처리하기 (0) 2022.08.30 [JAVA] 문자열 클래스 (0) 2020.09.07