{"id":33944,"date":"2024-11-01T09:22:14","date_gmt":"2024-11-01T09:22:14","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33944"},"modified":"2024-11-01T10:54:47","modified_gmt":"2024-11-01T10:54:47","slug":"c-coding-test-course-understanding-friend-relationships","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33944\/","title":{"rendered":"C# Coding Test Course, Understanding Friend Relationships"},"content":{"rendered":"<p><body><\/p>\n<div class=\"problem-statement\">\n<h2>Problem Description<\/h2>\n<p>You are developing an email service that analyzes friendship relationships. Each user has a friend list, and friends form a close relationship with each other. Your task is to determine whether two users are friends based on the given friendship data and to compute the indirect closeness between them, including friends of friends.<\/p>\n<p>The input consists of a friend list and the IDs of the users to check. The friend list is in the form of a list, where each element consists of a pair of user IDs that are friends with each other. Based on this information, write a program to determine if two users are indirectly friends or not.<\/p>\n<h3>Input Example<\/h3>\n<pre>\n    Friend List: [(1, 2), (2, 3), (3, 4), (1, 5)]\n    User ID1: 1\n    User ID2: 4\n    <\/pre>\n<h3>Output Example<\/h3>\n<pre>\n    1 and 4 are friends or indirect friends.\n    <\/pre>\n<\/div>\n<div class=\"solution\">\n<h2>Solution Method<\/h2>\n<p>To solve this problem, you need to use the structure of a graph. Model the friendship relationships as vertices and edges, and explore the relationship between the two users using the BFS (Breadth-First Search) or DFS (Depth-First Search) algorithm. This process will allow you to confirm both direct and indirect friendships.<\/p>\n<h3>1. Graph Modeling<\/h3>\n<p>Create an undirected graph based on the friend list. Each user is represented by their user ID, and the friendship relationship is represented as an edge between two users.<\/p>\n<h3>2. Implementing BFS or DFS<\/h3>\n<p>Now that the graph is created, find the indirect friendship relationship between the given two users using BFS or DFS. During this process, keep track of visited nodes and stop the search if a node is already visited.<\/p>\n<h3>3. Code Example<\/h3>\n<pre><code>\nusing System;\nusing System.Collections.Generic;\n\nclass FriendNetwork\n{\n    private Dictionary<int, List<int>> graph = new Dictionary<int, List<int>>();\n\n    public void AddFriendship(int user1, int user2)\n    {\n        if (!graph.ContainsKey(user1))\n            graph[user1] = new List<int>();\n        if (!graph.ContainsKey(user2))\n            graph[user2] = new List<int>();\n\n        graph[user1].Add(user2);\n        graph[user2].Add(user1);\n    }\n\n    public bool AreFriends(int user1, int user2)\n    {\n        if (user1 == user2) return true;\n        HashSet<int> visited = new HashSet<int>();\n        Queue<int> queue = new Queue<int>();\n        \n        queue.Enqueue(user1);\n        visited.Add(user1);\n\n        while (queue.Count > 0)\n        {\n            int current = queue.Dequeue();\n            foreach (var friend in graph[current])\n            {\n                if (friend == user2)\n                    return true;\n\n                if (!visited.Contains(friend))\n                {\n                    visited.Add(friend);\n                    queue.Enqueue(friend);\n                }\n            }\n        }\n        return false;\n    }\n}\n\nclass Program\n{\n    static void Main(string[] args)\n    {\n        FriendNetwork network = new FriendNetwork();\n        \n        \/\/ Add friendships\n        network.AddFriendship(1, 2);\n        network.AddFriendship(2, 3);\n        network.AddFriendship(3, 4);\n        network.AddFriendship(1, 5);\n\n        \/\/ Check the relationship between two users\n        int user1 = 1;\n        int user2 = 4;\n\n        if (network.AreFriends(user1, user2))\n            Console.WriteLine($\"{user1} and {user2} are friends or indirect friends.\");\n        else\n            Console.WriteLine($\"{user1} and {user2} are not friends.\");\n    }\n}\n<\/code><\/pre>\n<h3>4. Code Explanation<\/h3>\n<p>The code above demonstrates how to manage friendship relationships and verify if two users are friends. The <code>FriendNetwork<\/code> class provides a graph to store the friend list and methods for adding friendships. The <code>AreFriends<\/code> method uses BFS to check the connectivity between the two users.<\/p>\n<h3>5. Complexity Analysis<\/h3>\n<p>The time complexity of this implementation, which uses an adjacency list for the graph, is O(V + E), where V is the number of vertices and E is the number of edges. The space complexity is also O(V + E).<\/p>\n<h2>Conclusion<\/h2>\n<p>In this way, graph and search algorithms can be appropriately utilized to solve friendship relationship problems. In C#, various data structures and algorithms can elegantly address such issues, showcasing strong problem-solving skills in job interviews and coding tests.<\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description You are developing an email service that analyzes friendship relationships. Each user has a friend list, and friends form a close relationship with each other. Your task is to determine whether two users are friends based on the given friendship data and to compute the indirect closeness between them, including friends of friends. &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33944\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C# Coding Test Course, Understanding Friend Relationships&#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-33944","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, Understanding Friend Relationships - \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\/33944\/\" \/>\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, Understanding Friend Relationships - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description You are developing an email service that analyzes friendship relationships. Each user has a friend list, and friends form a close relationship with each other. Your task is to determine whether two users are friends based on the given friendship data and to compute the indirect closeness between them, including friends of friends. &hellip; \ub354 \ubcf4\uae30 &quot;C# Coding Test Course, Understanding Friend Relationships&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33944\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:22:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:54:47+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\/33944\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33944\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C# Coding Test Course, Understanding Friend Relationships\",\"datePublished\":\"2024-11-01T09:22:14+00:00\",\"dateModified\":\"2024-11-01T10:54:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33944\/\"},\"wordCount\":378,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C# Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33944\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33944\/\",\"name\":\"C# Coding Test Course, Understanding Friend Relationships - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:22:14+00:00\",\"dateModified\":\"2024-11-01T10:54:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33944\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33944\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33944\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Coding Test Course, Understanding Friend Relationships\"}]},{\"@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, Understanding Friend Relationships - \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\/33944\/","og_locale":"ko_KR","og_type":"article","og_title":"C# Coding Test Course, Understanding Friend Relationships - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description You are developing an email service that analyzes friendship relationships. Each user has a friend list, and friends form a close relationship with each other. Your task is to determine whether two users are friends based on the given friendship data and to compute the indirect closeness between them, including friends of friends. &hellip; \ub354 \ubcf4\uae30 \"C# Coding Test Course, Understanding Friend Relationships\"","og_url":"https:\/\/atmokpo.com\/w\/33944\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:22:14+00:00","article_modified_time":"2024-11-01T10:54:47+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\/33944\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33944\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C# Coding Test Course, Understanding Friend Relationships","datePublished":"2024-11-01T09:22:14+00:00","dateModified":"2024-11-01T10:54:47+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33944\/"},"wordCount":378,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C# Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33944\/","url":"https:\/\/atmokpo.com\/w\/33944\/","name":"C# Coding Test Course, Understanding Friend Relationships - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:22:14+00:00","dateModified":"2024-11-01T10:54:47+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33944\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33944\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33944\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C# Coding Test Course, Understanding Friend Relationships"}]},{"@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\/33944","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=33944"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33944\/revisions"}],"predecessor-version":[{"id":33945,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33944\/revisions\/33945"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}