{"id":33744,"date":"2024-11-01T09:19:54","date_gmt":"2024-11-01T09:19:54","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33744"},"modified":"2024-11-01T11:46:53","modified_gmt":"2024-11-01T11:46:53","slug":"python-coding-test-course-implementing-absolute-value-heap","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33744\/","title":{"rendered":"Python Coding Test Course, Implementing Absolute Value Heap"},"content":{"rendered":"<p><body><\/p>\n<p>In today&#8217;s lecture, we will take a detailed look at how to implement an absolute value heap. An absolute value heap is a data structure that finds the minimum or maximum based on the absolute value of the given numbers. It operates similarly to a regular heap but works based on absolute values. This lecture will cover everything from problem definition to algorithm design and implementation.<\/p>\n<h2>Problem Definition<\/h2>\n<p>To sort the given integers based on their absolute values, we need to write a program that performs the following tasks:<\/p>\n<ul>\n<li>An absolute value heap can insert integer values.<\/li>\n<li>It can return and remove the minimum value.<\/li>\n<\/ul>\n<p>The input values are provided as follows:<\/p>\n<ul>\n<li>The first line of input contains the number of operations <code>N<\/code>.<\/li>\n<li>Then, <code>N<\/code> lines follow, each containing an integer <code>X<\/code>. If <code>X is 0<\/code>, it returns and removes the minimum value from the heap.<\/li>\n<\/ul>\n<h3>Example Input<\/h3>\n<pre>\n    9\n    1\n    -1\n    0\n    -2\n    0\n    2\n    0\n    -3\n    0\n    <\/pre>\n<h3>Example Output<\/h3>\n<pre>\n    1\n    -1\n    2\n    -2\n    -3\n    <\/pre>\n<h2>Problem-Solving Strategy<\/h2>\n<p>The most important aspect of this problem is that we have to sort the integer values based on their absolute values when inserting. Therefore, when inserting integer values, we can initially use Python&#8217;s <code>heapq<\/code> module to implement a min-heap. However, we need to manage the heap based on absolute values ourselves.<\/p>\n<p>The following strategy can be employed:<\/p>\n<ol>\n<li>Transform the input values into a tuple with two elements and insert them into the heap: (absolute value, original value).<\/li>\n<li>When retrieving the minimum value from the heap, return it according to the order of the original value if the absolute values are the same.<\/li>\n<li>When the input is 0, remove and return the minimum value from the heap.<\/li>\n<\/ol>\n<h2>Implementation Steps<\/h2>\n<p>Now, let&#8217;s implement the absolute value heap based on the above strategy. We can solve the problem using the following code:<\/p>\n<pre>\n    import heapq\n    import sys\n\n    input = sys.stdin.readline\n\n    def absolute_heap():\n        heap = []\n        N = int(input())\n        \n        for _ in range(N):\n            X = int(input().strip())\n\n            if X != 0:\n                # Insert the absolute value and original value as a pair into the heap\n                heapq.heappush(heap, (abs(X), X))\n            else:\n                # When 0 is input, remove and return the minimum value\n                if heap:\n                    print(heapq.heappop(heap)[1])\n                else:\n                    print(0)\n\n    if __name__ == \"__main__\":\n        absolute_heap()\n    <\/pre>\n<h3>Code Explanation<\/h3>\n<p>1. <code>heapq<\/code>: This is Python&#8217;s built-in heap module. It allows us to easily use a min-heap.<\/p>\n<p>2. <code>input<\/code>: It allows for quick input using <code>sys.stdin.readline<\/code>.<\/p>\n<p>3. <code>heap<\/code>: This is a list used to store pairs of absolute values and original values.<\/p>\n<p>4. For each integer <code>X<\/code> read, if <code>X<\/code> is not 0, it inserts its absolute value and original value as a pair into the heap.<\/p>\n<p>5. If <code>X<\/code> is 0, it removes the minimum value from the heap and outputs the original value.<\/p>\n<h2>Complexity Analysis<\/h2>\n<p>The time complexity of this algorithm is as follows:<\/p>\n<ul>\n<li>The time complexity for inserting an element into the heap is <code>O(log N)<\/code>.<\/li>\n<li>The time complexity for removing an element from the heap is also <code>O(log N)<\/code>.<\/li>\n<\/ul>\n<p>Therefore, the overall time complexity of the algorithm is <code>O(N log N)<\/code>.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this lecture, we understood the concept of an absolute value heap and learned how to implement it in Python. The important aspect of implementing an absolute value heap is managing the original and absolute values properly. Based on what we learned today, we hope you will tackle various problems.<\/p>\n<h2>Additional Problems<\/h2>\n<p>Try solving the problem below to deepen your understanding of absolute value heaps:<\/p>\n<blockquote class=\"example\">\n<p><strong>Problem:<\/strong> Write a program to calculate the sum of given numbers using the absolute value heap. Find the minimum value through the absolute value heap and repeat until all inputs are processed.<\/p>\n<\/blockquote>\n<p>To solve the above problem, you need to accumulate the values removed from the heap to keep track of the sum. Write the code yourself and apply the principles learned in this lecture.<\/p>\n<h2>Reference Materials<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.python.org\/3\/library\/heapq.html\">heapq &#8211; The Python Standard Library<\/a><\/li>\n<li><a href=\"https:\/\/programmers.co.kr\/learn\/courses\/30\/lessons\/42628\">Programmers &#8211; Dual Priority Queue Problem Page<\/a><\/li>\n<\/ul>\n<p>Thank you. See you in the next lecture!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In today&#8217;s lecture, we will take a detailed look at how to implement an absolute value heap. An absolute value heap is a data structure that finds the minimum or maximum based on the absolute value of the given numbers. It operates similarly to a regular heap but works based on absolute values. This lecture &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33744\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python Coding Test Course, Implementing Absolute Value Heap&#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":[145],"tags":[],"class_list":["post-33744","post","type-post","status-publish","format-standard","hentry","category-python-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python Coding Test Course, Implementing Absolute Value Heap - \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\/33744\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Coding Test Course, Implementing Absolute Value Heap - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In today&#8217;s lecture, we will take a detailed look at how to implement an absolute value heap. An absolute value heap is a data structure that finds the minimum or maximum based on the absolute value of the given numbers. It operates similarly to a regular heap but works based on absolute values. This lecture &hellip; \ub354 \ubcf4\uae30 &quot;Python Coding Test Course, Implementing Absolute Value Heap&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33744\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:19:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:46: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\/33744\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33744\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Python Coding Test Course, Implementing Absolute Value Heap\",\"datePublished\":\"2024-11-01T09:19:54+00:00\",\"dateModified\":\"2024-11-01T11:46:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33744\/\"},\"wordCount\":564,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33744\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33744\/\",\"name\":\"Python Coding Test Course, Implementing Absolute Value Heap - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:19:54+00:00\",\"dateModified\":\"2024-11-01T11:46:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33744\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33744\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33744\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python Coding Test Course, Implementing Absolute Value Heap\"}]},{\"@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":"Python Coding Test Course, Implementing Absolute Value Heap - \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\/33744\/","og_locale":"ko_KR","og_type":"article","og_title":"Python Coding Test Course, Implementing Absolute Value Heap - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In today&#8217;s lecture, we will take a detailed look at how to implement an absolute value heap. An absolute value heap is a data structure that finds the minimum or maximum based on the absolute value of the given numbers. It operates similarly to a regular heap but works based on absolute values. This lecture &hellip; \ub354 \ubcf4\uae30 \"Python Coding Test Course, Implementing Absolute Value Heap\"","og_url":"https:\/\/atmokpo.com\/w\/33744\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:19:54+00:00","article_modified_time":"2024-11-01T11:46: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\/33744\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33744\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Python Coding Test Course, Implementing Absolute Value Heap","datePublished":"2024-11-01T09:19:54+00:00","dateModified":"2024-11-01T11:46:53+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33744\/"},"wordCount":564,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33744\/","url":"https:\/\/atmokpo.com\/w\/33744\/","name":"Python Coding Test Course, Implementing Absolute Value Heap - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:19:54+00:00","dateModified":"2024-11-01T11:46:53+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33744\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33744\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33744\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Python Coding Test Course, Implementing Absolute Value Heap"}]},{"@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\/33744","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=33744"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33744\/revisions"}],"predecessor-version":[{"id":33745,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33744\/revisions\/33745"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}