{"id":34060,"date":"2024-11-01T09:23:41","date_gmt":"2024-11-01T09:23:41","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34060"},"modified":"2024-11-01T10:53:48","modified_gmt":"2024-11-01T10:53:48","slug":"c-coding-test-course-finding-the-critical-path","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34060\/","title":{"rendered":"C# Coding Test Course, Finding the Critical Path"},"content":{"rendered":"<p><body><\/p>\n<h2>Problem Description<\/h2>\n<p>This is a problem of finding the critical path in a given directed graph. The critical path is represented by nodes and edges in the graph and is about solving for the longest path. The given graph consists of <code>n<\/code> number of nodes and <code>m<\/code> number of edges.<\/p>\n<h3>Input Format<\/h3>\n<ul>\n<li>The first line contains integers <code>n<\/code> and <code>m<\/code>.<\/li>\n<li>The next <code>m<\/code> lines each contain a pair of integers <code>u<\/code> and <code>v<\/code>. This represents an edge from node <code>u<\/code> to node <code>v<\/code>.<\/li>\n<\/ul>\n<h3>Output Format<\/h3>\n<p>Output the length of the longest path.<\/p>\n<h2>Example Input<\/h2>\n<pre>\n    6 7\n    1 2\n    1 3\n    2 4\n    3 4\n    4 5\n    5 6\n    3 6\n    <\/pre>\n<h2>Example Output<\/h2>\n<pre>4<\/pre>\n<h2>Problem Solving Process<\/h2>\n<p>To solve this problem, we can use the following method.<\/p>\n<h3>Step 1: Graph Representation<\/h3>\n<p>Represent the given directed graph in the form of an <code>Adjacency List<\/code>. This allows us to easily check which nodes can be reached from each node.<\/p>\n<h3>Step 2: Topological Sorting<\/h3>\n<p>To find the longest path, we need to visit all the nodes in the graph once. We use <code>topological sorting<\/code> for this purpose. Through topological sorting, all nodes can be visited in order.<\/p>\n<h3>Step 3: Longest Path Calculation<\/h3>\n<p>After completing the topological sort, we calculate the longest path from the starting node to each node. At this time, we use an array to store the values of the longest path.<\/p>\n<h3>Step 4: Code Implementation<\/h3>\n<p>Below is an example of code implementation to find the critical path using C#:<\/p>\n<pre><code>\nusing System;\nusing System.Collections.Generic;\n\nclass Program {\n    static void Main() {\n        int n = 6; \/\/ Number of nodes\n        int m = 7; \/\/ Number of edges\n        List<int>[] graph = new List<int>[n + 1];\n        for (int i = 0; i &lt;= n; i++) {\n            graph[i] = new List<int>();\n        }\n\n        \/\/ Input edge information\n        graph[1].Add(2);\n        graph[1].Add(3);\n        graph[2].Add(4);\n        graph[3].Add(4);\n        graph[4].Add(5);\n        graph[5].Add(6);\n        graph[3].Add(6);\n        \n        \/\/ Adjacency matrix for topological sorting\n        int[] inDegree = new int[n + 1];\n        foreach (var edges in graph) {\n            foreach (var v in edges) {\n                inDegree[v]++;\n            }\n        }\n\n        \/\/ Queue for topological sorting\n        Queue<int> queue = new Queue<int>();\n        for (int i = 1; i &lt;= n; i++) {\n            if (inDegree[i] == 0) {\n                queue.Enqueue(i);\n            }\n        }\n        \n        \/\/ Longest path calculation\n        int[] longest = new int[n + 1];\n        while (queue.Count &gt; 0) {\n            int u = queue.Dequeue();\n            foreach (var v in graph[u]) {\n                longest[v] = Math.Max(longest[v], longest[u] + 1);\n                inDegree[v]--;\n                if (inDegree[v] == 0) {\n                    queue.Enqueue(v);\n                }\n            }\n        }\n\n        \/\/ Output result\n        int maxPath = 0;\n        for (int i = 1; i &lt;= n; i++) {\n            maxPath = Math.Max(maxPath, longest[i]);\n        }\n        Console.WriteLine(maxPath);\n    }\n}\n    <\/int><\/int><\/int><\/int><\/int><\/code><\/pre>\n<h3>Code Explanation<\/h3>\n<p>The code above works as follows:<\/p>\n<ol>\n<li>It represents the graph using the <code>List<\/code> data structure.<\/li>\n<li>Calculates the in-degree of each node for all edges.<\/li>\n<li>Adds nodes with in-degree of 0 to the queue for topological sorting.<\/li>\n<li>Updates the longest path for each node in the order of the topological sort.<\/li>\n<li>Finally, it outputs the length of the longest path.<\/li>\n<\/ol>\n<h2>Conclusion<\/h2>\n<p>The problem of finding the critical path can be efficiently solved through topological sorting and longest path calculation. This method can be applied to various path optimization problems, making basic understanding and practice essential.<\/p>\n<p>I hope this article helps in preparing for C# coding tests! If you have any additional questions or need further explanations, please leave a comment.<\/p>\n<footer>\n<small>Author: [Your Name]<\/small><br \/>\n<\/footer>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description This is a problem of finding the critical path in a given directed graph. The critical path is represented by nodes and edges in the graph and is about solving for the longest path. The given graph consists of n number of nodes and m number of edges. Input Format The first line &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34060\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C# Coding Test Course, Finding the Critical Path&#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":[90],"tags":[],"class_list":["post-34060","post","type-post","status-publish","format-standard","hentry","category-c-coding-test-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C# Coding Test Course, Finding the Critical Path - \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\/34060\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Coding Test Course, Finding the Critical Path - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description This is a problem of finding the critical path in a given directed graph. The critical path is represented by nodes and edges in the graph and is about solving for the longest path. The given graph consists of n number of nodes and m number of edges. Input Format The first line &hellip; \ub354 \ubcf4\uae30 &quot;C# Coding Test Course, Finding the Critical Path&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34060\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:23:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:53:48+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=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/34060\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34060\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C# Coding Test Course, Finding the Critical Path\",\"datePublished\":\"2024-11-01T09:23:41+00:00\",\"dateModified\":\"2024-11-01T10:53:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34060\/\"},\"wordCount\":344,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C# Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34060\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34060\/\",\"name\":\"C# Coding Test Course, Finding the Critical Path - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:23:41+00:00\",\"dateModified\":\"2024-11-01T10:53:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34060\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34060\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34060\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Coding Test Course, Finding the Critical Path\"}]},{\"@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":"C# Coding Test Course, Finding the Critical Path - \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\/34060\/","og_locale":"ko_KR","og_type":"article","og_title":"C# Coding Test Course, Finding the Critical Path - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description This is a problem of finding the critical path in a given directed graph. The critical path is represented by nodes and edges in the graph and is about solving for the longest path. The given graph consists of n number of nodes and m number of edges. Input Format The first line &hellip; \ub354 \ubcf4\uae30 \"C# Coding Test Course, Finding the Critical Path\"","og_url":"https:\/\/atmokpo.com\/w\/34060\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:23:41+00:00","article_modified_time":"2024-11-01T10:53:48+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":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/34060\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34060\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C# Coding Test Course, Finding the Critical Path","datePublished":"2024-11-01T09:23:41+00:00","dateModified":"2024-11-01T10:53:48+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34060\/"},"wordCount":344,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C# Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34060\/","url":"https:\/\/atmokpo.com\/w\/34060\/","name":"C# Coding Test Course, Finding the Critical Path - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:23:41+00:00","dateModified":"2024-11-01T10:53:48+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34060\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34060\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34060\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C# Coding Test Course, Finding the Critical Path"}]},{"@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\/34060","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=34060"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34060\/revisions"}],"predecessor-version":[{"id":34061,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34060\/revisions\/34061"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}