{"id":33918,"date":"2024-11-01T09:21:59","date_gmt":"2024-11-01T09:21:59","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33918"},"modified":"2024-11-01T10:55:03","modified_gmt":"2024-11-01T10:55:03","slug":"c-coding-test-course-i-dont-want-to-be-a-liar","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33918\/","title":{"rendered":"C# Coding Test Course, I Don&#8217;t Want to Be a Liar"},"content":{"rendered":"<p><body><\/p>\n<h2>Problem Description<\/h2>\n<p>\n        Starting from a certain location on a street and during the journey to a specific point, one encounters various people and hears different stories from them.<br \/>\n        These individuals can either tell the truth or lie, and we must determine the truth based on what everyone is saying.<br \/>\n        Implement an algorithm to determine your position based on the given data.\n    <\/p>\n<h3>Problem Definition<\/h3>\n<p>\n        Among N people, each person can either tell the truth or lie about what they know.<br \/>\n        Each person should be able to determine their truthfulness based on the information from others.<br \/>\n        Based on the given conversation information, calculate the number of possible individuals who can speak the truth at a specific point.\n    <\/p>\n<h3>Input Format<\/h3>\n<ul>\n<li>The first line contains the number of people, N.<\/li>\n<li>The second line contains conversation information between people. Each piece of information is in the format &#8220;A B T\/F&#8221;, where A is the information provider, B is the information receiver, T signifies truth, and F signifies a lie.<\/li>\n<\/ul>\n<h3>Output Format<\/h3>\n<p>\n        Output the total number of people who can speak the truth.\n    <\/p>\n<h2>Problem Solving Course<\/h2>\n<h3>1. Understanding the Problem<\/h3>\n<p>\n        To understand the problem, let&#8217;s analyze the meaning of the provided data.<br \/>\n        People communicate with each other, and we need to establish clear rules regarding whether the information from A to B is true or false.<br \/>\n        In such cases, we can represent this information in a graph and use algorithms like DFS or BFS to determine truthfulness.\n    <\/p>\n<h3>2. Algorithm Design<\/h3>\n<p>\n        We need to create a graph to represent the relationships of information transmission and consider all possible combinations of truths and lies that can occur in conversations.<br \/>\n        Using the DFS (Depth First Search) algorithm, the process of propagating truths and lies through each person is as follows.\n    <\/p>\n<h3>3. C# Code Implementation<\/h3>\n<pre>\n        <code>\n        using System;\n        using System.Collections.Generic;\n\n        class Program\n        {\n            static void Main(string[] args)\n            {\n                \/\/ Input\n                int N = int.Parse(Console.ReadLine());\n                List<Tuple<int, bool>> conversations = new List<Tuple<int, bool>>();\n                string line;\n                while ((line = Console.ReadLine()) != null && line.Length > 0)\n                {\n                    var parts = line.Split(' ');\n                    int A = int.Parse(parts[0]);\n                    int B = int.Parse(parts[1]);\n                    bool isTruth = parts[2].Equals(\"T\");\n                    conversations.Add(new Tuple<int, bool>(A, B, isTruth));\n                }\n\n                \/\/ Graph formation\n                Dictionary<int, List<Tuple<int, bool>>> graph = new Dictionary<int, List<Tuple<int, bool>>>();\n                foreach (var convo in conversations)\n                {\n                    if (!graph.ContainsKey(convo.Item1))\n                        graph[convo.Item1] = new List<Tuple<int, bool>>();\n                    graph[convo.Item1].Add(new Tuple<int, bool>(convo.Item2, convo.Item3));\n                }\n\n                \/\/ Perform DFS\n                HashSet<int> visited = new HashSet<int>();\n                int truthfulCount = 0;\n\n                void DFS(int person)\n                {\n                    if (visited.Contains(person)) return;\n                    visited.Add(person);\n                    truthfulCount++;\n                    if (graph.ContainsKey(person))\n                    {\n                        foreach (var neighbor in graph[person])\n                        {\n                            if (neighbor.Item2) \/\/ Case of speaking the truth\n                                DFS(neighbor.Item1);\n                        }\n                    }\n                }\n\n                foreach (var person in graph.Keys)\n                {\n                    if (!visited.Contains(person))\n                    {\n                        DFS(person);\n                    }\n                }\n\n                \/\/ Output result\n                Console.WriteLine(truthfulCount);\n            }\n        }\n        <\/code>\n        <\/pre>\n<h3>4. Code Explanation<\/h3>\n<p>\n        The above C# code illustrates a simple way to solve the problem using the DFS algorithm.<br \/>\n        First, it takes the input and constructs a graph based on the conversation information between people.<br \/>\n        Then, it executes DFS for each person to calculate the number of individuals who can speak the truth and outputs the result.\n    <\/p>\n<h3>5. Time Complexity Analysis<\/h3>\n<p>\n        The time complexity of this algorithm is O(V + E).<br \/>\n        Here, V represents the number of people, and E represents the number of conversations.<br \/>\n        Thus, the time taken to explore all vertices and edges of the graph is generally considered efficient.\n    <\/p>\n<h3>6. Code Improvement and Optimization<\/h3>\n<p>\n        Additionally, one could consider using BFS instead of DFS for optimization.<br \/>\n        Moreover, introducing memoization to store already confirmed results of truths and lies would allow for quicker returns on similar requests in the future.\n    <\/p>\n<h2>Conclusion<\/h2>\n<p>\n        In this course, we explored how to construct algorithms to solve the given problem using C#.<br \/>\n        By utilizing graph algorithms and DFS, we learned the process of calculating the number of individuals who can speak the truth, which equipped us with useful approaches for real coding tests.<br \/>\n        I hope this helps improve problem-solving skills by practicing various problem types and enhancing understanding of algorithms.\n    <\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description Starting from a certain location on a street and during the journey to a specific point, one encounters various people and hears different stories from them. These individuals can either tell the truth or lie, and we must determine the truth based on what everyone is saying. Implement an algorithm to determine your &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33918\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C# Coding Test Course, I Don&#8217;t Want to Be a Liar&#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-33918","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, I Don&#039;t Want to Be a Liar - \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\/33918\/\" \/>\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, I Don&#039;t Want to Be a Liar - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description Starting from a certain location on a street and during the journey to a specific point, one encounters various people and hears different stories from them. These individuals can either tell the truth or lie, and we must determine the truth based on what everyone is saying. Implement an algorithm to determine your &hellip; \ub354 \ubcf4\uae30 &quot;C# Coding Test Course, I Don&#8217;t Want to Be a Liar&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33918\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:21:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:55:03+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\/33918\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33918\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C# Coding Test Course, I Don&#8217;t Want to Be a Liar\",\"datePublished\":\"2024-11-01T09:21:59+00:00\",\"dateModified\":\"2024-11-01T10:55:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33918\/\"},\"wordCount\":509,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C# Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33918\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33918\/\",\"name\":\"C# Coding Test Course, I Don't Want to Be a Liar - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:21:59+00:00\",\"dateModified\":\"2024-11-01T10:55:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33918\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33918\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33918\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Coding Test Course, I Don&#8217;t Want to Be a Liar\"}]},{\"@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, I Don't Want to Be a Liar - \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\/33918\/","og_locale":"ko_KR","og_type":"article","og_title":"C# Coding Test Course, I Don't Want to Be a Liar - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description Starting from a certain location on a street and during the journey to a specific point, one encounters various people and hears different stories from them. These individuals can either tell the truth or lie, and we must determine the truth based on what everyone is saying. Implement an algorithm to determine your &hellip; \ub354 \ubcf4\uae30 \"C# Coding Test Course, I Don&#8217;t Want to Be a Liar\"","og_url":"https:\/\/atmokpo.com\/w\/33918\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:21:59+00:00","article_modified_time":"2024-11-01T10:55:03+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\/33918\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33918\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C# Coding Test Course, I Don&#8217;t Want to Be a Liar","datePublished":"2024-11-01T09:21:59+00:00","dateModified":"2024-11-01T10:55:03+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33918\/"},"wordCount":509,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C# Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33918\/","url":"https:\/\/atmokpo.com\/w\/33918\/","name":"C# Coding Test Course, I Don't Want to Be a Liar - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:21:59+00:00","dateModified":"2024-11-01T10:55:03+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33918\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33918\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33918\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C# Coding Test Course, I Don&#8217;t Want to Be a Liar"}]},{"@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\/33918","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=33918"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33918\/revisions"}],"predecessor-version":[{"id":33919,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33918\/revisions\/33919"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}