{"id":33392,"date":"2024-11-01T09:16:06","date_gmt":"2024-11-01T09:16:06","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33392"},"modified":"2024-11-01T11:38:53","modified_gmt":"2024-11-01T11:38:53","slug":"java-coding-test-course-grouping-line-segments","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33392\/","title":{"rendered":"Java Coding Test Course, Grouping Line Segments"},"content":{"rendered":"<p><body><\/p>\n<p>Hello! In this coding test lecture, we are dealing with the problem of dividing given line segments into groups. This problem is one of the common questions in various programming languages, particularly requiring the ability to determine whether line segments overlap and to group them efficiently based on this.<\/p>\n<h2>Problem Description<\/h2>\n<p>When there is a list of given line segments, segments that have overlapping parts must be combined into the same group. A line segment is represented by two coordinates (x1, x2), where x1 is always less than x2. Each line segment is given in the form of [x1, x2].<\/p>\n<h3>Problem Definition<\/h3>\n<p>Define a function:<\/p>\n<pre><code>public int groupLineSegments(int[][] segments)<\/code><\/pre>\n<h3>Input<\/h3>\n<ul>\n<li>Number of line segments: n (1 \u2264 n \u2264 100,000)<\/li>\n<li>segments: A 2D array representing the line segments (the starting and ending points of each segment)<\/li>\n<\/ul>\n<h3>Output<\/h3>\n<ul>\n<li>Number of groups of overlapping line segments<\/li>\n<\/ul>\n<h3>Example<\/h3>\n<div class=\"example\">\n<strong>Input:<\/strong> <code>[[1,3], [2,4], [5,6], [8,10], [9,12]]<\/code><br \/>\n<strong>Output:<\/strong> <code>3<\/code><br \/>\n<em>Explanation: [[1,3], [2,4]] is the first group, [[5,6]] is the second group, and [[8,10], [9,12]] is the third group.<\/em>\n<\/div>\n<h2>Problem Solving Process<\/h2>\n<p>To solve this problem, it is necessary to determine the overlaps of the line segments and form groups based on this. We can use the following algorithm.<\/p>\n<h3>Algorithm Steps<\/h3>\n<ul>\n<li>1. Sort the line segments based on the starting point.<\/li>\n<li>2. Check the starting and ending points to divide into groups.<\/li>\n<li>3. If the end point of each group is greater than or equal to the starting point of the next group, combine them into the same group.<\/li>\n<\/ul>\n<h3>Implementation<\/h3>\n<p>Let&#8217;s implement this algorithm in Java.<\/p>\n<pre><code>import java.util.Arrays;\n\npublic class LineSegmentGrouping {\n    \n    public int groupLineSegments(int[][] segments) {\n        \/\/ Sort the segments by the starting point\n        Arrays.sort(segments, (a, b) -> Integer.compare(a[0], b[0]));\n        int groupCount = 0;\n        int currentEnd = Integer.MIN_VALUE;\n\n        for (int[] segment : segments) {\n            if (segment[0] > currentEnd) {\n                \/\/ Start a new group\n                groupCount++;\n                currentEnd = segment[1];\n            } else {\n                \/\/ Update the end point of the group\n                currentEnd = Math.max(currentEnd, segment[1]);\n            }\n        }\n\n        return groupCount;\n    }\n    \n    public static void main(String[] args) {\n        LineSegmentGrouping lsg = new LineSegmentGrouping();\n        int[][] segments = {{1, 3}, {2, 4}, {5, 6}, {8, 10}, {9, 12}};\n        System.out.println(\"Number of groups: \" + lsg.groupLineSegments(segments)); \/\/ 3\n    }\n}\n<\/code><\/pre>\n<h2>Code Explanation<\/h2>\n<p>The above code presents a simple yet efficient way to divide line segments into groups.<\/p>\n<ul>\n<li><strong>Sorting:<\/strong> In the first line, <code>Arrays.sort<\/code> is used to sort the segments in ascending order based on the starting point. This makes it easier to judge overlapping segments.<\/li>\n<li><strong>Group Count:<\/strong> The <code>groupCount<\/code> variable counts the number of groups, while <code>currentEnd<\/code> remembers the maximum end point of the current group.<\/li>\n<li><strong>Condition Check:<\/strong> Each segment is checked to decide whether to start a new group or update the end point of the current group.<\/li>\n<\/ul>\n<h2>Time Complexity<\/h2>\n<p>The time complexity of this solution is O(n log n). Sorting the segments takes O(n log n) time, while the loop for grouping takes O(n). Therefore, the overall time complexity is O(n log n).<\/p>\n<h2>Conclusion<\/h2>\n<p>The problem of dividing line segments into groups requires the ability to judge overlapping intervals and has various applications. I hope this lecture helps you improve your algorithm problem-solving skills and Java coding abilities.<\/p>\n<div class=\"footer\">\n<p>If you found this lecture helpful, please share it with your friends!<\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello! In this coding test lecture, we are dealing with the problem of dividing given line segments into groups. This problem is one of the common questions in various programming languages, particularly requiring the ability to determine whether line segments overlap and to group them efficiently based on this. Problem Description When there is a &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33392\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Java Coding Test Course, Grouping Line Segments&#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-33392","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, Grouping Line Segments - \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\/33392\/\" \/>\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, Grouping Line Segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello! In this coding test lecture, we are dealing with the problem of dividing given line segments into groups. This problem is one of the common questions in various programming languages, particularly requiring the ability to determine whether line segments overlap and to group them efficiently based on this. Problem Description When there is a &hellip; \ub354 \ubcf4\uae30 &quot;Java Coding Test Course, Grouping Line Segments&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33392\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:16:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:38:53+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\/33392\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33392\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Java Coding Test Course, Grouping Line Segments\",\"datePublished\":\"2024-11-01T09:16:06+00:00\",\"dateModified\":\"2024-11-01T11:38:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33392\/\"},\"wordCount\":418,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Java Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33392\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33392\/\",\"name\":\"Java Coding Test Course, Grouping Line Segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:16:06+00:00\",\"dateModified\":\"2024-11-01T11:38:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33392\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33392\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33392\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Coding Test Course, Grouping Line Segments\"}]},{\"@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, Grouping Line Segments - \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\/33392\/","og_locale":"ko_KR","og_type":"article","og_title":"Java Coding Test Course, Grouping Line Segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello! In this coding test lecture, we are dealing with the problem of dividing given line segments into groups. This problem is one of the common questions in various programming languages, particularly requiring the ability to determine whether line segments overlap and to group them efficiently based on this. Problem Description When there is a &hellip; \ub354 \ubcf4\uae30 \"Java Coding Test Course, Grouping Line Segments\"","og_url":"https:\/\/atmokpo.com\/w\/33392\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:16:06+00:00","article_modified_time":"2024-11-01T11:38:53+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\/33392\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33392\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Java Coding Test Course, Grouping Line Segments","datePublished":"2024-11-01T09:16:06+00:00","dateModified":"2024-11-01T11:38:53+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33392\/"},"wordCount":418,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Java Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33392\/","url":"https:\/\/atmokpo.com\/w\/33392\/","name":"Java Coding Test Course, Grouping Line Segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:16:06+00:00","dateModified":"2024-11-01T11:38:53+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33392\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33392\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33392\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Java Coding Test Course, Grouping Line Segments"}]},{"@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\/33392","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=33392"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33392\/revisions"}],"predecessor-version":[{"id":33393,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33392\/revisions\/33393"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33392"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}