# 그래프와 인접 행렬 아래의 방향 그래프 G를 인접 행렬로 표현하면 그 오른쪽과 같다. ![클라우드스터딩-자료구조-방향-그래프-인접-행렬-1](https://i.imgur.com/gw1tAm6.png) 위 그래프 G는 3개의 정점 V와 4개의 간선 E로 구성되어있는데, 이를 수식으로 표현하면 다음과 같다. $$ \begin{align} V(G) &= \\{ 0, 1, 2 \\} \\\ E(G) &= \\{ <0,1>, <1,2>, <2,0>, <2,1>\\} \end{align} $$ ## 문제 다음 방향 그래프를 인접 행렬(adjacency matrix)로 구현하려 한다. ![클라우드스터딩-자료구조-방향-그래프-인접-행렬](https://i.imgur.com/Ia5xW5C.png) 주어진 코드를 완성하고 이에 적절한 입력 값을 넣어, 출력 예와 같은 결과를 얻으시오. ## 입력 예 입력 형식은 아래와 같습니다. - LINE 1: 정점의 수 - LINE 2: 간선의 수 - LINE 3: 간선의 정보 아래는 4개의 정점과 4개의 간선 {<0,1>, <0,2>, <2,0>, <3,2>} 에 대한 입력입니다. ``` 4 4 0 1 0 2 2 0 3 2 ``` ## 출력 예 입력에 따른 방향 그래프의 인접 행렬 결과 ``` 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 ```
관련 강의로 이동

코드: java 1.8

import java.util.Scanner; public class GraphPractice1 { public static void main(String[] args) { // 입력값 받기 Scanner input = new Scanner(String.join(" ", args)); // 변수 생성 int nodeCnt = input.nextInt(); // 정점 수 int lineCnt = input.nextInt(); // 간선 수 // 그래프 및 정점 생성 DirectedGraph graph = new DirectedGraph(nodeCnt); // 간선 추가 for (int i = 0; i < lineCnt; i++) { int startNode = input.nextInt(); int endNode = input.nextInt(); graph.addEdge(startNode, endNode); } // 인접행렬 출력 graph.printMatrix(); } } class DirectedGraph { private int n; // 정점 수 private int[][] matrix; // 인접 행렬 // 정점 V = { 0, 1, ..., n-1 }를 갖는 그래프 생성 public DirectedGraph(int n) { /* 1. 생성자를 완성해주세요. */ } // 간선 <start, end>를 추가 public void addEdge(int start, int end) { /* 2. 해당 메소드를 완성해주세요. */ } // 인점 행렬을 출력 public void printMatrix() { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.printf("%d ", matrix[i][j]); } System.out.println(); } } }

입력

정답이 궁금하다면? 코드를 제출해보세요!