{"id":34382,"date":"2024-11-01T09:27:30","date_gmt":"2024-11-01T09:27:30","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34382"},"modified":"2024-11-01T11:41:31","modified_gmt":"2024-11-01T11:41:31","slug":"javascript-coding-test-course-dividing-segments-into-groups","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34382\/","title":{"rendered":"JavaScript Coding Test Course, Dividing Segments into Groups"},"content":{"rendered":"<p><body><\/p>\n<p>\n    This course aims to cover &#8220;Grouping Line Segments,&#8221; which is one of the frequently asked problems in JavaScript coding tests.<br \/>\n    This problem tests the process of finding overlapping line segments among the given segments and grouping them accordingly.<br \/>\n    We will examine various situations and considerations that may arise while solving algorithmic problems in detail.\n<\/p>\n<h2>Problem Definition<\/h2>\n<p>\n<strong>Problem:<\/strong> Given an array of line segments, return the number of groups formed by overlapping line segments.\n<\/p>\n<p>\n    For example, let&#8217;s assume we are given the following line segments:\n<\/p>\n<pre><code>\nLine Segments: [[1, 3], [2, 4], [5, 6], [7, 10], [9, 11]]\n<\/code><\/pre>\n<p>\n    There are two groups in this array:<\/p>\n<ul>\n<li>First Group: [[1, 3], [2, 4]]<\/li>\n<li>Second Group: [[5, 6], [7, 10], [9, 11]]<\/li>\n<\/ul>\n<h2>Approach to the Problem<\/h2>\n<p>To solve this problem, we can use the following approach:<\/p>\n<ol>\n<li><strong>Sorting<\/strong>: Sort the line segments based on their start or end points.<\/li>\n<li><strong>Grouping<\/strong>: Traverse through the sorted line segments and group overlapping segments together.<\/li>\n<\/ol>\n<h3>Step 1: Sorting the Line Segments<\/h3>\n<p>\n    Sort the line segments based on their starting points. This makes it easier to determine when segments overlap.\n<\/p>\n<h3>Step 2: Implementing the Grouping Logic<\/h3>\n<p>\n    While traversing the sorted line segments, check if the current segment overlaps with the previous one.<br \/>\n    If they do not overlap, start a new group; if they do overlap, add the current segment to that group.\n<\/p>\n<h2>Example Code<\/h2>\n<p>\n    The following JavaScript code is written based on the above logic.\n<\/p>\n<pre><code>\nfunction groupLines(lines) {\n    \/\/ 1. Sort line segments based on starting points\n    lines.sort((a, b) => a[0] - b[0]);\n\n    let groups = [];\n    let currentGroup = [];\n\n    for (let i = 0; i < lines.length; i++) {\n        const line = lines[i];\n\n        if (currentGroup.length === 0) {\n            currentGroup.push(line);\n        } else {\n            \/\/ If the start of the current segment is less than or equal to the end of the previous segment, they overlap.\n            if (line[0] <= currentGroup[currentGroup.length - 1][1]) {\n                currentGroup.push(line);\n            } else {\n                \/\/ If they do not overlap, save the group and start a new one\n                groups.push(currentGroup);\n                currentGroup = [line];\n            }\n        }\n    }\n\n    \/\/ Add the last group\n    if (currentGroup.length > 0) {\n        groups.push(currentGroup);\n    }\n\n    return groups.length;\n}\n\n\/\/ Example input\nconst lines = [[1, 3], [2, 4], [5, 6], [7, 10], [9, 11]];\nconsole.log(groupLines(lines));  \/\/ Output: 2\n<\/code><\/pre>\n<h2>Code Explanation<\/h2>\n<p>\n    The code above groups the line segments through the following processes:\n<\/p>\n<ol>\n<li><strong>Sorting:<\/strong> Sorted the array of segments in ascending order based on starting points.<\/li>\n<li><strong>Group Searching:<\/strong> Checked if the current segment overlaps with the previous one while traversing each segment.<\/li>\n<li><strong>Group Saving:<\/strong> When encountering a non-overlapping segment, saved the current group and started a new one.<\/li>\n<\/ol>\n<h2>Complexity Analysis<\/h2>\n<p>\n    The time complexity of this algorithm is mainly determined by the sorting part. Sorting takes O(n log n), and the process of traversing the segments and grouping them takes O(n).<br \/>\n    Therefore, the overall time complexity is O(n log n).\n<\/p>\n<p>\n    The space complexity is O(n) in the worst case where no segments overlap.\n<\/p>\n<h2>Conclusion<\/h2>\n<p>\n    In this course, we learned how to determine and group overlapping line segments through the problem &#8220;Grouping Line Segments.&#8221;<br \/>\n    We explored the process of effectively solving the problem using basic algorithm techniques like sorting and searching.\n<\/p>\n<p>\n    Such algorithm problems often appear in real coding tests, so practicing the approaches mentioned above and solving various variations is important.<br \/>\n    We will be covering useful coding test problems in the next course as well, so stay tuned!\n<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This course aims to cover &#8220;Grouping Line Segments,&#8221; which is one of the frequently asked problems in JavaScript coding tests. This problem tests the process of finding overlapping line segments among the given segments and grouping them accordingly. We will examine various situations and considerations that may arise while solving algorithmic problems in detail. Problem &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34382\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;JavaScript Coding Test Course, Dividing Segments into Groups&#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":[141],"tags":[],"class_list":["post-34382","post","type-post","status-publish","format-standard","hentry","category-javascript-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript Coding Test Course, Dividing Segments into Groups - \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\/34382\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Coding Test Course, Dividing Segments into Groups - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"This course aims to cover &#8220;Grouping Line Segments,&#8221; which is one of the frequently asked problems in JavaScript coding tests. This problem tests the process of finding overlapping line segments among the given segments and grouping them accordingly. We will examine various situations and considerations that may arise while solving algorithmic problems in detail. Problem &hellip; \ub354 \ubcf4\uae30 &quot;JavaScript Coding Test Course, Dividing Segments into Groups&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34382\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:27:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:41:31+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\/34382\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34382\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"JavaScript Coding Test Course, Dividing Segments into Groups\",\"datePublished\":\"2024-11-01T09:27:30+00:00\",\"dateModified\":\"2024-11-01T11:41:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34382\/\"},\"wordCount\":410,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Javascript Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34382\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34382\/\",\"name\":\"JavaScript Coding Test Course, Dividing Segments into Groups - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:27:30+00:00\",\"dateModified\":\"2024-11-01T11:41:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34382\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34382\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34382\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript Coding Test Course, Dividing Segments into Groups\"}]},{\"@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":"JavaScript Coding Test Course, Dividing Segments into Groups - \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\/34382\/","og_locale":"ko_KR","og_type":"article","og_title":"JavaScript Coding Test Course, Dividing Segments into Groups - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"This course aims to cover &#8220;Grouping Line Segments,&#8221; which is one of the frequently asked problems in JavaScript coding tests. This problem tests the process of finding overlapping line segments among the given segments and grouping them accordingly. We will examine various situations and considerations that may arise while solving algorithmic problems in detail. Problem &hellip; \ub354 \ubcf4\uae30 \"JavaScript Coding Test Course, Dividing Segments into Groups\"","og_url":"https:\/\/atmokpo.com\/w\/34382\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:27:30+00:00","article_modified_time":"2024-11-01T11:41:31+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\/34382\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34382\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"JavaScript Coding Test Course, Dividing Segments into Groups","datePublished":"2024-11-01T09:27:30+00:00","dateModified":"2024-11-01T11:41:31+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34382\/"},"wordCount":410,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Javascript Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34382\/","url":"https:\/\/atmokpo.com\/w\/34382\/","name":"JavaScript Coding Test Course, Dividing Segments into Groups - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:27:30+00:00","dateModified":"2024-11-01T11:41:31+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34382\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34382\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34382\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"JavaScript Coding Test Course, Dividing Segments into Groups"}]},{"@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\/34382","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=34382"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34382\/revisions"}],"predecessor-version":[{"id":34383,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34382\/revisions\/34383"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}