{"id":35032,"date":"2024-11-01T09:34:50","date_gmt":"2024-11-01T09:34:50","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=35032"},"modified":"2024-11-01T12:50:03","modified_gmt":"2024-11-01T12:50:03","slug":"%ec%bd%94%ed%8b%80%eb%a6%b0-%ec%bd%94%eb%94%a9%ed%85%8c%ec%8a%a4%ed%8a%b8-%ea%b0%95%ec%a2%8c-%ec%84%a0%eb%b6%84%ec%9d%84-%ea%b7%b8%eb%a3%b9%ec%9c%bc%eb%a1%9c-%eb%82%98%eb%88%84%ea%b8%b0-2","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/35032\/","title":{"rendered":"Kotlin coding test course, grouping line segments"},"content":{"rendered":"<p><body><\/p>\n<div class=\"problem\">\n<h2>Problem Description<\/h2>\n<p>\n            Given a set of line segments, the task is to divide the segments into groups such that no two segments in the same group overlap.<br \/>\n            Each segment is defined by its starting point and endpoint. If there is an overlapping part between segments, they must belong to the same group,<br \/>\n            while segments that do not overlap must belong to different groups.\n        <\/p>\n<h3>Input<\/h3>\n<ul>\n<li>The first line contains the number of segments <code>N<\/code> (1 \u2264 N \u2264 100,000).<\/li>\n<li>From the second line onwards, <code>N<\/code> lines are provided with the starting point <code>l<\/code> and endpoint <code>r<\/code> of each segment (<code>l &lt;= r<\/code>).<\/li>\n<\/ul>\n<h3>Output<\/h3>\n<p>\n            Print the total number of groups needed.\n        <\/p>\n<h3>Example Input<\/h3>\n<pre>\n        5\n        1 3\n        2 5\n        6 8\n        7 10\n        11 15\n        <\/pre>\n<h3>Example Output<\/h3>\n<pre>\n        3\n        <\/pre>\n<h3>Description<\/h3>\n<p>\n            Looking at the given segments, the first and second segments overlap and thus belong to the same group.<br \/>\n            The third and fourth segments also overlap, so they belong to the same group,<br \/>\n            while the last segment belongs to a different group, resulting in a total of 3 groups.\n        <\/p>\n<\/div>\n<div class=\"solution\">\n<h2>Solution Method<\/h2>\n<p>\n            To solve this problem, a correct approach is to sort the segments first,<br \/>\n            then sequentially compare overlapping segments to form groups.<br \/>\n            The problem can be solved in the following steps.\n        <\/p>\n<h3>Step 1: Input<\/h3>\n<p>\n            Input the segments as a list. Since each segment is a pair,<br \/>\n            we will use the <code>Pair<\/code> class to store the segments.\n        <\/p>\n<h3>Step 2: Sort Segments<\/h3>\n<p>\n            The criteria for sorting the segments is their starting point.<br \/>\n            Sort in ascending order of starting points, and if starting points are the same, sort by the shorter endpoint first.\n        <\/p>\n<h3>Step 3: Grouping<\/h3>\n<p>\n            Traverse the sorted list and check if the current segment overlaps with the last segment in the current group.<br \/>\n            If they overlap, they belong to the same group; if they do not overlap, start a new group.\n        <\/p>\n<h3>Step 4: Output Result<\/h3>\n<p>\n            Finally, count and print the number of groups.\n        <\/p>\n<h3>Code Example (Kotlin)<\/h3>\n<pre>\n        data class Segment(val start: Int, val end: Int)\n\n        fun countGroups(segments: List<segment>): Int {\n            val sortedSegments = segments.sortedWith(compareBy({ it.start }, { it.end }))\n            var groupCount = 0\n            var maxEnd = -1\n\n            for (segment in sortedSegments) {\n                if (segment.start &gt; maxEnd) {\n                    groupCount++\n                    maxEnd = segment.end\n                } else {\n                    maxEnd = maxOf(maxEnd, segment.end)\n                }\n            }\n            return groupCount\n        }\n\n        fun main() {\n            val n = readLine()!!.toInt()\n            val segments = List(n) {\n                val (l, r) = readLine()!!.split(\" \").map { it.toInt() }\n                Segment(l, r)\n            }\n            println(countGroups(segments))\n        }\n        <\/segment><\/pre>\n<h3>Conclusion<\/h3>\n<p>\n            Through this problem, we learned how to solve the line segment grouping issue.<br \/>\n            We can effectively determine the number of groups using sorting and list traversal.<br \/>\n            The code structure written in Kotlin shows high reusability and clarity,<br \/>\n            confirming its suitability for this type of problem.<br \/>\n            Since line segment problems frequently appear in coding tests,<br \/>\n            it is advisable to practice similar problems.\n        <\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description Given a set of line segments, the task is to divide the segments into groups such that no two segments in the same group overlap. Each segment is defined by its starting point and endpoint. If there is an overlapping part between segments, they must belong to the same group, while segments that &hellip; <a href=\"https:\/\/atmokpo.com\/w\/35032\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Kotlin 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":[106],"tags":[],"class_list":["post-35032","post","type-post","status-publish","format-standard","hentry","category----en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kotlin 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\/35032\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kotlin coding test course, grouping line segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description Given a set of line segments, the task is to divide the segments into groups such that no two segments in the same group overlap. Each segment is defined by its starting point and endpoint. If there is an overlapping part between segments, they must belong to the same group, while segments that &hellip; \ub354 \ubcf4\uae30 &quot;Kotlin coding test course, grouping line segments&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/35032\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:34:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T12:50: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=\"2\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/35032\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35032\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Kotlin coding test course, grouping line segments\",\"datePublished\":\"2024-11-01T09:34:50+00:00\",\"dateModified\":\"2024-11-01T12:50:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35032\/\"},\"wordCount\":360,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Kotlin coding test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/35032\/\",\"url\":\"https:\/\/atmokpo.com\/w\/35032\/\",\"name\":\"Kotlin coding test course, grouping line segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:34:50+00:00\",\"dateModified\":\"2024-11-01T12:50:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35032\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/35032\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/35032\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kotlin 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":"Kotlin 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\/35032\/","og_locale":"ko_KR","og_type":"article","og_title":"Kotlin coding test course, grouping line segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description Given a set of line segments, the task is to divide the segments into groups such that no two segments in the same group overlap. Each segment is defined by its starting point and endpoint. If there is an overlapping part between segments, they must belong to the same group, while segments that &hellip; \ub354 \ubcf4\uae30 \"Kotlin coding test course, grouping line segments\"","og_url":"https:\/\/atmokpo.com\/w\/35032\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:34:50+00:00","article_modified_time":"2024-11-01T12:50: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":"2\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/35032\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/35032\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Kotlin coding test course, grouping line segments","datePublished":"2024-11-01T09:34:50+00:00","dateModified":"2024-11-01T12:50:03+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/35032\/"},"wordCount":360,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Kotlin coding test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/35032\/","url":"https:\/\/atmokpo.com\/w\/35032\/","name":"Kotlin coding test course, grouping line segments - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:34:50+00:00","dateModified":"2024-11-01T12:50:03+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/35032\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/35032\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/35032\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Kotlin 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\/35032","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=35032"}],"version-history":[{"count":2,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35032\/revisions"}],"predecessor-version":[{"id":38102,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35032\/revisions\/38102"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=35032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=35032"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=35032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}