{"id":33321,"date":"2024-11-01T09:15:31","date_gmt":"2024-11-01T09:15:31","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33321"},"modified":"2024-11-01T11:39:12","modified_gmt":"2024-11-01T11:39:12","slug":"java-coding-test-course-representation-of-graphs","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33321\/","title":{"rendered":"Java Coding Test Course, Representation of Graphs"},"content":{"rendered":"<p><body><\/p>\n<p>Hello! Today we will take a closer look at <strong>graph representation<\/strong> which is frequently asked in coding tests using Java, and solve related algorithm problems. Graphs are a crucial data structure for solving given problems, consisting of vertices and edges. There are various ways to represent graphs, and in this article, we will explain the Adjacency List and Adjacency Matrix methods.<\/p>\n<h2>Graph Representation Methods<\/h2>\n<h3>1. Adjacency List<\/h3>\n<p>An adjacency list is a way of storing a list of adjacent vertices for each vertex. It is usually implemented using arrays or lists. This method is very memory efficient and is useful in operations that proceed relatively slowly.<\/p>\n<pre><code>class Graph {\n    private int vertices; \/\/ number of vertices\n    private LinkedList<integer>[] adjList; \/\/ adjacency list\n    \n    \/\/ graph constructor\n    public Graph(int v) {\n        vertices = v;\n        adjList = new LinkedList[v];\n        for (int i = 0; i &lt; v; i++) {\n            adjList[i] = new LinkedList&lt;&gt;();\n        }\n    }\n\n    \/\/ method to add an edge\n    public void addEdge(int source, int destination) {\n        adjList[source].add(destination);\n        \/\/ If it's an undirected graph, you should also add the next line\n        \/\/ adjList[destination].add(source);\n    }\n}\n<\/integer><\/code><\/pre>\n<h3>2. Adjacency Matrix<\/h3>\n<p>An adjacency matrix is a way of representing a graph using a 2D array. This method allows you to check the existence of an edge in O(1) time complexity, but it has high space complexity and can be inefficient for graphs of variable sizes.<\/p>\n<pre><code>class Graph {\n    private int vertices;\n    private int[][] adjMatrix;\n\n    \/\/ graph constructor\n    public Graph(int v) {\n        vertices = v;\n        adjMatrix = new int[v][v];\n    }\n\n    \/\/ method to add an edge\n    public void addEdge(int source, int destination) {\n        adjMatrix[source][destination] = 1;\n        \/\/ For undirected graphs\n        \/\/ adjMatrix[destination][source] = 1;\n    }\n}\n<\/code><\/pre>\n<h2>Problem: Building Bridges<\/h2>\n<p>Now let&#8217;s solve an actual problem. The given problem is <strong>Building Bridges<\/strong>.<\/p>\n<h3>Problem Description<\/h3>\n<p>Given N points on a 2D plane, we want to construct bridges so that every point can be connected to each other.<br \/>\nThe length of the bridge is the Euclidean distance between two points.<br \/>\nFind the length of the shortest path. Note that two points cannot be connected again during the bridge construction process.<\/p>\n<h3>Input<\/h3>\n<ul>\n<li>The first line contains the number of points N (1 \u2264 N \u2264 100).<\/li>\n<li>The second line contains the coordinates of each point. (x1, y1), (x2, y2), &#8230;, (xN, yN)<\/li>\n<\/ul>\n<h3>Output<\/h3>\n<p>Print the length of the shortest path. (Up to 2 decimal places)<\/p>\n<h3>Problem Solving Approach<\/h3>\n<p>To solve the problem, I will approach it in the following order:<\/p>\n<ol>\n<li>Receive coordinates and store the points.<\/li>\n<li>Calculate the distances between the coordinates to find the bridge lengths.<\/li>\n<li>Use Dijkstra&#8217;s algorithm to find the shortest path.<\/li>\n<li>Print the result up to the second decimal place.<\/li>\n<\/ol>\n<h3>Java Code Implementation<\/h3>\n<pre><code>import java.util.*;\n\nclass Point {\n    int x, y;\n\n    Point(int x, int y) {\n        this.x = x;\n        this.y = y;\n    }\n\n    double distance(Point p) {\n        return Math.sqrt(Math.pow(this.x - p.x, 2) + Math.pow(this.y - p.y, 2));\n    }\n}\n\nclass Graph {\n    private int vertices;\n    private List<point> points;\n    private double[][] adjMatrix;\n\n    public Graph(int v) {\n        vertices = v;\n        points = new ArrayList&lt;&gt;();\n        adjMatrix = new double[v][v];\n    }\n\n    public void addPoint(Point p) {\n        points.add(p);\n        int idx = points.size() - 1;\n        for (int i = 0; i &lt; idx; i++) {\n            double dist = points.get(i).distance(p);\n            adjMatrix[i][idx] = dist;\n            adjMatrix[idx][i] = dist; \/\/ undirected edge\n        }\n    }\n\n    public double dijkstra() {\n        double[] dist = new double[vertices];\n        boolean[] visited = new boolean[vertices];\n\n        Arrays.fill(dist, Double.MAX_VALUE);\n        dist[0] = 0; \/\/ starting point\n\n        for (int i = 0; i &lt; vertices - 1; i++) {\n            int minIndex = findMinIndex(dist, visited);\n            visited[minIndex] = true;\n\n            for (int j = 0; j &lt; vertices; j++) {\n                if (!visited[j] &amp;&amp; adjMatrix[minIndex][j] != 0 &amp;&amp;\n                    dist[minIndex] + adjMatrix[minIndex][j] &lt; dist[j]) {\n                    dist[j] = dist[minIndex] + adjMatrix[minIndex][j];\n                }\n            }\n        }\n\n        return dist[vertices - 1]; \/\/ distance to the endpoint\n    }\n\n    private int findMinIndex(double[] dist, boolean[] visited) {\n        double min = Double.MAX_VALUE;\n        int minIndex = -1;\n        for (int i = 0; i &lt; vertices; i++) {\n            if (!visited[i] &amp;&amp; dist[i] &lt; min) {\n                min = dist[i];\n                minIndex = i;\n            }\n        }\n        return minIndex;\n    }\n}\n\npublic class Main {\n    public static void main(String[] args) {\n        Scanner sc = new Scanner(System.in);\n        int n = sc.nextInt();\n        Graph graph = new Graph(n);\n\n        for (int i = 0; i &lt; n; i++) {\n            int x = sc.nextInt();\n            int y = sc.nextInt();\n            graph.addPoint(new Point(x, y));\n        }\n\n        double result = graph.dijkstra();\n        System.out.printf(\"%.2f\\n\", result);\n    }\n}\n<\/point><\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>Today, we explored graph representation methods and solved an algorithm problem.<br \/>\nThrough this problem, we learned how to handle graphs and how to compute distances between points, as well as implement the shortest path algorithm using adjacency lists and adjacency matrices.<br \/>\nGraphs are a common concept in real life and are very useful in solving complex problems.<\/p>\n<p>Next time, we will look into topics related to search algorithms. Thank you!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello! Today we will take a closer look at graph representation which is frequently asked in coding tests using Java, and solve related algorithm problems. Graphs are a crucial data structure for solving given problems, consisting of vertices and edges. There are various ways to represent graphs, and in this article, we will explain the &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33321\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Java Coding Test Course, Representation of Graphs&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[139],"tags":[],"class_list":["post-33321","post","type-post","status-publish","format-standard","hentry","category-java-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java Coding Test Course, Representation of Graphs - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/33321\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Coding Test Course, Representation of Graphs - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello! Today we will take a closer look at graph representation which is frequently asked in coding tests using Java, and solve related algorithm problems. Graphs are a crucial data structure for solving given problems, consisting of vertices and edges. There are various ways to represent graphs, and in this article, we will explain the &hellip; \ub354 \ubcf4\uae30 &quot;Java Coding Test Course, Representation of Graphs&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33321\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:15:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:39:12+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33321\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33321\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Java Coding Test Course, Representation of Graphs\",\"datePublished\":\"2024-11-01T09:15:31+00:00\",\"dateModified\":\"2024-11-01T11:39:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33321\/\"},\"wordCount\":392,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Java Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33321\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33321\/\",\"name\":\"Java Coding Test Course, Representation of Graphs - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:15:31+00:00\",\"dateModified\":\"2024-11-01T11:39:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33321\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33321\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33321\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Coding Test Course, Representation of Graphs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java Coding Test Course, Representation of Graphs - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/33321\/","og_locale":"ko_KR","og_type":"article","og_title":"Java Coding Test Course, Representation of Graphs - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello! Today we will take a closer look at graph representation which is frequently asked in coding tests using Java, and solve related algorithm problems. Graphs are a crucial data structure for solving given problems, consisting of vertices and edges. There are various ways to represent graphs, and in this article, we will explain the &hellip; \ub354 \ubcf4\uae30 \"Java Coding Test Course, Representation of Graphs\"","og_url":"https:\/\/atmokpo.com\/w\/33321\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:15:31+00:00","article_modified_time":"2024-11-01T11:39:12+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33321\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33321\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Java Coding Test Course, Representation of Graphs","datePublished":"2024-11-01T09:15:31+00:00","dateModified":"2024-11-01T11:39:12+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33321\/"},"wordCount":392,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Java Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33321\/","url":"https:\/\/atmokpo.com\/w\/33321\/","name":"Java Coding Test Course, Representation of Graphs - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:15:31+00:00","dateModified":"2024-11-01T11:39:12+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33321\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33321\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33321\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Java Coding Test Course, Representation of Graphs"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=33321"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33321\/revisions"}],"predecessor-version":[{"id":33322,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33321\/revisions\/33322"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}