<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <copyright>Copyright ⓒ RWB 2021.05</copyright>
  <description>The π-th Alpaca's Chaotic Dev Log</description>
  <generator>Notes from the π-th Alpaca</generator>
  <language>en-US</language>
  <lastBuildDate>Wed, 26 Aug 2026 16:55:31 GMT</lastBuildDate>
  <link>https://blog.itcode.dev/en</link>
  <managingEditor>psj2716@gmail.com</managingEditor>
  <pubDate>Sat, 26 Jun 2021 23:36:57 GMT</pubDate>
  <title>Notes from the π-th Alpaca</title>
  <webMaster>psj2716@gmail.com</webMaster>
  <item>
    <description>The π-th Alpaca's Chaotic Dev Log</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en</guid>
    <link>https://blog.itcode.dev/en</link>
    <pubDate>Wed, 26 Aug 2026 16:55:31 GMT</pubDate>
    <title>Home</title>
  </item>
  <item>
    <description>📚🦙 Currently scribbling something...</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/posts</guid>
    <link>https://blog.itcode.dev/en/posts</link>
    <pubDate>Wed, 26 Aug 2026 16:55:31 GMT</pubDate>
    <title>Posts</title>
  </item>
  <item>
    <description>💻🦙 Tinkering with something...</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/projects</guid>
    <link>https://blog.itcode.dev/en/projects</link>
    <pubDate>Wed, 26 Aug 2026 16:55:31 GMT</pubDate>
    <title>Projects</title>
  </item>
  <item>
    <description>💝🦙 Excitedly reading...</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/comments</guid>
    <link>https://blog.itcode.dev/en/comments</link>
    <pubDate>Wed, 26 Aug 2026 16:55:31 GMT</pubDate>
    <title>Comments</title>
  </item>
  <item>
    <category>TypeScript</category>
    <category>React</category>
    <description>Let's implement an Infinite Scroll component from scratch in a vanilla React.js environment</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/07/22/react-component-infinite-scroll</guid>
    <link>https://blog.itcode.dev/en/2024/07/22/react-component-infinite-scroll</link>
    <pubDate>Mon, 22 Jul 2024 12:43:03 GMT</pubDate>
    <title>[React Component] Building an Infinite Scroll Component</title>
  </item>
  <item>
    <category>TypeScript</category>
    <category>React</category>
    <category>useEffect</category>
    <category>useLayoutEffect</category>
    <description>useEffect and useLayoutEffect are the representative hooks for handling rendering in React. Let's look at the characteristics of each of these hooks, which seem similar yet different.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/07/11/use-effect-use-layout-effect</guid>
    <link>https://blog.itcode.dev/en/2024/07/11/use-effect-use-layout-effect</link>
    <pubDate>Wed, 10 Jul 2024 16:47:46 GMT</pubDate>
    <title>useEffect &amp; useLayoutEffect</title>
  </item>
  <item>
    <category>JavaScript</category>
    <category>TypeScript</category>
    <category>React</category>
    <category>Observer API</category>
    <category>ReportingObserver</category>
    <description>The PerformanceObserver API is an observer specialized for measuring a page's performance metrics. Let's take a brief look at this observer and how to use it.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/30/observer-api-6</guid>
    <link>https://blog.itcode.dev/en/2024/06/30/observer-api-6</link>
    <pubDate>Sat, 29 Jun 2024 17:08:13 GMT</pubDate>
    <title>[Deep Dive into the Observer API] 6. ReportingObserver</title>
  </item>
  <item>
    <category>JavaScript</category>
    <category>TypeScript</category>
    <category>React</category>
    <category>Observer API</category>
    <category>PerformanceObserver</category>
    <description>The PerformanceObserver API is an observer specialized for measuring a page's performance metrics. Let's take a brief look at this observer and how to use it.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/27/observer-api-5</guid>
    <link>https://blog.itcode.dev/en/2024/06/27/observer-api-5</link>
    <pubDate>Thu, 27 Jun 2024 02:27:14 GMT</pubDate>
    <title>[Deep Dive into the Observer API] 5. PerformanceObserver</title>
  </item>
  <item>
    <category>JavaScript</category>
    <category>TypeScript</category>
    <category>React</category>
    <category>Observer API</category>
    <category>MutationObserver</category>
    <description>The MutationObserver API is an observer specialized for detecting changes in the DOM. It can detect not only size changes like width or height, but also changes in attributes like class. Let's look at how to use this observer, and how to use it conveniently in React through a custom hook.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/24/observer-api-4</guid>
    <link>https://blog.itcode.dev/en/2024/06/24/observer-api-4</link>
    <pubDate>Sun, 23 Jun 2024 17:18:32 GMT</pubDate>
    <title>[Deep Dive into the Observer API] 4. MutationObserver</title>
  </item>
  <item>
    <category>JavaScript</category>
    <category>TypeScript</category>
    <category>React</category>
    <category>Observer API</category>
    <category>ResizeObserver</category>
    <description>The ResizeObserver API is an observer specialized for handling changes to the size of DOM elements. Let's look at how to use this observer, and how to use it conveniently in React through a custom hook.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/20/observer-api-3</guid>
    <link>https://blog.itcode.dev/en/2024/06/20/observer-api-3</link>
    <pubDate>Wed, 19 Jun 2024 16:14:40 GMT</pubDate>
    <title>[Deep Dive into the Observer API] 3. ResizeObserver</title>
  </item>
  <item>
    <category>JavaScript</category>
    <category>TypeScript</category>
    <category>React</category>
    <category>Observer API</category>
    <category>IntersectionObserver</category>
    <description>The IntersectionObserver API is an observer specialized for handling the DOM and the viewport. Let's learn how to use this observer, and try using it conveniently in React via a custom hook.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/14/observer-api-2</guid>
    <link>https://blog.itcode.dev/en/2024/06/14/observer-api-2</link>
    <pubDate>Thu, 13 Jun 2024 16:37:29 GMT</pubDate>
    <title>[Digging into the Observer API] 2. IntersectionObserver</title>
  </item>
  <item>
    <category>JavaScript</category>
    <category>TypeScript</category>
    <category>React</category>
    <category>Observer API</category>
    <category>IntersectionObserver</category>
    <category>ResizeObserver</category>
    <category>MutationObserver</category>
    <category>PerformanceObserver</category>
    <category>ReportingObserver</category>
    <description>Let's find out what the Observer API is, how it differs from the traditional Event Driven approach, and what strengths it has.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/12/observer-api-1</guid>
    <link>https://blog.itcode.dev/en/2024/06/12/observer-api-1</link>
    <pubDate>Tue, 11 Jun 2024 16:26:00 GMT</pubDate>
    <title>[Digging into the Observer API] 1. Observer API</title>
  </item>
  <item>
    <category>GitHub</category>
    <category>GitHub Actions</category>
    <category>Workflows</category>
    <category>Events</category>
    <category>Jobs</category>
    <category>Runners</category>
    <category>Steps</category>
    <category>Actions</category>
    <category>YAML</category>
    <description>Let's learn about Steps and Actions, which determine the purpose and behavior of a GitHub Actions workflow.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/09/github-actions-5</guid>
    <link>https://blog.itcode.dev/en/2024/06/09/github-actions-5</link>
    <pubDate>Sun, 09 Jun 2024 14:04:02 GMT</pubDate>
    <title>[GitHub Actions] Rest in Peace, Manual Deployment — GitHub Actions Has Arrived - 5. Get to Work, GitHub Actions! Steps &amp; Actions</title>
  </item>
  <item>
    <category>Chit-chat</category>
    <description>'Netizens say: we let it slide, but this has gone too far..' Who knows what happened during his disappearance, or whether he was just goofing off the whole time. All eyes are on his whereabouts.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/05/28/missing-rwb</guid>
    <link>https://blog.itcode.dev/en/2024/05/28/missing-rwb</link>
    <pubDate>Mon, 27 May 2024 16:59:17 GMT</pubDate>
    <title>[Breaking News] RWB, Missing for Half a Year, Found Breathing at Home..</title>
  </item>
  <item>
    <category>GitHub</category>
    <category>GitHub Actions</category>
    <category>Workflows</category>
    <category>Events</category>
    <category>Jobs</category>
    <category>Runners</category>
    <category>Steps</category>
    <category>YAML</category>
    <description>Now that we've covered how to run a workflow, let's cover how to actually get the workflow to do work. This post covers Jobs and Steps, with a brief mention of Runners as well.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/11/08/github-actions-4</guid>
    <link>https://blog.itcode.dev/en/2023/11/08/github-actions-4</link>
    <pubDate>Tue, 07 Nov 2023 17:34:47 GMT</pubDate>
    <title>[GitHub Actions] Rest in Peace, Manual Deployment — GitHub Actions Has Arrived - 4. Get to Work, GitHub Actions! Jobs</title>
  </item>
  <item>
    <category>GitHub</category>
    <category>GitHub Actions</category>
    <category>Events</category>
    <category>YAML</category>
    <category>crontab</category>
    <description>GitHub. It can be called the leading Git hosting management service, and a global service used by most developers. Starting in the open source community, GitHub was even acquired by Microsoft in 2018. This success owes a lot to the variety of services it built on top of source code repository management. Among them is a feature called GitHub Actions, which lets you build a CI/CD pipeline at no extra cost.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/10/29/github-actions-3</guid>
    <link>https://blog.itcode.dev/en/2023/10/29/github-actions-3</link>
    <pubDate>Sat, 28 Oct 2023 17:58:29 GMT</pubDate>
    <title>[GitHub Actions] Rest in Peace, Manual Deployment — GitHub Actions Has Arrived - 3. How to Run GitHub Actions. Events</title>
  </item>
  <item>
    <category>GitHub</category>
    <category>GitHub Actions</category>
    <category>Workflows</category>
    <category>Events</category>
    <category>Jobs</category>
    <category>Runners</category>
    <category>Steps</category>
    <category>YAML</category>
    <description>In the previous post, we confirmed what CI/CD is, and that GitHub Actions is one of the representative services that provides it. So how exactly does GitHub Actions provide CI/CD service? Let's learn about GitHub Actions.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/10/26/github-actions-2</guid>
    <link>https://blog.itcode.dev/en/2023/10/26/github-actions-2</link>
    <pubDate>Wed, 25 Oct 2023 16:20:14 GMT</pubDate>
    <title>[GitHub Actions] Rest in Peace, Manual Deployment — GitHub Actions Has Arrived - 2. Learning About GitHub Actions</title>
  </item>
  <item>
    <category>GA</category>
    <category>Google Analytics</category>
    <description>If you look at post-centric sites, most of them offer a feature that shows popular posts based on view counts. Each post's view count is stored, and based on that, posts with the highest views or that meet certain criteria are shown. But my blog doesn't store view counts at all. That's because it's serverless. It only performs static hosting via GitHub, and the structure can't expect any computation beyond that on the server. So there's no way to actively count visitors.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/10/05/hot-posts-with-ga4</guid>
    <link>https://blog.itcode.dev/en/2023/10/05/hot-posts-with-ga4</link>
    <pubDate>Thu, 05 Oct 2023 14:08:50 GMT</pubDate>
    <title>A Roundabout Way to Show a Blog's Popular Posts Using the Google Analytics API</title>
  </item>
  <item>
    <category>GitHub</category>
    <category>GitHub Actions</category>
    <category>CI</category>
    <category>CD</category>
    <category>Continuous Integration</category>
    <category>Continuous Delivery</category>
    <category>Continuous Deployment</category>
    <description>A single piece of software goes through many stages before it's finished. Depending on the scale of the program, it requires more manpower, more processes, and more scheduling. But regardless of the program, the result always comes down to one thing: build and deployment. Mere text and assets are turned into a single program through the build process, and made usable to people through deployment. That's the goal of every program. Accordingly, the importance of build and deployment is also very significant. And in line with that, build/deploy is never an easy task. The larger a program gets, the more time it takes, and then some.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/09/28/github-actions-1</guid>
    <link>https://blog.itcode.dev/en/2023/09/28/github-actions-1</link>
    <pubDate>Wed, 27 Sep 2023 18:54:54 GMT</pubDate>
    <title>[GitHub Actions] Rest in Peace, Manual Deployment — GitHub Actions Has Arrived - 1. CI/CD</title>
  </item>
  <item>
    <category>React</category>
    <category>TypeScript</category>
    <category>Markdown</category>
    <category>Regexp</category>
    <category>Table Of Content</category>
    <description>One element of writing is the concept of a table of contents, also called a TOC (Table Of Content). Through a TOC, readers can grasp the overall content and structure of a piece of writing, and if they want, they can be guided to selectively pick just the parts they need. It's a useful device both for readers and for the writing itself.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/09/26/markdown-toc</guid>
    <link>https://blog.itcode.dev/en/2023/09/26/markdown-toc</link>
    <pubDate>Mon, 25 Sep 2023 16:53:00 GMT</pubDate>
    <title>[TypeScript] Building a Markdown TOC</title>
  </item>
  <item>
    <category>React</category>
    <category>Web</category>
    <category>Next.js</category>
    <description>When working on a React project, chances are you're going to end up using `Next.js`. I recently revamped my blog and ran `create-next-app`, and it seems there are some notable changes now that it's been updated to version 13. Some of these changes differ quite a bit from the previous usage, which gave me a bit of trouble, so I wanted to cover these changes in this post.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/09/23/nextjs13</guid>
    <link>https://blog.itcode.dev/en/2023/09/23/nextjs13</link>
    <pubDate>Sat, 23 Sep 2023 11:41:27 GMT</pubDate>
    <title>[Next.js] Exploring Next.js 13</title>
  </item>
  <item>
    <category>React</category>
    <category>Web</category>
    <category>recoil</category>
    <description>React and state management are inseparable. There have been many attempts to make state management more efficient and smarter, and recoil is one of them. Unlike its predecessors Redux and mobx, recoil is loved by many for being simple yet powerful. I'm also a fan of it when developing with React.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/02/04/recoil-duplicated-key</guid>
    <link>https://blog.itcode.dev/en/2023/02/04/recoil-duplicated-key</link>
    <pubDate>Fri, 03 Feb 2023 16:56:31 GMT</pubDate>
    <title>[recoil] Resolving the Duplicate atom key Error</title>
  </item>
  <item>
    <category>Tesla</category>
    <description>Off to Jeju Island~~~~~~</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/07/25/tesla-model3</guid>
    <link>https://blog.itcode.dev/en/2022/07/25/tesla-model3</link>
    <pubDate>Mon, 25 Jul 2022 16:06:39 GMT</pubDate>
    <title>A bored write-up: My Tesla Model 3 Rental Review</title>
  </item>
  <item>
    <category>CSR</category>
    <category>SSR</category>
    <category>SSG</category>
    <description>As internet history continues and development advances, the web, the internet's flagship medium, keeps growing larger as well. In its early days, the web only showed simple pages based on static data, but now it handles large-scale business logic without difficulty. Following this trend, the weight carried by pages, the web's basic unit, keeps growing as well. We enjoy dozens of pages every day. Users simply engage in the activity of "viewing a page," but as with everything, there are many hidden operations behind the scenes. Among them, much thought goes into the logic for rendering — that is, drawing — a page in order to show it to the user. Showing a page faster and more efficiently leads to a better page UX.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/06/12/csr-ssr-ssg</guid>
    <link>https://blog.itcode.dev/en/2022/06/12/csr-ssr-ssg</link>
    <pubDate>Sun, 12 Jun 2022 14:11:05 GMT</pubDate>
    <title>The Three Rendering Siblings: CSR, SSR, SSG</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>WAS</category>
    <category>Tomcat</category>
    <description>I've been building an API server using the Jersey 3 library. Even after writing the code and calling the correct URL, I kept getting a 404 error. I wrote a simple test servlet and compared it against the official documentation over and over, but couldn't find anything unusual. It turned out that Jersey 3 supports Servlet 5.0, and Servlet 5.0 spec can only run on Tomcat 10 or higher, which implements that spec — something I hadn't known until then. I never paid much attention to the Tomcat version before, but this made me realize there's a big difference between Tomcat 9 and Tomcat 10.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/02/12/tomcat-9-and-10</guid>
    <link>https://blog.itcode.dev/en/2022/02/12/tomcat-9-and-10</link>
    <pubDate>Sat, 12 Feb 2022 10:20:41 GMT</pubDate>
    <title>Tomcat 9 vs 10</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>Given an array orders containing each customer's ordered items as strings, and an array course containing the number of menu items that make up the course dishes that "Scarpy" wants to add, complete the solution function to return, as an array of strings, the menu compositions of the new course dishes "Scarpy" will add.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/29/programmers-a0078</guid>
    <link>https://blog.itcode.dev/en/2021/12/29/programmers-a0078</link>
    <pubDate>Wed, 29 Dec 2021 13:13:12 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Menu Renewal (72411)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>There is a matrix of size rows x columns. The matrix has the numbers 1 through rows x columns written in it, one row at a time in order. In this matrix, you want to select rectangular ranges multiple times and rotate the numbers along the border clockwise. Each rotation is represented by 4 integers (x1, y1, x2, y2), meaning the following.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/29/programmers-a0077</guid>
    <link>https://blog.itcode.dev/en/2021/12/29/programmers-a0077</link>
    <pubDate>Wed, 29 Dec 2021 02:23:05 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Rotating Matrix Borders (77485)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>Removing pairs starts with a string made up of lowercase alphabet letters. First, find a pair of the same alphabet letter placed next to each other in the string. Then, remove both of them and join the remaining parts of the string together. Repeat this process, and if you're able to remove the entire string, the pair-removal process is considered complete. Given a string S, complete a function that returns whether the pair-removal process can be successfully carried out. Return 1 if it can succeed, and 0 if it can't.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/29/programmers-a0076</guid>
    <link>https://blog.itcode.dev/en/2021/12/29/programmers-a0076</link>
    <pubDate>Wed, 29 Dec 2021 02:23:05 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Removing Pairs (12973)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 2</category>
    <description>The ANIMAL_INS table holds information about animals that came into the animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE respectively represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/28/programmers-a0075</guid>
    <link>https://blog.itcode.dev/en/2021/12/28/programmers-a0075</link>
    <pubDate>Tue, 28 Dec 2021 08:38:16 GMT</pubDate>
    <title>[Programmers / MySQL] Level 2 Find Lucy and Ella (59046)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 2</category>
    <description>The ANIMAL_INS table holds information about animals that came into the animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE respectively represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/28/programmers-a0074</guid>
    <link>https://blog.itcode.dev/en/2021/12/28/programmers-a0074</link>
    <pubDate>Tue, 28 Dec 2021 08:19:20 GMT</pubDate>
    <title>[Programmers / MySQL] Level 2 How Many Cats and Dogs Are There (59040)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>There are n non-negative integers. You want to add or subtract these numbers appropriately to make a target number. For example, to make the number 3 using [1, 1, 1, 1, 1], you can use the following five methods.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/28/programmers-a0073</guid>
    <link>https://blog.itcode.dev/en/2021/12/28/programmers-a0073</link>
    <pubDate>Tue, 28 Dec 2021 08:10:04 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Target Number (43165)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>Leo, who loves spicy food, wants to make every dish's Scoville index at least K. To make every dish's Scoville index at least K, Leo mixes the two dishes with the lowest Scoville index into a new dish using the special method below.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/28/programmers-a0072</guid>
    <link>https://blog.itcode.dev/en/2021/12/28/programmers-a0072</link>
    <pubDate>Tue, 28 Dec 2021 03:15:05 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Making It Spicier (42626)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>The Programmers team is working on feature improvements. Each feature can be shipped to the service once its progress reaches 100%. Also, since each feature's development speed differs, a feature listed later can be finished earlier than one listed before it, in which case the later feature is deployed together when the earlier feature is deployed. Given an integer array progresses containing the progress of each task in the order they must be deployed, and an integer array speeds containing the development speed of each task, complete the solution function to return how many features are deployed at each deployment.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/27/programmers-a0071</guid>
    <link>https://blog.itcode.dev/en/2021/12/27/programmers-a0071</link>
    <pubDate>Mon, 27 Dec 2021 04:42:49 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Feature Development (42586)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>There is a country called 124. In country 124, numbers are not represented in base 10, but instead follow their own unique rule as described below.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/27/programmers-a0070</guid>
    <link>https://blog.itcode.dev/en/2021/12/27/programmers-a0070</link>
    <pubDate>Sun, 26 Dec 2021 16:42:47 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Numbers of Country 124 (12899)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>There is a rectangular sheet of paper with a width of W cm and a height of H cm. The paper has lines drawn on it in a grid pattern, parallel to the width and height directions, and every grid cell is 1 cm x 1 cm in size. This paper was meant to be cut along the grid lines into 1 cm × 1 cm squares, but someone cut it along the direction connecting two diagonal corners. As a result, the rectangular sheet is now currently divided into 2 right triangles of equal size. Since a new sheet of paper cannot be obtained, it was decided to use only as much as can be cut into 1 cm × 1 cm squares parallel to the original paper's width and height directions. Given the width W and height H, complete the solution function that finds the number of squares that can be used.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/27/programmers-a0069</guid>
    <link>https://blog.itcode.dev/en/2021/12/27/programmers-a0069</link>
    <pubDate>Sun, 26 Dec 2021 15:35:33 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Intact Squares (62048)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>In the fall, the Kakao Friends went on a group outing. After having a great time, they lined up in a row in front of the camera to take a group photo at the end. However, since everyone wanted a different arrangement, it took a long time to decide the order to stand in. Neo wanted to stand next to Prodo, and Ryan, who had once been hit by fire breathed by Tube, wanted to stand at least three spots away from Tube. On the way back after taking the picture, Muzi got to wondering whether there might have been other ways to stand that also satisfied everyone's conditions. Let's write a program that computes the number of ways everyone can stand in a row that satisfies each Friend's desired conditions, given those conditions as input.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/26/programmers-a0068</guid>
    <link>https://blog.itcode.dev/en/2021/12/26/programmers-a0068</link>
    <pubDate>Sun, 26 Dec 2021 13:09:38 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Group Photo (1835)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>Apeach, an editor at a publishing house, asked Neo to draw original artwork for a coloring book and received several pictures. Wanting to arrange the pictures in the coloring book in order of difficulty, Apeach discovered that having more regions makes coloring more tricky and difficult, and so defined the difficulty of a picture as the number of regions. (A region refers to a space of the same color connected up, down, left, and right.) Let's write a program that calculates how many regions are in a picture and how large the largest region is.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/26/programmers-a0067</guid>
    <link>https://blog.itcode.dev/en/2021/12/26/programmers-a0067</link>
    <pubDate>Sun, 26 Dec 2021 07:34:11 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Kakao Friends Coloring Book (1829)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>In KakaoTalk's open chat rooms, you can chat with people who aren't your friends, entering the chat room using a virtual nickname instead of your real one. Kim Crew, a new employee, decided to build an admin screen for the person who created a KakaoTalk open chat room, so they can watch various people enter and leave. When someone enters the chat room, the following message is displayed.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/26/programmers-a0066</guid>
    <link>https://blog.itcode.dev/en/2021/12/26/programmers-a0066</link>
    <pubDate>Sun, 26 Dec 2021 07:34:11 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 Open Chat Room (42888)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 2</category>
    <description>"Apeach," who wants to become a data processing expert, is studying methods for compressing strings. She's recently been studying a simple lossless compression method for processing large amounts of data, which represents consecutive occurrences of the same value in a string using the count of the character and the repeated value, expressing it as a shorter string. As a simple example, "aabbaccc" can be represented as "2a2ba3c" (when a character appears only once with no repetition, the 1 is omitted), but this method has the downside that the compression ratio is low when there are few repeated characters. For example, a string like "abcabcdede" isn't compressed at all. To address this drawback, "Apeach" is trying to find a way to split the string into units of 1 or more characters before compressing it, so it can be represented as a shorter string.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/26/programmers-a0065</guid>
    <link>https://blog.itcode.dev/en/2021/12/26/programmers-a0065</link>
    <pubDate>Sat, 25 Dec 2021 17:37:58 GMT</pubDate>
    <title>[Programmers / JAVA] Level 2 String Compression (60057)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>This problem gives you two integers n and m via standard input. Using the star (*) character, print out a rectangle with a width of n and a height of m.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/19/programmers-a0064</guid>
    <link>https://blog.itcode.dev/en/2021/12/19/programmers-a0064</link>
    <pubDate>Sun, 19 Dec 2021 07:18:31 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Drawing a Rectangle with Stars (12954)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>The function solution receives an integer x and a natural number n, and must return a list containing n numbers starting from x and increasing by x each time. Look at the following constraints and complete the function solution that satisfies the conditions.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0063</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0063</link>
    <pubDate>Sat, 18 Dec 2021 12:56:29 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 N Numbers Spaced by x (12954)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Matrix addition takes two matrices of equal number of rows and columns, and produces a result by adding the values at the same row and same column. Given two matrices arr1 and arr2, complete the function solution that returns the result of the matrix addition.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0062</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0062</link>
    <pubDate>Sat, 18 Dec 2021 12:56:29 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Matrix Addition (12950)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>To protect personal information, Programmers Mobile masks part of a customer's phone number when sending a bill. Given the phone number as a string phone_number, complete the function solution that returns a string in which every digit except the last 4 digits of the phone number is replaced with the character *.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0061</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0061</link>
    <pubDate>Sat, 18 Dec 2021 12:52:30 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Masking a Phone Number (12948)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>For a positive integer x to be a Harshad number, x must be divisible by the sum of its digits. For example, the digit sum of 18 is 1 + 8 = 9, and since 18 is evenly divisible by 9, 18 is a Harshad number. Complete the function solution that receives a natural number x and checks whether x is a Harshad number.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0060</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0060</link>
    <pubDate>Sat, 18 Dec 2021 12:48:00 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Harshad Number (12947)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete the function solution that returns the average value of the array arr, which holds integers.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0059</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0059</link>
    <pubDate>Sat, 18 Dec 2021 12:43:34 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Calculating the Average (12944)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>This conjecture, proposed by a person named Collatz in 1937, states that if you repeat the following operation on a given number until it becomes 1, every number can be reduced to 1. The operation is as follows.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0058</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0058</link>
    <pubDate>Sat, 18 Dec 2021 12:39:51 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Collatz Conjecture (12943)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete the function solution, which takes two numbers and returns their greatest common divisor and least common multiple. Place the greatest common divisor first in the array, followed by the least common multiple. For example, since the greatest common divisor of 3 and 12 is 3, and their least common multiple is 12, solution(3, 12) should return [3, 12].</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0057</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0057</link>
    <pubDate>Sat, 18 Dec 2021 12:30:56 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Greatest Common Divisor and Least Common Multiple (12940)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete the function solution, which returns "Even" if the integer num is even, and "Odd" if it is odd.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0056</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0056</link>
    <pubDate>Sat, 18 Dec 2021 11:59:59 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Even and Odd (12937)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete the function solution, which returns an array with the smallest number removed from the array of integers arr. However, if the resulting array would be empty, fill the array with -1 and return it. For example, if arr is [4,3,2,1], return [4,3,2], and if it is [10], return [-1].</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0055</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0055</link>
    <pubDate>Sat, 18 Dec 2021 11:55:40 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Removing the Smallest Number (12935)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>For any positive integer n, we want to determine whether n is the square of some positive integer x. Complete the function that returns the square of (x + 1) if n is the square of a positive integer x, or returns -1 if n is not the square of a positive integer.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0054</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0054</link>
    <pubDate>Sat, 18 Dec 2021 11:46:29 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Determining an Integer Square Root (12934)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>The function solution receives an integer n as a parameter. Return a new integer with the digits of n arranged in descending order. For example, if n is 118372, it should return 873211.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0053</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0053</link>
    <pubDate>Sat, 18 Dec 2021 11:39:02 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Arranging Integers in Descending Order (12933)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Reverse the natural number n and return it as an array containing each digit as an element. For example, if n is 12345, return [5,4,3,2,1].</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0052</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0052</link>
    <pubDate>Sat, 18 Dec 2021 09:58:31 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Reversing a Natural Number into an Array (12932)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Given a natural number N, create a solution function that finds the sum of each digit of N and returns it. For example, if N = 123, it should return 1 + 2 + 3 = 6.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0051</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0051</link>
    <pubDate>Sat, 18 Dec 2021 09:31:11 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Sum of Digits (12931)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>A string s consists of one or more words. Each word is separated by one or more whitespace characters. Complete the function solution, which returns a string in which the even-indexed letters of each word are converted to uppercase and the odd-indexed letters are converted to lowercase.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0050</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0050</link>
    <pubDate>Sat, 18 Dec 2021 09:27:43 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Making Strange Text (12930)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete the function solution, which takes an integer n and returns the sum of all divisors of n.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0049</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0049</link>
    <pubDate>Sat, 18 Dec 2021 09:13:33 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Sum of Divisors (12928)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>An encryption method that shifts each letter of a sentence by a fixed distance to another letter is called a Caesar cipher. For example, shifting "AB" by 1 gives "BC", and shifting it by 3 gives "DE". Shifting "z" by 1 gives "a". Given a string s and a distance n, complete the function solution that creates the ciphertext obtained by shifting s by n.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0048</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0048</link>
    <pubDate>Sat, 18 Dec 2021 09:05:21 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Caesar Cipher (12926)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete the function solution, which returns the result of converting the string s into a number.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0047</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0047</link>
    <pubDate>Sat, 18 Dec 2021 08:21:13 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Convert a String to an Integer (12925)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete the function solution, which returns a string of length n that maintains a pattern like "watermelonwatermelonwatermelonwat....". For example, if n is 4, it should return "wate", and if n is 3, it should return "wat".</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/18/programmers-a0046</guid>
    <link>https://blog.itcode.dev/en/2021/12/18/programmers-a0046</link>
    <pubDate>Sat, 18 Dec 2021 08:15:21 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Watermelon Watermelon Watermelon Watermel...? (12922)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Write a function, solution, that returns the count of prime numbers between 1 and the given number n. A prime number is a number that is only divisible by 1 and itself. (1 is not a prime number.)</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/17/programmers-a0045</guid>
    <link>https://blog.itcode.dev/en/2021/12/17/programmers-a0045</link>
    <pubDate>Fri, 17 Dec 2021 09:44:27 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Finding Prime Numbers (12921)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Find the position x of "Kim" among the elements of the String array seoul, and complete the solution function that returns a String saying "Mr. Kim is at x". "Kim" appears only once in seoul, and there will be no invalid input.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/17/programmers-a0044</guid>
    <link>https://blog.itcode.dev/en/2021/12/17/programmers-a0044</link>
    <pubDate>Fri, 17 Dec 2021 09:33:21 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Finding Mr. Kim in Seoul (12919)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete a function, solution, that checks whether the string s has a length of 4 or 6 and consists only of digits. For example, if s is "a234" it returns False, and if it is "1234" it returns True.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0043</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0043</link>
    <pubDate>Thu, 16 Dec 2021 12:38:44 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Basic String Handling (12918)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Complete a function, solution, that sorts the characters appearing in string s from largest to smallest and returns the new string. s consists only of uppercase and lowercase English letters, and uppercase letters are considered smaller than lowercase letters.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0042</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0042</link>
    <pubDate>Thu, 16 Dec 2021 12:31:37 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Arrange a String in Descending Order (12917)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>You are given a string s consisting of a mix of uppercase and lowercase letters. Complete the solution function that returns True if the count of 'p' and the count of 'y' in s are equal, and False otherwise. If neither 'p' nor 'y' appears at all, it should always return True. Note that when comparing counts, uppercase and lowercase are not distinguished.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0041</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0041</link>
    <pubDate>Thu, 16 Dec 2021 12:16:32 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Count of p and y in a String (12916)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Given a list of strings, strings, and an integer n, you want to sort the strings in ascending order based on the character at index n of each string. For example, if strings is ["sun", "bed", "car"] and n is 1, strings is sorted based on the characters "u", "e", "a" at index 1 of each word.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0040</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0040</link>
    <pubDate>Thu, 16 Dec 2021 11:48:21 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Sort Strings by Custom Rule (12915)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Given two integers a and b, complete a function, solution, that returns the sum of all integers between a and b, inclusive. For example, if a = 3 and b = 5, then 3 + 4 + 5 = 12, so it returns 12.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0039</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0039</link>
    <pubDate>Thu, 16 Dec 2021 11:31:27 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Sum Between Two Integers (12912)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Write a function, solution, that returns an array of the elements in array that are evenly divisible by divisor, sorted in ascending order. If there are no elements evenly divisible by divisor, return an array containing -1.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0038</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0038</link>
    <pubDate>Thu, 16 Dec 2021 11:26:55 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Array of Divisible Numbers (12910)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>You are given an array arr. Each element of the array arr consists of a digit from 0 to 9. You need to remove consecutive duplicate numbers in the array arr, leaving only one of each. However, when returning the remaining numbers after removal, the order of the elements in the array arr must be preserved.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0037</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0037</link>
    <pubDate>Thu, 16 Dec 2021 11:16:27 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 I Don't Like the Same Number (12906)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table contains information about animals that entered the animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0036</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0036</link>
    <pubDate>Thu, 16 Dec 2021 11:06:17 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 Top N Records (59405)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>The fourth star to appear on KakaoTalk! Bored? KakaoTalk GameStar~ For its new second-half service, KakaoTalk GameStar decided to launch a darts game. In the darts game, players throw darts at a dartboard three times and compete based on the total score, making it a game anyone can easily enjoy.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0035</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0035</link>
    <pubDate>Thu, 16 Dec 2021 11:02:11 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Darts Game (17682)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table contains information about animals that entered the animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0034</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0034</link>
    <pubDate>Thu, 16 Dec 2021 10:22:38 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 Sort by Multiple Criteria (59404)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Write a function, solution, that returns the middle character of a word s. If the word's length is even, return the two middle characters.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0033</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0033</link>
    <pubDate>Thu, 16 Dec 2021 10:18:27 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Getting the Middle Character (12903)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Neo obtained a secret map that will tell him the location where Frodo usually hides his stash of emergency cash. But this secret map is encrypted with numbers, so to check the location, he needs to decrypt the code. Fortunately, he also found a memo explaining how to decrypt the map's code.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0032</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0032</link>
    <pubDate>Wed, 15 Dec 2021 16:02:41 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Secret Map (17681)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>The newly opened ride is so popular that the line never ends. This ride originally cost `price` won, but it was decided that the Nth time you ride it, you'll be charged N times the original price. That is, if the initial fare was 100, the 2nd ride costs 200, and the 3rd ride costs 300, with the fare increasing each time. Complete the solution function to return how much money is missing from the amount you currently have if you ride the attraction `count` times. However, if the amount is not insufficient, return 0.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/16/programmers-a0031</guid>
    <link>https://blog.itcode.dev/en/2021/12/16/programmers-a0031</link>
    <pubDate>Wed, 15 Dec 2021 15:52:21 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Calculating the Shortfall (82612)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table is a table containing information about animals that have entered an animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0030</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0030</link>
    <pubDate>Wed, 15 Dec 2021 14:58:28 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 Animal IDs and Names (59403)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>A natural number n is given as a parameter. Complete the solution function to return the smallest natural number x such that the remainder when n is divided by x is 1. It can be proven that an answer always exists.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0029</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0029</link>
    <pubDate>Wed, 15 Dec 2021 14:36:45 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Finding the Number Whose Remainder Is 1 (87389)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>A company that makes business card wallets wants to determine the size of their wallets. They need to make a wallet that can hold business cards of various shapes and sizes, while still being small enough to carry easily. To meet this requirement, the design team surveyed the width and length of every business card. The table below shows the width and length of 4 business cards.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0028</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0028</link>
    <pubDate>Wed, 15 Dec 2021 14:22:00 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Minimum Rectangle (86491)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table is a table containing information about animals that have entered an animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0027</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0027</link>
    <pubDate>Wed, 15 Dec 2021 14:03:19 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 Finding Young Animals (59037)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>January 1, 2016 was a Friday. What day of the week is month a, day b of 2016? Given two numbers a and b, complete the function solution that returns which day of the week it is on 2016 month a, day b. The day names are SUN, MON, TUE, WED, THU, FRI, and SAT, from Sunday to Saturday. For example, if a = 5 and b = 24, May 24th is a Tuesday, so return the string "TUE".</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0026</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0026</link>
    <pubDate>Wed, 15 Dec 2021 13:58:49 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 2016 (12901)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table is a table containing information about animals that have entered an animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0025</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0025</link>
    <pubDate>Wed, 15 Dec 2021 13:50:59 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 Finding Sick Animals (59036)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>You are given an integer array numbers. Complete the solution function to return, in ascending order in an array, all the numbers that can be made by picking two numbers at different indices in numbers and adding them together.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0024</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0024</link>
    <pubDate>Wed, 15 Dec 2021 13:47:44 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Picking Two and Adding Them (68644)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table is a table containing information about animals that have entered an animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0023</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0023</link>
    <pubDate>Wed, 15 Dec 2021 13:21:06 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 IDs of Animals with Names (59407)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description/>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0022</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0022</link>
    <pubDate>Wed, 15 Dec 2021 13:10:27 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Picking Two and Adding Them (12982)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>In order to support each department with the items it needs, company S surveyed the amount of money each department needs to purchase its items. However, since the total budget is fixed, it's not possible to buy items for every department. So the goal is to support as many departments as possible. When purchasing items for a department, the full requested amount must be supported. For example, a department that requested 1,000 won must be given exactly 1,000 won, and it cannot be given less than 1,000 won. Given an array d containing the amount requested by each department and a budget, complete the solution function so that it returns the maximum number of departments that can be supported.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0021</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0021</link>
    <pubDate>Wed, 15 Dec 2021 13:10:27 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Budget (12982)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>A natural number n is given as a parameter. Complete the solution function so that it reverses n in base 3, then returns the result expressed again in base 10.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0020</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0020</link>
    <pubDate>Wed, 15 Dec 2021 12:48:12 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Reverse Base 3 (68935)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Two integers left and right are given as parameters. Among all numbers from left to right, complete the solution function so that it adds up the numbers with an even number of divisors and subtracts the numbers with an odd number of divisors, then returns the result.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0019</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0019</link>
    <pubDate>Wed, 15 Dec 2021 12:29:31 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Number of Divisors and Sum (77884)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Super game developer Aurely has fallen into a deep worry. Her game Friends Ochunsung was a huge success, but lately the number of new users has plummeted. The cause was that the stage gap between new users and existing users was too large. Pondering how to solve this problem, she decided to adjust the difficulty by dynamically extending playtime. Being a super developer, she implemented most of the logic easily, but ran into a crisis when it came to calculating the failure rate. Complete the code that calculates the failure rate for Aurely.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0018</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0018</link>
    <pubDate>Wed, 15 Dec 2021 12:17:08 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Failure Rate (42889)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>After a long journey to catch Ponketmon, you arrive at Dr. Hong's laboratory. Dr. Hong tells you that you may take N/2 of the total N Ponketmon in his lab. The Ponketmon in Dr. Hong's lab are distinguished by a number assigned according to their species. So Ponketmon of the same species share the same number. For example, if there are a total of 4 Ponketmon in the lab, with species numbers [No. 3, No. 1, No. 2, No. 3], this means there are two No. 3 Ponketmon, one No. 1 Ponketmon, and one No. 2 Ponketmon. In this case, there are 6 ways to choose 2 out of the 4 Ponketmon, as follows.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0017</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0017</link>
    <pubDate>Tue, 14 Dec 2021 17:01:09 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Ponketmon (1845)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table holds information about animals that have come into an animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0016</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0016</link>
    <pubDate>Tue, 14 Dec 2021 16:44:37 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 IDs of Animals Without a Name (59039)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table holds information about animals that have come into an animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0015</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0015</link>
    <pubDate>Tue, 14 Dec 2021 16:41:43 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 Find the Maximum Value (59415)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>SQL</category>
    <category>Level 1</category>
    <description>The ANIMAL_INS table holds information about animals that have come into an animal shelter. The ANIMAL_INS table structure is as follows, where ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, and SEX_UPON_INTAKE represent the animal's ID, species, intake date, condition at intake, name, and sex/neuter status, respectively.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/15/programmers-a0014</guid>
    <link>https://blog.itcode.dev/en/2021/12/15/programmers-a0014</link>
    <pubDate>Tue, 14 Dec 2021 16:38:22 GMT</pubDate>
    <title>[Programmers / MySQL] Level 1 Retrieve All Records (59034)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>A thief broke in during lunchtime, and some students had their gym clothes stolen. Fortunately, students who brought a spare set of gym clothes are willing to lend them out. Students are numbered by their build, so a student can only lend gym clothes to the student with the number right before or right after them. For example, student 4 can only lend gym clothes to student 3 or student 5. Since a student can't take the class without gym clothes, we need to lend out the gym clothes appropriately so that as many students as possible can attend the gym class.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0013</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0013</link>
    <pubDate>Tue, 14 Dec 2021 13:18:41 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Gym Clothes (42862)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Suja is short for someone who has given up on math. The Suja trio plan to guess every math answer on a mock exam. They mark their answers from question 1 to the last question as follows. Suja 1's pattern: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... Suja 2's pattern: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... Suja 3's pattern: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... Given an array answers containing the correct answers from question 1 to the last question in order, write a solution function that returns, as an array, who got the most questions right.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0012</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0012</link>
    <pubDate>Tue, 14 Dec 2021 13:02:01 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Mock Exam (42840)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>We want to find the k-th number after slicing array from the i-th number to the j-th number and sorting it.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0011</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0011</link>
    <pubDate>Tue, 14 Dec 2021 05:20:05 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 The K-th Number (42748)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>A huge number of runners took part in a marathon. Every runner except a single one finished the race. Given an array participant containing the names of the runners who took part, and an array completion containing the names of the runners who finished, write a solution function that returns the name of the runner who did not finish.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0010</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0010</link>
    <pubDate>Tue, 14 Dec 2021 11:33:25 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Complete the Marathon (42576)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>You're given an array numbers containing some of the digits from 0 to 9 as a parameter. Complete the solution function so that it finds all the digits from 0 to 9 that don't appear in numbers, and returns their sum.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0009</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0009</link>
    <pubDate>Tue, 14 Dec 2021 10:06:57 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Making Primes (12977)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Two one-dimensional integer arrays a and b of equal length are given as parameters. Complete the solution function so that it returns the dot product of a and b. Here, the dot product of a and b is a[0] * b[0] + a[1] * b[1] + ... + a[n-1] * b[n-1]. (n is the length of a and b)</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0008</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0008</link>
    <pubDate>Tue, 14 Dec 2021 05:20:05 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Dot Product (70128)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>There are some integers. You're given an integer array absolutes containing the absolute values of these integers in order, and a boolean array signs containing the signs of these integers in order, as parameters. Complete the solution function so that it computes and returns the sum of the actual integers.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0007</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0007</link>
    <pubDate>Tue, 14 Dec 2021 08:01:15 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Adding Positives and Negatives (76501)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>You're given an array numbers containing some of the digits from 0 to 9 as a parameter. Complete the solution function so that it finds all the digits from 0 to 9 that don't appear in numbers, and returns their sum.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0006</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0006</link>
    <pubDate>Tue, 14 Dec 2021 05:20:05 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Adding Missing Numbers (86051)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Jordy, a game developer, wants to make a crane claw machine into a mobile game. To make the game more fun, Jordy plans to reflect the following screen layout and rules in the game logic.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0005</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0005</link>
    <pubDate>Tue, 14 Dec 2021 05:20:05 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Crane Claw Machine Game (64061)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Each key on a smartphone's phone keypad has a number written on it as follows. On this phone keypad, you're going to enter only digits using just the thumbs of your left and right hands. The left thumb starts at the `*` key and the right thumb starts at the `#` key, and the rules for using the thumbs are as follows.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0004</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0004</link>
    <pubDate>Tue, 14 Dec 2021 03:46:59 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Pressing the Keypad (67256)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Neo and Frodo are playing a number game. When Neo hands Frodo a card with a number where some digits have been replaced with English words, Frodo has to figure out the original number. Below is an example of replacing some digits of a number with English words.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0003</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0003</link>
    <pubDate>Tue, 14 Dec 2021 02:21:04 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Numeric String and English Words (81301)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Neo, a new developer who joined Kakao, was assigned to the "Kakao Account Development Team" and put in charge of generating IDs for users signing up for Kakao services. Neo's first task was to develop a program that, when a newly signing-up user enters an ID that doesn't meet Kakao's ID rules, recommends a new ID that's similar to the entered ID but follows the rules. Below are the rules for a Kakao ID.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0002</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0002</link>
    <pubDate>Tue, 14 Dec 2021 00:11:28 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 New ID Recommendation (72410)</title>
  </item>
  <item>
    <category>Programmers</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Level 1</category>
    <description>Lotto 6/45 (hereafter 'Lotto') is a well-known lottery in which you pick 6 numbers out of 1 to 45 and try to match them. Below is how Lotto rankings are determined. Minwoo, who bought a Lotto ticket, was eagerly awaiting the day the winning numbers would be announced. However, Minwoo's younger sibling scribbled on the ticket, making some of the numbers unreadable. After the winning numbers were announced, Minwoo wanted to figure out the best and worst possible ranks his ticket could have won.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/12/14/programmers-a0001</guid>
    <link>https://blog.itcode.dev/en/2021/12/14/programmers-a0001</link>
    <pubDate>Tue, 14 Dec 2021 00:10:14 GMT</pubDate>
    <title>[Programmers / JAVA] Level 1 Best and Worst Lotto Rank (77484)</title>
  </item>
  <item>
    <category>NextJS</category>
    <category>React</category>
    <category>Markdown</category>
    <category>HTML</category>
    <category>SCSS</category>
    <category>TypeScript</category>
    <description>In the previous chapter, I implemented this blog's own Markdown converter using marked. Let's use this converter to make the plain code blocks look a bit more like an IDE.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/11/07/nextjs-reorganization-5</guid>
    <link>https://blog.itcode.dev/en/2021/11/07/nextjs-reorganization-5</link>
    <pubDate>Sun, 07 Nov 2021 12:13:57 GMT</pubDate>
    <title>[NextJS] Blog Overhaul Journey - 5. Improving Code Block Design Using marked</title>
  </item>
  <item>
    <category>NextJS</category>
    <category>React</category>
    <category>Markdown</category>
    <description>Static blogs make heavy use of Markdown, because it's very familiar as a plain-text format while also having excellent compatibility with HTML. My previous blog used the Remark and Rehype plugins. With various plugins available, they were quite convenient for basic use, but it was very difficult for a user to customize the conversion process directly. I wanted to add extra functionality and styling to TOCs, code blocks, and links by attaching HTML tags, but since there was no relevant API, I had no choice but to use whatever tags were given as-is. While researching this, the marked plugin seemed to satisfy what I wanted, so during the blog overhaul I made many changes to the Markdown plugin as well. This chapter covers the process of converting Markdown to HTML using marked.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/28/nextjs-reorganization-4</guid>
    <link>https://blog.itcode.dev/en/2021/10/28/nextjs-reorganization-4</link>
    <pubDate>Thu, 28 Oct 2021 05:36:46 GMT</pubDate>
    <title>[NextJS] Blog Overhaul Journey - 4. Implementing a Markdown Converter Using marked</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <category>Jersey</category>
    <description>This chapter covers how to provide RESTful API services using Jersey. Since this project receives and responds to requests through Jersey, we'll briefly cover Jersey before setting up the controllers. Typically, the Spring framework is widely used to build JAVA servers. Still, the reason I chose Jersey instead is, first of all, that I don't know Spring very well. But beyond that, compared to Spring, it's smaller in scale and simpler to configure, letting me focus entirely on building a RESTful server. Not to mention how vicious Spring's configuration can be, this project doesn't require complex logic or a wide variety of features by its nature. Since we wouldn't be using Spring's vast scale to its full extent, the tail would be wagging the dog.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-9</guid>
    <link>https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-9</link>
    <pubDate>Sun, 24 Oct 2021 15:12:58 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authentication Server with ScribeJAVA - 9. Providing RESTful API Services with Jersey</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <description>I've made a lot of things over time, but I never really got around to organizing and documenting them. I wasn't really using GitHub, and I wasn't really running a blog either... And now I've bought a personal server too. This was a project I built as a trial run for my own development portfolio. I think this is the first project I've written up step by step, from development all the way through to wrapping it up.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-12</guid>
    <link>https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-12</link>
    <pubDate>Mon, 25 Oct 2021 13:41:21 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 12. Closing Thoughts</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <description>We registered the OAuth service and even built the authorization server separately, but that doesn't mean it's immediately usable. In this chapter, we apply for OAuth service review so the OAuth service can be used fully.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-11</guid>
    <link>https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-11</link>
    <pubDate>Mon, 25 Oct 2021 13:41:21 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 11. Applying for OAuth Service Review</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <category>Jersey</category>
    <description>Let's set up the controllers that receive requests and return responses using the Jersey library. If you want to learn more about Jersey, check out the previous post.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-10</guid>
    <link>https://blog.itcode.dev/en/2021/10/25/oauth2-java-server-10</link>
    <pubDate>Sun, 24 Oct 2021 17:24:17 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 10. Implementing the Controllers</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <description>From chapter 4 through chapter 7, we implemented the authentication module for each platform. In this chapter, we implement the processes, the layer that uses these modules. Processes are organized and managed by HTTP method.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/24/oauth2-java-server-8</guid>
    <link>https://blog.itcode.dev/en/2021/10/24/oauth2-java-server-8</link>
    <pubDate>Sun, 24 Oct 2021 14:58:10 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 8. Implementing the Processes</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <category>scribeJAVA</category>
    <description>As the last platform, let's apply for an OAuth service with GitHub and implement the authentication module.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/23/oauth2-java-server-7</guid>
    <link>https://blog.itcode.dev/en/2021/10/23/oauth2-java-server-7</link>
    <pubDate>Fri, 22 Oct 2021 20:08:46 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 7. Applying for the GitHub OAuth Service and Implementing the Module</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <category>scribeJAVA</category>
    <description>As the third platform, let's apply for an OAuth service with KAKAO and implement the authentication module.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/23/oauth2-java-server-6</guid>
    <link>https://blog.itcode.dev/en/2021/10/23/oauth2-java-server-6</link>
    <pubDate>Fri, 22 Oct 2021 18:51:04 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 6. Applying for the KAKAO OAuth Service and Implementing the Module</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <category>scribeJAVA</category>
    <description>As the second platform, let's apply for an OAuth service with Google and implement the authentication module.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/23/oauth2-java-server-5</guid>
    <link>https://blog.itcode.dev/en/2021/10/23/oauth2-java-server-5</link>
    <pubDate>Fri, 22 Oct 2021 16:51:53 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 5. Applying for the Google OAuth Service and Implementing the Module</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <category>scribeJAVA</category>
    <description>As the first platform, let's apply for an OAuth service with NAVER and implement the authentication module.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/22/oauth2-java-server-4</guid>
    <link>https://blog.itcode.dev/en/2021/10/22/oauth2-java-server-4</link>
    <pubDate>Fri, 22 Oct 2021 13:25:16 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 4. Applying for the NAVER OAuth Service and Implementing the Module</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <category>Jersey</category>
    <description>Let's implement an authentication module using the OAuth library scribeJAVA.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/20/oauth2-java-server-3</guid>
    <link>https://blog.itcode.dev/en/2021/10/20/oauth2-java-server-3</link>
    <pubDate>Tue, 19 Oct 2021 16:26:40 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 3. Implementing the OAuth2.0 Authentication Module with scribeJAVA</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <description>Now that we've gained some background knowledge about the OAuth2.0 protocol, let's use it to build an authorization server ourselves. The ultimate goal is to build the whole system, split into Frontend and Backend parts, where social login is performed through the web page and processed by an authorization server we implement ourselves.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/14/oauth2-java-server-2</guid>
    <link>https://blog.itcode.dev/en/2021/10/14/oauth2-java-server-2</link>
    <pubDate>Thu, 14 Oct 2021 13:12:25 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 2. Designing the Authorization Server</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>OAuth2.0</category>
    <description>As you browse around the web, you'll frequently run into sites that require login. And most of these sites offer platform login options such as "Log in with Naver." It's not just websites either — most apps released these days also provide authentication services through platforms. Using this, you can sign up or log in through a very simple process. This kind of service is offered not only by Naver but by most platforms of a certain size, such as Google and Kakao, in the form of a "Log in with [Platform]" feature. Using a platform's information to perform authentication on another site like this is called the OAuth protocol.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/14/oauth2-java-server-1</guid>
    <link>https://blog.itcode.dev/en/2021/10/14/oauth2-java-server-1</link>
    <pubDate>Wed, 13 Oct 2021 15:56:31 GMT</pubDate>
    <title>[OAuth2.0] Building an OAuth2.0 Authorization Server with ScribeJAVA - 1. What is OAuth2.0?</title>
  </item>
  <item>
    <category>NextJS</category>
    <category>React</category>
    <category>SCSS</category>
    <category>CSS</category>
    <description>Originally, my blog used the JS-in-CSS styling approach. The reason was Material-UI. Since Material-UI's official examples explicitly explain things using the JS-in-CSS approach, I, being at a beginner level with React, naturally assumed this was how it had to be done. However, as development continued, some components were forced into complex styles, and components with bloated style syntax started to appear. As a result, the drawbacks of JS-in-CSS gradually became apparent. A representative problem is FOUC (Flash Of Unstyled Content) — a phenomenon where style rendering takes time, causing the user to see the page before rendering is complete. On my page, FOUC occurred for just under about a second, which severely hurt the user experience. This FOUC issue was also the biggest reason I decided to redesign my blog, and after researching related information, I confirmed that CSS-in-CSS performs significantly better.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/24/nextjs-reorganization-3</guid>
    <link>https://blog.itcode.dev/en/2021/09/24/nextjs-reorganization-3</link>
    <pubDate>Fri, 24 Sep 2021 04:17:24 GMT</pubDate>
    <title>[NextJS] Blog Redesign Journey - 3. Adding SCSS</title>
  </item>
  <item>
    <category>NextJS</category>
    <category>React</category>
    <category>TypeScript</category>
    <description>When I first encountered JavaScript and grew somewhat comfortable with its basic concepts, I heard a story that was passed around like a legend in the developer community.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/21/nextjs-reorganization-2</guid>
    <link>https://blog.itcode.dev/en/2021/09/21/nextjs-reorganization-2</link>
    <pubDate>Mon, 20 Sep 2021 20:30:21 GMT</pubDate>
    <title>[NextJS] Blog Reorganization Journal - 2. Clothing It in TypeScript</title>
  </item>
  <item>
    <category>NextJS</category>
    <category>React</category>
    <description>It was May when I picked up React through bits and pieces I found on the internet, and boldly, without really knowing what I was doing, started developing a blog. Back then, I was gripped by a strong desire to make something with this fun new tool, and the thing that caught my eye at the time was a dev blog. The blog I was using back then was a Jekyll-based GitHub blog, which I'd started because it looked fun, but gave up on within a few days — that was over a year ago. One of the reasons I lost interest in blogging was the stress of having to painstakingly analyze code someone else had written just to make small changes. The moment I saw a dev blog, this was roughly the train of thought running through my head.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/21/nextjs-reorganization-1</guid>
    <link>https://blog.itcode.dev/en/2021/09/21/nextjs-reorganization-1</link>
    <pubDate>Mon, 20 Sep 2021 18:22:35 GMT</pubDate>
    <title>[NextJS] Blog Reorganization Journal - 1. Record One</title>
  </item>
  <item>
    <category>Ubuntu</category>
    <category>SSH</category>
    <category>SFTP</category>
    <description>Remote protocols like SSH and SFTP improve a server's accessibility, but they severely undermine its security. If an attacker discovers a specific server's IP, they can attempt an SSH connection to that IP. Even without knowing the IP, they can just as easily get in through a domain linked to that IP, since a domain's information — including the IP and even ownership details — can easily be obtained by querying a DNS server. Therefore, if anyone knows the IP or domain, SSH service port, and account information of the server you're trying to access, they can attempt an SSH connection or cause damage to the server at will. The moment you expose a domain to the outside world, various connection attempts start coming in from both home and abroad. Attacks from China in particular come in a lot, and you can easily find related experiences and case studies of damage on the internet.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/15/increase-ubuntu-remote-security</guid>
    <link>https://blog.itcode.dev/en/2021/09/15/increase-ubuntu-remote-security</link>
    <pubDate>Tue, 14 Sep 2021 16:53:21 GMT</pubDate>
    <title>[Ubuntu] Strengthening the Security of Ubuntu Remote Protocols</title>
  </item>
  <item>
    <category>Raspberry Pi</category>
    <category>Ubuntu</category>
    <category>MariaDB</category>
    <category>RDBMS</category>
    <description>Finally, the last chapter of building the Raspberry Pi development environment. A DBMS is a system that manages a DB (Database), a storage space for holding various data. It lets you store necessary data in the DB and retrieve it as needed to work with it. By linking a web server with a DBMS, you can store and use user account information, settings, and more.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/14/ubuntu-in-mariadb</guid>
    <link>https://blog.itcode.dev/en/2021/09/14/ubuntu-in-mariadb</link>
    <pubDate>Mon, 13 Sep 2021 17:04:02 GMT</pubDate>
    <title>[Raspberry Pi 4] Setting Up MariaDB</title>
  </item>
  <item>
    <category>Raspberry Pi</category>
    <category>Ubuntu</category>
    <category>SSH</category>
    <category>RDP</category>
    <description>Now the Raspberry Pi has a fairly presentable web server environment set up. But handling the Raspberry Pi by directly connecting a monitor, keyboard, and mouse to the device is a bit cumbersome. In this context, the Raspberry Pi is meant to operate as a secondary web server, so it can't be the main computer. In other words, most work such as development happens on the main computer, with the server only handling deployment. When devices are split this way, both devices need to be able to access each other smoothly. In short, we need a remote environment. In this chapter, we set up a remote environment on the Raspberry Pi. By setting up SSH and RDP communication, we configure it so the Raspberry Pi can be accessed from anywhere, whether via SSH or a Windows PC.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/08/raspberry-remote</guid>
    <link>https://blog.itcode.dev/en/2021/09/08/raspberry-remote</link>
    <pubDate>Wed, 08 Sep 2021 13:40:38 GMT</pubDate>
    <title>[Raspberry Pi 4] Setting Up a Remote Environment (SSH, RDP)</title>
  </item>
  <item>
    <category>Raspberry Pi</category>
    <category>Ubuntu</category>
    <category>Tomcat</category>
    <category>SSL</category>
    <description>In the previous chapter, I obtained a dev domain through Google Domains. This blog's address actually uses the domain I purchased, https://blog.itcode.dev. The dev domain has an enhanced security policy applied. All HTTP communication to that domain must be served exclusively via HTTPS secure communication. Since routing happens over the https protocol at the network layer, providing an HTTPS service is mandatory whether we like it or not.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/06/raspberry-ssl-domain</guid>
    <link>https://blog.itcode.dev/en/2021/09/06/raspberry-ssl-domain</link>
    <pubDate>Mon, 06 Sep 2021 07:50:40 GMT</pubDate>
    <title>[Raspberry Pi 4] Providing HTTPS Communication on an Ubuntu Server with Let's Encrypt</title>
  </item>
  <item>
    <category>Raspberry Pi</category>
    <category>Ubuntu</category>
    <category>Domain</category>
    <description>Through the process so far, I've installed an OS on the Raspberry Pi and set up an environment where Tomcat runs as a web server. Now we can access the site by connecting to the Raspberry Pi's IP address. But a proper page isn't accessed by typing in an IP address. We'll acquire a domain, link it to the IP, and use it as the URL address. In this chapter, we purchase a domain directly and connect it to the Raspberry Pi server.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/04/raspberry-domain</guid>
    <link>https://blog.itcode.dev/en/2021/09/04/raspberry-domain</link>
    <pubDate>Sat, 04 Sep 2021 03:09:04 GMT</pubDate>
    <title>[Raspberry Pi 4] Applying a Domain to the Raspberry Pi</title>
  </item>
  <item>
    <category>Ubuntu</category>
    <category>Firewall</category>
    <description>Every building has an entrance. In a normal situation, whoever wants to enter or leave a building must pass through the entrance, whether they like it or not. This entrance isn't always simply open, either — it may stay open when needed but be closed at certain times. Some places are even quite particular about who they let in. Think of a restricted security area, or a club on a Friday night. PC communication works on essentially the same principle. It may look like PCs just communicate freely, but each one comes and goes through an assigned entrance. If a PC is a building, then the PC's entrance can be called a port (PORT).</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/04/firewall-with-ufw</guid>
    <link>https://blog.itcode.dev/en/2021/09/04/firewall-with-ufw</link>
    <pubDate>Fri, 03 Sep 2021 16:26:20 GMT</pubDate>
    <title>[Ubuntu] Configuring Firewall Ports with ufw</title>
  </item>
  <item>
    <category>Raspberry Pi</category>
    <category>Ubuntu</category>
    <category>Domain</category>
    <description>Now that the OS is ready, let's build out the web server environment in earnest. We'll use Tomcat, a representative WAS, to host pages.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/09/02/ubuntu-in-tomcat</guid>
    <link>https://blog.itcode.dev/en/2021/09/02/ubuntu-in-tomcat</link>
    <pubDate>Thu, 02 Sep 2021 14:07:19 GMT</pubDate>
    <title>[Raspberry Pi 4] Installing Tomcat on Ubuntu</title>
  </item>
  <item>
    <category>Raspberry Pi</category>
    <category>Ubuntu</category>
    <description>By Thursday, delivery of all the supplies was complete. A clean Raspberry Pi doesn't have an OS installed and is in a FreeDOS state, so you have to install the OS yourself. Since I regularly reformat my computer and have run a few virtual machines, this shouldn't be much of a problem for me, but the catch is that this is a bit different from the computers I've dealt with so far. Since it's a device I'd never handled before, and there are several differences and constraints compared to a typical desktop, it wasn't entirely smooth sailing.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/31/ubuntu-in-raspberry</guid>
    <link>https://blog.itcode.dev/en/2021/08/31/ubuntu-in-raspberry</link>
    <pubDate>Mon, 30 Aug 2021 16:51:39 GMT</pubDate>
    <title>[Raspberry Pi 4] Installing Ubuntu on the Raspberry Pi</title>
  </item>
  <item>
    <category>Raspberry Pi</category>
    <description>A fair number of developers build their own servers, whether on the cloud or on a device, and put them to various uses. When developing, you inevitably need something like a server that's always running 24 hours a day. For example, GitHub Pages only hosts static pages — it can't use a backend or a DB, so dynamic page hosting is impossible. But if a personal API or DB server exists, communicating with that server makes more dynamic page hosting possible. Considering the role a backend plays on the web, the difference between having and not having a personal server you can use is night and day. As a developer, I too have long wanted a server I could use without restrictions, and I looked into ways to build a personal server.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/29/hello-raspberry</guid>
    <link>https://blog.itcode.dev/en/2021/08/29/hello-raspberry</link>
    <pubDate>Sun, 29 Aug 2021 04:41:41 GMT</pubDate>
    <title>[Raspberry Pi 4] Hello Raspberry!</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Deque</category>
    <category>SILVER</category>
    <category>SILVER IV</category>
    <description>Jimin has a bidirectional circular queue containing N elements. Jimin wants to extract several elements from this queue. Jimin can perform the following three operations on this queue. The number N originally contained in the queue is given. Also, the positions of the elements Jimin wants to extract are given (these positions refer to the original position in the queue). Write a program that outputs the minimum number of operations 2 and 3 required to extract those elements in the given order.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/26/a1021</guid>
    <link>https://blog.itcode.dev/en/2021/08/26/a1021</link>
    <pubDate>Wed, 25 Aug 2021 16:39:29 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm 1021 - Rotating Queue</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Dynamic Programming</category>
    <category>PLATINUM</category>
    <category>PLATINUM II</category>
    <description>Jimin has an N-digit digital counter whose number increases by one every second. The number shown on the counter wraps around — once it reaches 10^N-1, it starts again from 0. Each digit is made up of the following 7 segments. Every two adjacent segments are connected by a +. For example, 1 is made up of two segments, and 9 is made up of five segments. Given the number currently shown on the counter, write a program to find the minimum number of seconds that must pass before a number with the same total number of segments as the currently displayed number appears. The digits 1, 2, ..., 9, and 0 are made up of 2, 5, 5, 4, 5, 6, 3, 7, 5, and 6 segments respectively, and since every number must fill exactly N digits, numbers shorter than N digits may have leading zeros.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/24/a1020</guid>
    <link>https://blog.itcode.dev/en/2021/08/24/a1020</link>
    <pubDate>Mon, 23 Aug 2021 16:17:46 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1020 - Digital Counter</title>
  </item>
  <item>
    <category>Development Blog</category>
    <description>Color test</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/20/color-test</guid>
    <link>https://blog.itcode.dev/en/2021/08/20/color-test</link>
    <pubDate>Fri, 20 Aug 2021 06:43:00 GMT</pubDate>
    <title>Blog Text Color Examples</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>SSL</category>
    <category>Tomcat</category>
    <description>Now that we've obtained an SSL certificate, let's apply it. This is typically applied to a web server like Nginx, or a WAS like Tomcat. This chapter explains the process based on Tomcat 9.0.50.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/20/apply-ssl</guid>
    <link>https://blog.itcode.dev/en/2021/08/20/apply-ssl</link>
    <pubDate>Thu, 19 Aug 2021 15:35:21 GMT</pubDate>
    <title>[SSL] Applying SSL to Tomcat</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>SSL</category>
    <description>Now that we have a domain, let's use it to obtain an SSL certificate. Of course, obtaining an SSL certificate also costs money. Most active domain providers also offer SSL issuance alongside domains. For testing purposes, SSL issuance would be an unwelcome cost, just like the domain was. There are also ways to obtain SSL for free, and there are actually far more options for this than there were for the domain.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/19/lets-encrypt</guid>
    <link>https://blog.itcode.dev/en/2021/08/19/lets-encrypt</link>
    <pubDate>Thu, 19 Aug 2021 14:37:21 GMT</pubDate>
    <title>[SSL] Getting a Free SSL Certificate with Let's Encrypt on Windows 10</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>SSL</category>
    <category>Domain</category>
    <description>The previous posts covered what SSL is and how it works. To apply SSL to a site, you need to obtain an SSL certificate. And to obtain an SSL certificate, you need a domain to be verified against. You can easily get one from a domestic domain provider. The providers above offer a variety of services beyond just domains, including hosting. There are many other providers as well, both domestic and overseas. Prices and policies vary by provider, so shopping around can get you a good deal. Prices vary depending on the TLD (Top Level Domain), ranging from just a few thousand won per year on the cheap end, up to several hundred thousand won on the expensive end.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/18/freenom-domain</guid>
    <link>https://blog.itcode.dev/en/2021/08/18/freenom-domain</link>
    <pubDate>Wed, 18 Aug 2021 14:44:43 GMT</pubDate>
    <title>[SSL] Getting a Free Domain Using Freenom</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>SSL</category>
    <category>TLS</category>
    <description>If you've ever deployed a website, you've probably heard of SSL. The protocol for a URL with SSL applied starts with https://, and unlike http://, it has an added s meaning Secure. You can see that the address of this very site, https://blog.itcode.dev, also has SSL applied. The same goes for NAVER and Google. As you can see, SSL isn't a concept that's only familiar to web developers. If you've ever used the internet, it's safe to say you've encountered SSL whether you realized it or not.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/18/about-ssl</guid>
    <link>https://blog.itcode.dev/en/2021/08/18/about-ssl</link>
    <pubDate>Tue, 17 Aug 2021 15:26:08 GMT</pubDate>
    <title>[SSL] What is SSL?</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>SSL</category>
    <description>If you've read the previous chapter, you'll have noticed a mention of certificates. We explained how, once SSL is applied, the server and client communicate and handle data through encryption/decryption, but that's just the underlying principle of SSL. So then, why exactly is a domain able to use https once SSL has been applied to it?</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/18/about-ssl-license</guid>
    <link>https://blog.itcode.dev/en/2021/08/18/about-ssl-license</link>
    <pubDate>Wed, 18 Aug 2021 01:55:24 GMT</pubDate>
    <title>[SSL] SSL Certificates</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Five Principles of OOP</category>
    <category>Dependency Inversion Principle</category>
    <category>DIP</category>
    <description>The Dependency Inversion Principle states that an object should depend on high-level modules rather than low-level modules. That sounds a bit complicated. What exactly is a high-level module, and what's a low-level module? The definitions of high/low-level modules are as follows. Substituting this definition into the Dependency Inversion Principle, we can rephrase it as: an object should depend on interfaces rather than on other objects. In other words, this can be interpreted to mean that, as much as possible, inheritance of objects should occur through interfaces.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/17/dependency-inversion-principle</guid>
    <link>https://blog.itcode.dev/en/2021/08/17/dependency-inversion-principle</link>
    <pubDate>Mon, 16 Aug 2021 18:06:35 GMT</pubDate>
    <title>[OOP] Five Principles of Object Orientation (SOLID) - Dependency Inversion Principle (DIP)</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Five Principles of OOP</category>
    <description>The Interface Segregation Principle states that an object should not depend on methods it does not use. It recommends inheriting/implementing only the methods that are truly necessary, in order to prevent implementing meaningless methods on an object. If the object to be inherited is too large in scope, it's better to split its methods into smaller interfaces. The diagram above illustrates the problem that arises when inheriting from an object that is too large, and how splitting it into interfaces solves the problem. When the objects on the left and right each inherit from the object in the middle, the object on the left has no issue since it needs all of the implemented methods. The object on the right, however, doesn't need anything besides Method1. But because it inherited everything, it's forced to carry those methods whether it likes it or not — or in the worst case, it even has to implement methods it doesn't need. But let's instead split the methods of the object to be inherited into interfaces grouped by behavior. Then each object only needs to inherit the interface it actually needs, so each one ends up with only the methods it requires. This is what the Interface Segregation Principle aims for.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/16/interface-segregation-principle</guid>
    <link>https://blog.itcode.dev/en/2021/08/16/interface-segregation-principle</link>
    <pubDate>Mon, 16 Aug 2021 10:24:57 GMT</pubDate>
    <title>[OOP] Five Principles of Object Orientation (SOLID) - Interface Segregation Principle (ISP)</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Five Principles of OOP</category>
    <category>Liskov Substitution Principle</category>
    <category>LSP</category>
    <description>The Liskov Substitution Principle states that when there is a parent object and a child object that inherits from it, the child object must be able to completely substitute for the parent object in any operation that calls the parent object. In object-oriented languages, inheritance occurs between objects. Through this process, a parent/child relationship is defined. A child object inherits the characteristics of its parent object and can extend upon them. However, in this process, overreaching or extensions that stray from the intent of the object can lead to improper inheritance. The Liskov Substitution Principle recommends that, for proper inheritance, a child object's extension should fully follow the direction of the parent object.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/15/liskov-subsitution-principle</guid>
    <link>https://blog.itcode.dev/en/2021/08/15/liskov-subsitution-principle</link>
    <pubDate>Sun, 15 Aug 2021 04:42:11 GMT</pubDate>
    <title>[OOP] Five Principles of Object Orientation (SOLID) - Liskov Substitution Principle (LSP)</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Five Principles of OOP</category>
    <category>Open-Closed Principle</category>
    <category>OCP</category>
    <description>The Open-Closed Principle is the principle that when handling objects, extension of an object should be open, while modification of an object should be closed. In short, it means showing what should be shown and hiding what should be hidden. To put it more simply, it means functionality can change or be extended, but the code implementing that functionality must not be modified. This principle sounds a bit odd, though. Functionality changing — OK. Extension — OK. But you can't modify the code?? That's a somewhat confusing requirement. Suppose you're modifying a single object. If doing so requires not only modifying that object but also chain-modifying the code of every other object that depends on it, that's hard to call good design. Think of a typical library as an example. When the code of an object that uses a library changes, the library's own code doesn't change along with it. In this way, the Open-Closed Principle pursues proper modularization and information hiding for each object, thereby minimizing dependency between objects and reducing the impact of code changes.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/14/open-closed-principle</guid>
    <link>https://blog.itcode.dev/en/2021/08/14/open-closed-principle</link>
    <pubDate>Fri, 13 Aug 2021 19:04:40 GMT</pubDate>
    <title>[OOP] Five Principles of Object Orientation (SOLID) - Open-Closed Principle (OCP)</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Five Principles of OOP</category>
    <category>Single Responsibility Principle</category>
    <category>SRP</category>
    <description>There are principles established for proper object-oriented design, and these five principles together are called the five principles of object orientation (SOLID). While not mandatory, the more you adhere to these rules, the more correctly designed your object-oriented code can be said to be. These five principles are as follows.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/13/single-responsibility-principle</guid>
    <link>https://blog.itcode.dev/en/2021/08/13/single-responsibility-principle</link>
    <pubDate>Thu, 12 Aug 2021 16:37:48 GMT</pubDate>
    <title>[OOP] Five Principles of Object Orientation (SOLID) - Single Responsibility Principle (SRP)</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Polymorphism</category>
    <description>Object-oriented languages don't allow methods with the same name. For example, suppose there's a method implementing the behavior "eat." There's no need to implement the same "eat" behavior twice. From this perspective, it makes sense that method names would need to be unique, since a method's name could even be considered its own identity. But thinking about it a bit more, this seems strange. Java lives and dies by types. Unlike JavaScript, you can't put just any type into a parameter—if you pass in anything other than the specified type, it gets ruthlessly rejected at compile time.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/12/polymorphism</guid>
    <link>https://blog.itcode.dev/en/2021/08/12/polymorphism</link>
    <pubDate>Wed, 11 Aug 2021 15:32:42 GMT</pubDate>
    <title>[OOP] Characteristics of Object Orientation - Polymorphism</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Inheritance</category>
    <category>Abstraction</category>
    <description>It's a lazy weekend, and Mr. A is casually watching a movie. In it, the protagonist, a girl who'd lived her whole life mistreated, one day receives a massive inheritance from someone. It turns out she was the long-lost granddaughter of a wealthy conglomerate family! From there, she uses the inheritance to repay those who'd been kind to her, and deliver a satisfying revenge on those who'd looked down on her. Mr. A, who found it fairly satisfying, soon remembers that this kind of thing could never happen in real life. We call this inheritance. As a concept, inheritance like this used to only be something you'd see in movies or dramas. It was practically a fictional concept, one you'd only find in a dictionary.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/11/inheritance</guid>
    <link>https://blog.itcode.dev/en/2021/08/11/inheritance</link>
    <pubDate>Wed, 11 Aug 2021 11:32:33 GMT</pubDate>
    <title>[OOP] Characteristics of Object Orientation - Inheritance</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <category>Encapsulation</category>
    <category>Information Hiding</category>
    <category>Access Modifiers</category>
    <description>An object—that is, the property of packaging a class's internal variables and methods together as one unit. If a variable or method declared in an object could be accessed haphazardly from anywhere without distinction, it would be hard to call it a proper object. A concept similar to encapsulation is information hiding. Information hiding conceals an object's internal implementation, ensuring that the object can only be interacted with through its designated methods. Both concepts aim to modularize objects by increasing their cohesion and independence. When an object is properly modularized, it becomes very easy to reuse at the module level. Replacing code duplicated across multiple pieces of logic with a module means you can apply changes just by modifying the source inside that module. This translates directly into easier maintenance.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/08/encapulation</guid>
    <link>https://blog.itcode.dev/en/2021/08/08/encapulation</link>
    <pubDate>Sun, 08 Aug 2021 02:05:05 GMT</pubDate>
    <title>[OOP] Characteristics of Object Orientation - Encapsulation and Information Hiding</title>
  </item>
  <item>
    <category>CS</category>
    <category>Object-Oriented Programming</category>
    <description>If you end up working in IT, chances are you'll work with at least one of Java, C++, or C#. What these three languages have in common—including Java, the most widely supplied and demanded language in Korea's IT industry—is that they're all object-oriented languages. Of course, the concept of functional programming has since emerged as well, but object-oriented programming, which arose after C's simple procedural approach, offered a new perspective on programming, and countless languages, big and small, have been influenced by it, knowingly or not. Despite being such an influential concept, when actually asked a related question, people often can't give a clear answer.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/07/what-is-oop</guid>
    <link>https://blog.itcode.dev/en/2021/08/07/what-is-oop</link>
    <pubDate>Sat, 07 Aug 2021 03:06:45 GMT</pubDate>
    <title>[OOP] What Is Object-Oriented Programming?</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithm</category>
    <category>Grokking Algorithms</category>
    <category>Recursion</category>
    <description>In programming languages, recursion means a function calling itself. Recursion is one of the most important concepts in algorithms, and by its very nature, it can effectively improve complex computations and the time they take to run.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/08/04/about-algorithm-chapter09</guid>
    <link>https://blog.itcode.dev/en/2021/08/04/about-algorithm-chapter09</link>
    <pubDate>Tue, 03 Aug 2021 15:26:26 GMT</pubDate>
    <title>Recursive Iteration Using Recursion</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithm</category>
    <category>Grokking Algorithms</category>
    <category>Queue</category>
    <category>Stack</category>
    <description>This chapter covers stacks and queues. In fact, both of these data structures are essentially arrays with specific constraints applied. You might think this concept of a 'constraint' would only be useful in special situations, but on the contrary, the very rules imposed by these constraints make them useful in a huge number of places. The defining feature of stacks and queues is that data processing has an inherent order. According to their respective constraints, stacks and queues always process data in a fixed order. Thanks to this property, they're extremely useful for tasks that require ordering. Common examples include schedulers, waiting queues, and OS interrupt handling, which relies on a stack.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/31/about-algorithm-chapter08</guid>
    <link>https://blog.itcode.dev/en/2021/07/31/about-algorithm-chapter08</link>
    <pubDate>Sat, 31 Jul 2021 02:58:37 GMT</pubDate>
    <title>Writing Leaner Code with Stacks and Queues</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithm</category>
    <category>Grokking Algorithms</category>
    <category>Hash Table</category>
    <description>Of all the data formats we've covered so far, the array is probably the most effective for handling a large number of values. However, arrays are specialized for storing exactly one value per element. What would happen if you wanted to store two values in a single element? You'd end up representing it as something like [[A, 1], [B, 2], [C, 3]]. One downside of arrays is that finding a value quickly requires sorting them first. But once an array's depth gets deep, like an array containing other arrays as shown above, the structure gets complicated and increasingly hard to work with. What's more, searching for a desired element in an array requires a time complexity of at least O(logN). What if there were a data structure that could search for a desired value in constant time, like O(1), within a collection of data like an array? Somehow, this chapter seems like the place we'll find the answer.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/29/about-algorithm-chapter07</guid>
    <link>https://blog.itcode.dev/en/2021/07/29/about-algorithm-chapter07</link>
    <pubDate>Thu, 29 Jul 2021 14:02:27 GMT</pubDate>
    <title>Blazing-Fast Lookups with Hash Tables</title>
  </item>
  <item>
    <category>React</category>
    <category>Next.js</category>
    <category>Dev Blog</category>
    <category>TypeScript</category>
    <category>SCSS</category>
    <description>I remember first building this blog back around May. I'd gotten into React starting in April, and this blog was a rather haphazard first project, so I figured the result was probably even rougher than I thought. Sure enough (unfortunately?), the blog didn't disappoint that belief, and it kept showing all sorts of big and small issues along the way. None of them were critical enough to actually break functionality, but there were a few things that bugged me enough to be distracting. Nobody's really interested, but since I already did the work, I wanted to use this post to lay out the improvements I made to the blog.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/26/brand-new</guid>
    <link>https://blog.itcode.dev/en/2021/07/26/brand-new</link>
    <pubDate>Sun, 25 Jul 2021 19:54:40 GMT</pubDate>
    <title>The Story of My Blog Overhaul</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithm</category>
    <category>Grokking Algorithms</category>
    <category>Insertion Sort</category>
    <description>Until now, we've always looked at algorithms from a pessimistic perspective. The advantage of this is clear: preparing for the worst means you're covered no matter what. But not all data represents the worst case, and in fact most cases fall within an ordinary range. In this chapter, we consider all scenarios and judge the appropriate algorithm based on the situation.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/24/about-algorithm-chapter06</guid>
    <link>https://blog.itcode.dev/en/2021/07/24/about-algorithm-chapter06</link>
    <pubDate>Fri, 23 Jul 2021 19:54:40 GMT</pubDate>
    <title>Optimizing for the Positive Scenario</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithm</category>
    <category>Grokking Algorithms</category>
    <category>Selection Sort</category>
    <description>So far, we've quantified algorithm performance comparisons using Big O notation. But Big O notation isn't perfect for measuring an algorithm's performance either. In the previous chapter, we explained that both N(O^2) and N(N^2 - N) are considered N(O^2) under Big O notation. Because of this property, algorithms that actually show a clear difference can end up measured as having nearly identical performance under Big O notation.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/23/about-algorithm-chapter05</guid>
    <link>https://blog.itcode.dev/en/2021/07/23/about-algorithm-chapter05</link>
    <pubDate>Fri, 23 Jul 2021 14:42:33 GMT</pubDate>
    <title>Optimizing Code With and Without Big O</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithm</category>
    <category>Grokking Algorithms</category>
    <category>Bubble Sort</category>
    <description>Having learned Big O notation in the previous chapter, we confirmed that we can compare algorithms against each other by comparing their time complexities. In this chapter, we'll design a bubble sort algorithm and see how it can be improved using Big O notation.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/16/about-algorithm-chapter04</guid>
    <link>https://blog.itcode.dev/en/2021/07/16/about-algorithm-chapter04</link>
    <pubDate>Fri, 16 Jul 2021 12:39:54 GMT</pubDate>
    <title>Using Big O to Speed Up Code</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithm</category>
    <category>Grokking Algorithms</category>
    <category>Big O Notation</category>
    <description>Even for a single problem, there can be countless algorithms that solve it. If a problem can be solved by any method whatsoever, it deserves to be called an algorithm in its own right, but not all algorithms are created equal. That's because of differences in the efficiency with which they solve the problem. Even if two algorithms both ultimately solve the problem, some do so brute-force while others do so remarkably efficiently. And we would generally consider the latter to be more deserving of the name 'algorithm'.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/14/about-algorithm-chapter03</guid>
    <link>https://blog.itcode.dev/en/2021/07/14/about-algorithm-chapter03</link>
    <pubDate>Tue, 13 Jul 2021 19:21:37 GMT</pubDate>
    <title>Big O Notation</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithms</category>
    <category>Grokking Algorithms</category>
    <category>Arrays</category>
    <category>Sorting</category>
    <category>Binary Search</category>
    <description>In the IT field, an algorithm refers to code that embodies a method for solving a particular problem. A well-designed algorithm can process a problem far faster than a naive, straightforward approach. Since development involves an enormous variety of problems, and an even greater variety of ways to solve them, more complex problems demand more sophisticated algorithm design.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/10/about-algorithm-chapter02</guid>
    <link>https://blog.itcode.dev/en/2021/07/10/about-algorithm-chapter02</link>
    <pubDate>Fri, 09 Jul 2021 19:21:37 GMT</pubDate>
    <title>Why Algorithms Matter</title>
  </item>
  <item>
    <category>Data Structures</category>
    <category>Algorithms</category>
    <category>Grokking Algorithms</category>
    <category>Arrays</category>
    <description>Studying alone is fine and all, but it's inefficient. I spend most of my time sitting in front of the computer, but if you ask me how much of that is genuinely spent studying, I have to look away awkwardly. Since I'd just started developing and using my own blog, I decided to join a study group to help with studying too. After selling off my laptop, I'd wanted to join a study group but couldn't — so the moment I heard I could join without a laptop, I signed up right away.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/07/10/about-algorithm-chapter01</guid>
    <link>https://blog.itcode.dev/en/2021/07/10/about-algorithm-chapter01</link>
    <pubDate>Fri, 09 Jul 2021 16:30:56 GMT</pubDate>
    <title>Why Data Structures Matter</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>GOLD</category>
    <category>GOLD I</category>
    <description>Jimin has a book with a total of N pages. The first page is page 1, and the last page is page N. Let's find out how many times each digit appears across all the page numbers.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/28/a1019</guid>
    <link>https://blog.itcode.dev/en/2021/06/28/a1019</link>
    <pubDate>Mon, 28 Jun 2021 03:28:50 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1019 - Book Pages</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>SILVER</category>
    <category>SILVER V</category>
    <category>Brute Force</category>
    <description>Jimin found a board of size M*N, divided into MN unit squares, in his mansion. Some of the squares are painted black, and the rest are painted white. Jimin wants to cut this board to make an 8*8 chessboard. A chessboard must be painted with black and white alternating. Specifically, each square is painted either black or white, and any two squares sharing an edge must be painted a different color. Following this definition, there are only two ways to paint a chessboard: one where the top-left square is white, and one where it's black. Since there's no guarantee the board is already painted like a chessboard, Jimin thought that after cutting out an 8 x 8 chessboard, he might need to repaint some of the squares. Of course, the 8*8 section can be chosen from anywhere on the board. Write a program to find the minimum number of squares Jimin needs to repaint.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/26/a1018</guid>
    <link>https://blog.itcode.dev/en/2021/06/26/a1018</link>
    <pubDate>Sat, 26 Jun 2021 07:46:20 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1018 - Repainting the Chessboard</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>PLATINUM</category>
    <category>PLATINUM III</category>
    <category>Sieve of Eratosthenes</category>
    <category>Bipartite Matching</category>
    <description>Given a list of numbers, Jimin wants to pair them up so that the sum of each pair is a prime number. For example, suppose we have {1, 4, 7, 10, 11, 12}. Jimin can group them as follows: 1 + 4 = 5, 7 + 10 = 17, 11 + 12 = 23, or 1 + 10 = 11, 4 + 7 = 11, 11 + 12 = 23. Given a list of numbers, write a program that, when Jimin pairs up all the numbers, prints in ascending order which numbers can be paired with the first number. In the example above, 1 + 12 = 13, which is prime. However, there is no way to pair up the remaining 4 numbers such that their sums are all prime. Therefore, the answer for the example is 4, 10.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/26/a1017</guid>
    <link>https://blog.itcode.dev/en/2021/06/26/a1017</link>
    <pubDate>Fri, 25 Jun 2021 18:19:32 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1017 - Prime Pairs</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>GOLD</category>
    <category>GOLD I</category>
    <category>Sieve of Eratosthenes</category>
    <description>A number X is called a squarefree number when it is not divisible by any square number greater than 1. A square number is the square of an integer. Given min and max, print how many squarefree numbers exist between min and max, inclusive.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/23/a1016</guid>
    <link>https://blog.itcode.dev/en/2021/06/23/a1016</link>
    <pubDate>Tue, 22 Jun 2021 15:22:31 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1016 - Squarefree Numbers</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>SILVER</category>
    <category>SILVER IV</category>
    <category>Sorting</category>
    <description>P[0], P[1], ..., P[N - 1] is a sequence containing each of the numbers from 0 to N - 1 (inclusive) exactly once. Applying sequence P to an array A of length N produces an array B of length N. The method of application is B[P[i]] = A[i]. Given array A, write a program that finds the sequence P such that the result of applying P is non-decreasing. Non-decreasing means each element is greater than or equal to the element immediately before it. If there are multiple such sequences, print the one that comes first in lexicographic order.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/22/a1015</guid>
    <link>https://blog.itcode.dev/en/2021/06/22/a1015</link>
    <pubDate>Mon, 21 Jun 2021 16:23:31 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1015 - Sequence Sort</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>PLATINUM</category>
    <category>PLATINUM IV</category>
    <category>Network Flow</category>
    <category>Minimum Vertex Cover</category>
    <category>Bipartite Matching</category>
    <description>Professor Choi Baekjoon teaches a course called 'The Art of Cheating' at Sogang University. This course has a solid reputation for being quite tricky, so some students try to copy other people's answers during exams. The exam takes place in a rectangular classroom that is N rows by M columns in size. The classroom is made up of unit squares of size 1 x 1, each representing one seat. To prevent cheating, Choi Baekjoon devised the following strategy. Assume that every student always copies the answers of whoever sits to their left, right, diagonally up-left, or diagonally up-right — four seats in total. Therefore, the seating arrangement must be laid out so that no student is able to cheat.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/18/a1014</guid>
    <link>https://blog.itcode.dev/en/2021/06/18/a1014</link>
    <pubDate>Fri, 18 Jun 2021 07:42:44 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1014 - Cheating</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>String</category>
    <category>split</category>
    <category>StringTokenizer</category>
    <description>When solving algorithm problems, you inevitably end up handling input values. To cover various cases, you take user input directly and process it. When you do, nine times out of ten, the following situation comes up. To send a dataset, a collection of data is joined into a single string using a delimiter (space or comma).</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/14/split-and-stringtokenizer</guid>
    <link>https://blog.itcode.dev/en/2021/06/14/split-and-stringtokenizer</link>
    <pubDate>Sun, 13 Jun 2021 16:56:01 GMT</pubDate>
    <title>[JAVA] split vs StringTokenizer</title>
  </item>
  <item>
    <category>IntelliJ</category>
    <category>Hyper-V</category>
    <category>Troubleshooting</category>
    <description/>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/14/intellij-error-onstart</guid>
    <link>https://blog.itcode.dev/en/2021/06/14/intellij-error-onstart</link>
    <pubDate>Mon, 14 Jun 2021 12:59:16 GMT</pubDate>
    <title>Error on IntelliJ startup (java.net.BindException: Address already in use: bind)</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Regular Expressions</category>
    <category>GOLD</category>
    <category>GOLD V</category>
    <description>The Arecibo radio telescope, located in Arecibo, Puerto Rico, has spent decades gazing at the night sky in an attempt to receive radio waves from an alien civilization that may not even exist. Efforts to find patterns in the radio waves collected by this telescope that could not naturally occur, and to use them as evidence for the existence of extraterrestrial civilizations, have continued unabated, but no such pattern has been discovered yet. Dr. Kim Dong-hyeok, the pride of Korean astronomy, adopted the following radio wave notation as a standard in order to carry out this kind of search using domestic technology.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/13/a1013</guid>
    <link>https://blog.itcode.dev/en/2021/06/13/a1013</link>
    <pubDate>Sat, 12 Jun 2021 19:53:32 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1013 - Contact</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>DFS (Depth-First Search)</category>
    <category>BFS (Breadth-First Search)</category>
    <category>SILVER</category>
    <category>SILVER II</category>
    <description>Hanna, a next-generation farmer, has decided to grow organic cabbage in the highlands of Gangwon-do. Since protecting cabbage from pests is important when growing cabbage without using pesticides, Hanna decides to purchase cabbage whiteworms, which are effective at pest control. These worms live near cabbages and protect them by eating pests. In particular, if even a single cabbage whiteworm lives on a cabbage, it can move to an adjacent cabbage, so that cabbage is also protected from pests. (Two cabbages are considered adjacent when one is located directly above, below, to the left, or to the right of the other.)</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/13/a1012</guid>
    <link>https://blog.itcode.dev/en/2021/06/13/a1012</link>
    <pubDate>Sat, 12 Jun 2021 16:42:10 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm Problem 1012 - Organic Cabbage</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA(Java)</category>
    <category>SILVER</category>
    <category>SILVER I</category>
    <description>As a child, Woohyun believed that a future would come where humanity could live on planets other than Earth. Now, 23 years after he first set foot on this world called Earth, he is the world's youngest ASNA astronaut, waiting for the glorious moment when he'll set foot on a new world. The spaceship he'll board carries a large-scale life support system to help settle Alpha Centauri, a new home for humanity, and because of its enormous size and mass, it's equipped with a space-jump device developed by mobilizing the latest technology. However, this space-jump device has the drawback of causing serious mechanical faults if the travel distance increases too sharply, so if it moved k light-years the previous time it was activated, it can only move k - 1, k, or k + 1 light-years the next time.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/11/a1011</guid>
    <link>https://blog.itcode.dev/en/2021/06/11/a1011</link>
    <pubDate>Fri, 11 Jun 2021 05:14:09 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm #1011 Fly Me to the Alpha Centauri</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA(Java)</category>
    <category>Combination</category>
    <category>SILVER</category>
    <category>SILVER V</category>
    <description>Jaewon has become the mayor of a city. This city has a large, straight river running through it, dividing the city into east and west. However, Jaewon realized that citizens were having great difficulty crossing the river because there were no bridges, so he decided to build some. A location along the river suitable for building a bridge is called a site. After carefully surveying the area around the river, Jaewon found that there are N sites on the west side of the river and M sites on the east side. (N ≤ M)</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/09/a1010</guid>
    <link>https://blog.itcode.dev/en/2021/06/09/a1010</link>
    <pubDate>Wed, 09 Jun 2021 05:14:09 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm #1010 Building Bridges</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA(Java)</category>
    <category>Math</category>
    <category>BRONZE</category>
    <category>BRONZE IV</category>
    <description>Jaeyong owns 10 state-of-the-art computers. One day, Jaeyong had a lot of data to process, so he assigned each computer a number from 1 to 10, and decided that the 10 computers would process the data in the following way.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/09/a1009</guid>
    <link>https://blog.itcode.dev/en/2021/06/09/a1009</link>
    <pubDate>Wed, 09 Jun 2021 02:06:38 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm #1009 Distributed Processing</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA(Java)</category>
    <category>Arithmetic</category>
    <category>BRONZE</category>
    <category>BRONZE IV</category>
    <description>Given two integers A and B, write a program that outputs A / B.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/09/a1008</guid>
    <link>https://blog.itcode.dev/en/2021/06/09/a1008</link>
    <pubDate>Wed, 09 Jun 2021 01:25:31 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm #1008 A / B</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA(Java)</category>
    <category>Brute Force</category>
    <category>Combination</category>
    <category>GOLD</category>
    <category>GOLD II</category>
    <description>There are N points marked on a plane, and let's call this set of points P. A vector matching of set P is a set of vectors, where every vector starts at one point in set P and ends at another point. Also, every point belonging to P must be used exactly once. The number of vectors in V is half the number of points in P. Given the points on the plane, write a program that outputs the minimum length of the sum of the vectors in the vector matching of set P.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/09/a1007</guid>
    <link>https://blog.itcode.dev/en/2021/06/09/a1007</link>
    <pubDate>Tue, 08 Jun 2021 15:50:26 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm #1007 Vectors</title>
  </item>
  <item>
    <category>GitHub Pages</category>
    <category>Jekyll</category>
    <category>Blog</category>
    <description>GitHub manages each project as a single Repository. A created Repository can be managed using Git. The GitHub page itself allows you to create, modify, and delete files within a Repository, but that's very cumbersome, so it's generally recommended to use Git instead.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/07/jekyll-blog-jekyll-shopping</guid>
    <link>https://blog.itcode.dev/en/2021/06/07/jekyll-blog-jekyll-shopping</link>
    <pubDate>Mon, 07 Jun 2021 14:42:11 GMT</pubDate>
    <title>[Jekyll] Building My Own Blog with GitHub Pages - 4. Shopping for Jekyll Themes</title>
  </item>
  <item>
    <category>GitHub Pages</category>
    <category>Jekyll</category>
    <category>Blog</category>
    <description>You can create your own blog through a major portal or one of many big and small platforms. Blogs built on such platforms are easy and convenient — you can set one up with a linked account and a few button clicks. However, blogs like this have a fixed basic page frame, and free customization is fairly limited. To build a blog that reflects your own color or values, you need to find a way that isn't so-called "off-the-shelf," which in turn leads to the large task of building the entire web service yourself, from creating and publishing pages to hosting. Even if you somehow manage to build the page, features beyond the frame itself, like design via CSS or extra functionality via JavaScript, are even harder than building the frame. Even if you somehow pulled all of that off on your own, hosting costs money. If you add a DB on top of that, the cost grows even larger. All I wanted was a simple blog.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/06/jekyll-blog-start</guid>
    <link>https://blog.itcode.dev/en/2021/06/06/jekyll-blog-start</link>
    <pubDate>Sun, 06 Jun 2021 14:18:25 GMT</pubDate>
    <title>[Jekyll] Building My Own Blog with GitHub Pages - 1. What is Jekyll?</title>
  </item>
  <item>
    <category>GitHub Pages</category>
    <category>Jekyll</category>
    <category>Blog</category>
    <category>Git</category>
    <description>GitHub manages each project as a single Repository. A created Repository can be managed using Git. The GitHub page itself allows you to create, modify, and delete files within a Repository, but that's very cumbersome, so it's generally recommended to use Git instead.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/06/jekyll-blog-prepare-git</guid>
    <link>https://blog.itcode.dev/en/2021/06/06/jekyll-blog-prepare-git</link>
    <pubDate>Sun, 06 Jun 2021 14:42:11 GMT</pubDate>
    <title>[Jekyll] Building My Own Blog with GitHub Pages - 3. Installing Git</title>
  </item>
  <item>
    <category>GitHub Pages</category>
    <category>Jekyll</category>
    <category>Blog</category>
    <category>GitHub</category>
    <description>Jekyll is hosted through GitHub. In other words, to build a blog with Jekyll, you need at least some familiarity with GitHub. In this post, we'll set aside GitHub's many other features and focus purely on what's needed for Jekyll hosting.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/06/jekyll-blog-github</guid>
    <link>https://blog.itcode.dev/en/2021/06/06/jekyll-blog-github</link>
    <pubDate>Sun, 06 Jun 2021 14:29:32 GMT</pubDate>
    <title>[Jekyll] Building My Own Blog with GitHub Pages - 2. Getting to Know GitHub</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA(Java)</category>
    <category>Dynamic Programming</category>
    <category>PLATINUM</category>
    <category>PLATINUM III</category>
    <description>Chorage is a special agent who has been given the mission of raiding Korea's secret national defense base (Ontagon). The Ontagon building is donut-shaped, and to determine efficient strike points, Chorage divided the area into two circular zones as shown below. (The numbers in the diagram indicate each zone's number.) Chorage plans to deploy multiple special squads, each consisting of W members, to infiltrate every zone, and Chorage knows exactly how many enemy soldiers are stationed in each zone. The special squads can infiltrate under the following conditions.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/06/a1006</guid>
    <link>https://blog.itcode.dev/en/2021/06/06/a1006</link>
    <pubDate>Sun, 06 Jun 2021 13:42:02 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm #1006 Raider Chorage</title>
  </item>
  <item>
    <category>Compiler</category>
    <category>Interpreter</category>
    <description>Ever since the days of punch cards, computer languages have undergone countless advances. Nowadays, synergies between developed languages have caused new languages and concepts to be created almost daily. But no matter how new the language used to build a piece of software, the entity that ultimately executes the program is the computer. No matter how much we fuss over new languages, frameworks, and technologies, in the end, it must be something the computer can understand in order to run. Fitting for a global era where even elementary school students speak more than one foreign language, unfortunately our computers have stubbornly stuck to machine language alone since their inception. Setting aside Korean or English, most of the programming languages we use for development — even assembly language, which is lower-level than C — are no different from alien language as far as the computer is concerned.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/03/compiler-interpreter</guid>
    <link>https://blog.itcode.dev/en/2021/06/03/compiler-interpreter</link>
    <pubDate>Thu, 03 Jun 2021 08:25:23 GMT</pubDate>
    <title>Compiler &amp; Interpreter</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA(Java)</category>
    <category>Dynamic Programming</category>
    <category>Topological Sort</category>
    <category>GOLD</category>
    <category>GOLD III</category>
    <description>In the year 2012! The game ACM Craft (Association of Construction Manager Craft), which has kept countless citizens waiting for two years, has finally been released. Unlike previous games, ACM Craft does not have a fixed order for constructing buildings, allowing for dynamic gameplay. In other words, the first game and the second game may have a different building order. At the start of each game, the building order is given. Also, every building has a delay from the start of construction until its completion.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/06/01/a1005</guid>
    <link>https://blog.itcode.dev/en/2021/06/01/a1005</link>
    <pubDate>Mon, 31 May 2021 16:27:56 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm #1005 ACM Craft</title>
  </item>
  <item>
    <category>JAVA</category>
    <category>WAS</category>
    <category>Tomcat</category>
    <category>Troubleshooting</category>
    <description>Occasionally when running a JAVA program, you'll run into an error where an Unsupported major.minor version 52 message (the number varies depending on the class version) is printed and the program fails to run correctly. The Unsupported major.minor version error, translated literally, means "unsupported major/minor version." You can think of it as a JAVA version-related error.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/30/unsupported-version-error</guid>
    <link>https://blog.itcode.dev/en/2021/05/30/unsupported-version-error</link>
    <pubDate>Sat, 29 May 2021 17:16:35 GMT</pubDate>
    <title>Fixing the Unsupported major.minor version Error (+Servlet 404 Error)</title>
  </item>
  <item>
    <category>WEB</category>
    <category>URI</category>
    <category>URL</category>
    <category>URN</category>
    <description>When we access a particular piece of data on the internet, we use something called a URL to access it. Once you have the URL for the resource you want, you can call that URL from an HTTP communication program like a browser to get the response.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/29/uri-url-urn</guid>
    <link>https://blog.itcode.dev/en/2021/05/29/uri-url-urn</link>
    <pubDate>Fri, 28 May 2021 18:30:17 GMT</pubDate>
    <title>URI? URL? URN? Distinguishing Resource Identifiers</title>
  </item>
  <item>
    <category>WAS</category>
    <category>Tomcat</category>
    <category>Console</category>
    <description>Mr. A is starting up Tomcat like any other day. Tomcat, which had been working fine until yesterday, immediately shuts down during startup due to some error. Right before it closed, some kind of error message seemed to flash by... but it happened too fast to catch. Mr. A has no choice but to dig through the logs one by one to fix the error. Nothing was changed on his end, so why is this happening?</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/26/tomcat-current-window</guid>
    <link>https://blog.itcode.dev/en/2021/05/26/tomcat-current-window</link>
    <pubDate>Wed, 26 May 2021 07:32:16 GMT</pubDate>
    <title>Running Tomcat in the Current Console Window</title>
  </item>
  <item>
    <category>WAS</category>
    <category>Tomcat</category>
    <category>Console</category>
    <description>A phenomenon you run into fairly often when running Tomcat — not quite an error, more of a symptom. It happens because Windows Console's default encoding and the encoding Tomcat outputs in don't match.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/22/tomcat-encoding-euckr</guid>
    <link>https://blog.itcode.dev/en/2021/05/22/tomcat-encoding-euckr</link>
    <pubDate>Sat, 22 May 2021 03:52:51 GMT</pubDate>
    <title>Fixing Garbled Korean Text in the Tomcat Console</title>
  </item>
  <item>
    <category>WEB</category>
    <category>Domain</category>
    <description>To understand domains, we need to first go over IP. Every device connected to the internet (computers, smartphones, routers, etc.) has a unique IP address made up of a series of numbers. IP addresses can be broadly classified by mutability into dynamic IPs and static IPs. Dynamic IP: an IP address that gets renewed at arbitrary points in time. The renewal interval isn't fixed. Applies to most internet connections. Static IP: an IP fixed to a connection line that never gets renewed. Provided as an add-on service, and suitable for cases like shopping malls or companies that need to run a system continuously. Just as we look up an address to visit a place we want to go, visiting a website run on a particular server requires the IP that serves as that server's address.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/22/about-domain</guid>
    <link>https://blog.itcode.dev/en/2021/05/22/about-domain</link>
    <pubDate>Sat, 22 May 2021 03:52:51 GMT</pubDate>
    <title>What Is a Domain?</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Geometry</category>
    <category>SILVER</category>
    <category>SILVER III</category>
    <description>The Little Prince lives on the asteroid B-664 for the sake of a rose he loves. One day, upon learning that the rose is in danger, the Little Prince sets off on a long journey along the galaxy to save the rose. However, the Little Prince's spaceship isn't in great shape, so he must travel while avoiding transitions between planetary systems as much as possible. The image below shows part of the galaxy map the Little Prince has unfolded.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/22/a1004</guid>
    <link>https://blog.itcode.dev/en/2021/05/22/a1004</link>
    <pubDate>Sat, 22 May 2021 12:42:23 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm 1004 The Little Prince</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <description>To prepare for coding tests and improve my own skills, I decided to work through Baekjoon algorithm problems in order. If I just solve them without writing anything down, I'll surely forget how I solved them later, so I'll write posts covering what I understood as I work through each solution. The rules for these solutions are as follows.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/21/start-beakjoon</guid>
    <link>https://blog.itcode.dev/en/2021/05/21/start-beakjoon</link>
    <pubDate>Fri, 21 May 2021 12:22:31 GMT</pubDate>
    <title>Getting Started with Baekjoon Algorithms</title>
  </item>
  <item>
    <category>React</category>
    <category>Next.js</category>
    <category>Dev Blog</category>
    <category>Jekyll</category>
    <description>The story of migrating my blog from Jekyll to Next.js</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/21/jekyll-to-nextjs</guid>
    <link>https://blog.itcode.dev/en/2021/05/21/jekyll-to-nextjs</link>
    <pubDate>Fri, 21 May 2021 06:09:33 GMT</pubDate>
    <title>From Jekyll to Next.js</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Fibonacci Sequence</category>
    <category>Dynamic Programming</category>
    <category>SILVER</category>
    <category>SILVER III</category>
    <description>The following source is a C++ function that computes the Nth Fibonacci number.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/21/a1003</guid>
    <link>https://blog.itcode.dev/en/2021/05/21/a1003</link>
    <pubDate>Fri, 21 May 2021 14:29:03 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm 1003 Fibonacci Function</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Geometry</category>
    <category>SILVER</category>
    <category>SILVER IV</category>
    <description>Kyuhyun Cho and Seunghwan Baek are employees working at the Turret. But their presence is so faint that they don't even count toward the population. Below are photos of Kyuhyun Cho and Seunghyun Baek.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/21/a1002</guid>
    <link>https://blog.itcode.dev/en/2021/05/21/a1002</link>
    <pubDate>Fri, 21 May 2021 12:56:10 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm 1002 Turret</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Arithmetic Operations</category>
    <category>BRONZE</category>
    <category>BRONZE V</category>
    <description>Write a program that reads two integers A and B, then prints A - B.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/21/a1001</guid>
    <link>https://blog.itcode.dev/en/2021/05/21/a1001</link>
    <pubDate>Fri, 21 May 2021 12:51:19 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm 1001 A - B</title>
  </item>
  <item>
    <category>Baekjoon</category>
    <category>Algorithm</category>
    <category>JAVA</category>
    <category>Arithmetic Operations</category>
    <category>BRONZE</category>
    <category>BRONZE V</category>
    <description>Write a program that reads two integers A and B, then prints A + B.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/05/21/a1000</guid>
    <link>https://blog.itcode.dev/en/2021/05/21/a1000</link>
    <pubDate>Fri, 21 May 2021 12:38:17 GMT</pubDate>
    <title>[Baekjoon / JAVA] Baekjoon Algorithm 1000 A + B</title>
  </item>
  <item>
    <category>React</category>
    <category>Next.js</category>
    <category>Markdown</category>
    <category>NX</category>
    <category>Monorepo</category>
    <description>Let's go over how the blog changed and what the focus was during this 5th renewal.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2024/06/01/5th-generation</guid>
    <link>https://blog.itcode.dev/en/2024/06/01/5th-generation</link>
    <pubDate>Sat, 01 Jun 2024 04:42:22 GMT</pubDate>
    <title>The 5th Generation</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>React</category>
    <description>If you've read through this series, you've likely seen the OpenLayers6 Sandbox, which shows examples alongside code. That site was built to intuitively show the results of the code. I thought that seeing the actual implemented result would be much easier to understand than just looking at code. Showing example sites is good, but I thought it would allow for even freer exploration if I also explained how to build your own GeoServer and connect it to the example site. In this chapter, I'll provide all the data I actually used on the example site, along with the setup method for GeoServer, so we can connect the OpenLayers6 Sandbox site to our own GeoServer.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/09/24/gis-guide-for-programmer-26</guid>
    <link>https://blog.itcode.dev/en/2023/09/24/gis-guide-for-programmer-26</link>
    <pubDate>Sat, 23 Sep 2023 19:18:43 GMT</pubDate>
    <title>A Guide for Programmers Traveling Through OpenLayers - 26. Hands-On! Running OpenLayers6 Sandbox with My Own GeoServer</title>
  </item>
  <item>
    <category>React</category>
    <category>Next.js</category>
    <category>Markdown</category>
    <description>Generally, when writing posts on a website, an HTML-based editor is commonly used. But on development-related sites, it's not uncommon to see markdown-based editors used instead. My blog too, while not written directly on the web, is written based on markdown. It lets me write intuitively while also being highly compatible with HTML, so there's no issue rendering it on the web either. Plus, there's a variety of supporting plugins as a bonus. I've added rendering code to make the blog's content look polished. Code blocks are one example of this.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/09/17/piedit</guid>
    <link>https://blog.itcode.dev/en/2023/09/17/piedit</link>
    <pubDate>Sun, 17 Sep 2023 12:57:46 GMT</pubDate>
    <title>My Experience Developing Piedit</title>
  </item>
  <item>
    <category>React</category>
    <category>Next.js</category>
    <category>Material UI</category>
    <category>Giscus</category>
    <description>It feels like it wasn't long ago that I overhauled the blog for the third time because I didn't like how it looked, and yet here I am, before I knew it, already overhauling it for the fourth time. My last blog post was from almost half a year ago, since I hardly paid any attention to the blog while developing a toy project. What's more, since the 3rd renewal I've picked up a variety of frontend skills. Because my standards rose along with that, part of the reason was that I just couldn't stand the blog's UI anymore. Fortunately, I had quite a few posts already written, and a few of them turned out to be reliable earners, so visitor numbers didn't decline.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2023/09/09/4th-renewal</guid>
    <link>https://blog.itcode.dev/en/2023/09/09/4th-renewal</link>
    <pubDate>Fri, 08 Sep 2023 18:00:59 GMT</pubDate>
    <title>On Realizing I've Overhauled the Blog Four Times</title>
  </item>
  <item>
    <category>React</category>
    <category>Rollup.js</category>
    <category>npm</category>
    <category>Library</category>
    <description>As one of the tasks assigned to me at work, I was given the job of turning components into a library and publishing them to npm. In other words, I needed to develop a component library like react-bootstrap. My only prior experience with code publishing was deploying a JAVA open-source library to Maven once, so publishing in this new development environment inevitably led to trial and error. What I felt while developing was that there just weren't many deep references to look at, and I couldn't find suitable code I could just reuse. Fortunately, by grinding through it over time, I was able to establish some kind of foundation. It was fairly fun, seemed worth digging into, and since there didn't seem to be a widely-known reference for it either, I decided to try making one myself.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/06/10/react-components-library-starter</guid>
    <link>https://blog.itcode.dev/en/2022/06/10/react-components-library-starter</link>
    <pubDate>Fri, 10 Jun 2022 14:51:25 GMT</pubDate>
    <title>My Experience Developing a React Component Library with Rollup.js</title>
  </item>
  <item>
    <category>React</category>
    <category>Next.js</category>
    <category>Dev Blog</category>
    <description>After rebuilding my blog with Next.js, I didn't do much maintenance beyond writing new posts. I had my reasons — there was no major problem using it as-is, and honestly it was a hassle. Coming up with and placing the right components was quite a bother too. There were a few problems with my blog, one of which was that the About page had nothing on it. I'd tried to write some kind of blog introduction, but I didn't have a good idea for it. Then, out of nowhere, a decent idea popped into my head: "Wouldn't it be nice to show a commit list on the About page?" It seemed like a decent idea, so I started developing it, but suddenly the ugly parts of the blog started bothering me. Unable to bear seeing those ugly parts all of a sudden, I ended up starting an unplanned blog renewal.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/06/05/blog-renewal</guid>
    <link>https://blog.itcode.dev/en/2022/06/05/blog-renewal</link>
    <pubDate>Sun, 05 Jun 2022 14:01:19 GMT</pubDate>
    <title>Blog 3rd Renewal</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WFS</category>
    <category>WebGL</category>
    <description>I've mentioned before that the more objects there are to represent with WFS markers, the more it directly translates into cost. But what if — and this is a big if — you really need to show every single one of a huge number of objects as markers? Whatever the reason, if you run into this problem, WebGL can be the solution. In this chapter, we use the WebGL renderer to display 300,000 markers.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/06/02/gis-guide-for-programmer-25</guid>
    <link>https://blog.itcode.dev/en/2022/06/02/gis-guide-for-programmer-25</link>
    <pubDate>Wed, 01 Jun 2022 15:57:11 GMT</pubDate>
    <title>A Guide for Programmers Traveling Through OpenLayers - 25. Displaying Massive Data with WebGL</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WFS</category>
    <description>Data can produce completely different results depending on your perspective. All the maps we've dealt with so far have focused on showing data exactly as it is on the map. In this chapter, we shift our perspective on data a bit through the Heat Map.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/06/02/gis-guide-for-programmer-24</guid>
    <link>https://blog.itcode.dev/en/2022/06/02/gis-guide-for-programmer-24</link>
    <pubDate>Wed, 01 Jun 2022 15:27:57 GMT</pubDate>
    <title>A Guide for Programmers Traveling Through OpenLayers - 24. Displaying a Heat Map</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WFS</category>
    <description>Markers on a map are typically managed as WFS objects since they're the primary element through which interaction with the user takes place. Because rendering is object-based, the more data there is, the more it directly translates into service cost. As you can see, an excessive number of markers loses its meaning as data. With too many elements, visibility drops drastically, and meaningful interaction also becomes impossible. This is a common mistake made when trying to show as much data as possible. Even setting visibility aside, a map displaying that many markers is very slow.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/06/01/gis-guide-for-programmer-23</guid>
    <link>https://blog.itcode.dev/en/2022/06/01/gis-guide-for-programmer-23</link>
    <pubDate>Tue, 31 May 2022 17:59:12 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 23. Representing a Cluster Map</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WFS</category>
    <description>Among the three WFS Transaction APIs, let's cover the final step, deleting data.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/31/gis-guide-for-programmer-22</guid>
    <link>https://blog.itcode.dev/en/2022/05/31/gis-guide-for-programmer-22</link>
    <pubDate>Mon, 30 May 2022 16:46:17 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 22. Deleting Data with WFS Transaction</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WFS</category>
    <description>Among the three WFS Transaction APIs, let's cover Update, which modifies data.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/31/gis-guide-for-programmer-21</guid>
    <link>https://blog.itcode.dev/en/2022/05/31/gis-guide-for-programmer-21</link>
    <pubDate>Mon, 30 May 2022 16:10:12 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 21. Modifying Data with WFS Transaction</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WFS</category>
    <description>Up to now, all we've done is call data through GeoServer and display it. Whether displaying it as objects, drawing it as an image, or presenting the data directly, in the end it was all just about showing data in some form. This document, along with the next two, covers inserting/updating/deleting spatial data. Using the WFS Transaction protocol, you can perform CUD operations on data following a fixed pattern. This document specifically covers WFS Transaction Insert — that is, adding spatial data.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/30/gis-guide-for-programmer-20</guid>
    <link>https://blog.itcode.dev/en/2022/05/30/gis-guide-for-programmer-20</link>
    <pubDate>Sun, 29 May 2022 15:55:46 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 20. Adding Data with WFS Transaction</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WMS</category>
    <description>When you click a marker or object displayed on the map, a popup shows detailed information about that object. In this chapter, we'll display a popup on a WFS map to show a marker's detailed information.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/28/gis-guide-for-programmer-19</guid>
    <link>https://blog.itcode.dev/en/2022/05/28/gis-guide-for-programmer-19</link>
    <pubDate>Sat, 28 May 2022 11:55:23 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 19. Attaching a Popup to WMS</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>WFS</category>
    <description>When you click a marker or object displayed on the map, a popup shows detailed information about that object. In this chapter, we'll display a popup on a WFS map to show a marker's detailed information.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/25/gis-guide-for-programmer-18</guid>
    <link>https://blog.itcode.dev/en/2022/05/25/gis-guide-for-programmer-18</link>
    <pubDate>Wed, 25 May 2022 14:00:06 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 18. Attaching a Popup to WFS</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <description>The biggest difference between WFS and WMS lies in the result of the data. WFS returns spatial elements as GeoJSON, while WMS directly renders a map based on the spatial elements and provides that. OpenLayers renders objects onto a `canvas` based on WFS data. Think of it as drawing a kind of shape based on the spatial information. Unlike images, since these are objects drawn directly on the web, the web has the great advantage of being able to recognize or manipulate them.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/21/gis-guide-for-programmer-17</guid>
    <link>https://blog.itcode.dev/en/2022/05/21/gis-guide-for-programmer-17</link>
    <pubDate>Fri, 20 May 2022 18:04:59 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 17. Adding Interactions to WFS Objects</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>OGC</category>
    <category>WMS</category>
    <description>This chapter covers how to display images on the map via WFS. While WFS in the previous chapter received spatial data as GeoJSON and displayed it directly as objects, WMS receives an image that GeoServer has rendered from objects and displays that. In other words, you can think of it as receiving a Tile Map directly from GeoServer and rendering it.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/16/gis-guide-for-programmer-16</guid>
    <link>https://blog.itcode.dev/en/2022/05/16/gis-guide-for-programmer-16</link>
    <pubDate>Sun, 15 May 2022 17:13:10 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 16. Displaying Images on the Map Using WMS GetImage</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <category>OpenLayers</category>
    <category>OGC</category>
    <category>WFS</category>
    <description>Up to now, everything covered has been purely a feature of OpenLayers itself, but starting from this chapter, we'll gradually cover integration with GeoServer. The first feature we'll cover is WFS. In GeoServer, WFS returns the information of the specified elements in GeoJSON form. This information can be used appropriately to display it on the map. Through this feature, you can display data you directly manage or process on the map.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/05/15/gis-guide-for-programmer-15</guid>
    <link>https://blog.itcode.dev/en/2022/05/15/gis-guide-for-programmer-15</link>
    <pubDate>Sat, 14 May 2022 17:48:50 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 15. Using WFS GetFeature to Display Objects on the Map</title>
  </item>
  <item>
    <category>GIS</category>
    <category>OpenLayers</category>
    <description>Based on the user's location, various services can be provided, but among them, the most basic feature is directly displaying the user's location on the map. Based on the geolocation explained in the previous chapter, we display the location on the map using OpenLayers.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/04/04/gis-guide-for-programmer-14</guid>
    <link>https://blog.itcode.dev/en/2022/04/04/gis-guide-for-programmer-14</link>
    <pubDate>Sun, 03 Apr 2022 16:56:03 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 14. Displaying the User's Location on the Map</title>
  </item>
  <item>
    <category>GIS</category>
    <category>OpenLayers</category>
    <description>Among map services, some analyze the user's location and present content more appropriate to that location. For example, delivery apps preferentially show only restaurants within a certain range based on the user's location. For applications, the GPS of the smartphone, the primary device they run on, can be leveraged. Similarly, browsers can themselves collect and use location information with the user's consent. Naturally, an internet connection is required.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/04/03/gis-guide-for-programmer-13</guid>
    <link>https://blog.itcode.dev/en/2022/04/03/gis-guide-for-programmer-13</link>
    <pubDate>Sat, 02 Apr 2022 17:50:05 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 13. Collecting the User's Location Information in the Browser</title>
  </item>
  <item>
    <category>GIS</category>
    <category>OpenLayers</category>
    <description>When working with maps, there are various situations where you need to obtain information such as the coordinates of the area you're currently viewing, the coordinates where the mouse is positioned on the map, the zoom level, and more. To satisfy these needs, creating a status panel on the map that outputs related information would be useful whenever needed.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/22/gis-guide-for-programmer-12</guid>
    <link>https://blog.itcode.dev/en/2022/03/22/gis-guide-for-programmer-12</link>
    <pubDate>Tue, 22 Mar 2022 13:37:21 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 12. Displaying Useful Map Information</title>
  </item>
  <item>
    <category>GIS</category>
    <category>OpenLayers</category>
    <description>In the previous chapter, we displayed a map through OSM. However, OSM's map has an undeniable drawback: its lack of detail. Even though OSM has the great advantage of being an easy-to-use world map, that one drawback makes it difficult to use as a map for domestic Korean services. In other words, to use it for something more substantial than an example, a map specialized for Korean geography is needed.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/21/gis-guide-for-programmer-11</guid>
    <link>https://blog.itcode.dev/en/2022/03/21/gis-guide-for-programmer-11</link>
    <pubDate>Mon, 21 Mar 2022 14:51:45 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 11. Creating a VWorld Map</title>
  </item>
  <item>
    <category>GIS</category>
    <category>OpenLayers</category>
    <description>OSM is a world map that map professionals from around the world autonomously manage. In other words, it's easiest to think of it as open source for the mapping field. Contributors from each country manage the map, and each country's territory is displayed in that country's language. It has the advantage of being applicable without issue to services targeting the entire world. However, based in Korea, the quality of the map isn't all that great. OpenLayers provides OSM by default at the library level. In other words, you can put a world map up on the web with just a few lines of simple code, without any special API calls or configuration. This chapter covers the very basic method of putting up OSM on the web using OpenLayers6.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/19/gis-guide-for-programmer-10</guid>
    <link>https://blog.itcode.dev/en/2022/03/19/gis-guide-for-programmer-10</link>
    <pubDate>Mon, 14 Mar 2022 19:53:00 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 10. Creating an Open Street Map (OSM) Map</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <description>When calling WFS or WMS, there may be cases where more varied filtering is needed. You might need to call objects outside a specific area, call only data that spans a specific area, or query data by combining various conditions.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/15/gis-guide-for-programmer-9</guid>
    <link>https://blog.itcode.dev/en/2022/03/15/gis-guide-for-programmer-9</link>
    <pubDate>Mon, 14 Mar 2022 16:11:19 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 9. Filtering Data</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <description>OpenLayers is a JavaScript library for providing maps or GIS services in a web browser. Among GIS libraries, it has the highest barrier to entry, but it offers correspondingly powerful features.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/14/gis-guide-for-programmer-8</guid>
    <link>https://blog.itcode.dev/en/2022/03/14/gis-guide-for-programmer-8</link>
    <pubDate>Mon, 14 Mar 2022 14:37:32 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 8. How to Request Geospatial Data. OGC</title>
  </item>
  <item>
    <category>GIS</category>
    <category>GeoServer</category>
    <description>In the previous chapter, we put geospatial data into a DB. Now, all that's left is to set up a proper way to communicate that data, and we'll be able to freely use the geospatial data stored in the DB from the web or from an app. But as mentioned time and again, geospatial data has a clear distinction from other kinds of data: it's spatial data. Because geospatial data isn't ordinary text-based data, it's extremely fragile when it comes to CRUD. Even though we put it into a DB to enable freer communication, it gains no real advantage for CRUD at all. In other words, whether it's MyBatis or JPA, ordinary DB communication makes it difficult to fully retrieve geospatial data.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/07/gis-guide-for-programmer-7</guid>
    <link>https://blog.itcode.dev/en/2022/03/07/gis-guide-for-programmer-7</link>
    <pubDate>Sun, 06 Mar 2022 16:12:33 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 7. How to Manage Geospatial Data: GeoServer</title>
  </item>
  <item>
    <category>GIS</category>
    <category>MariaDB</category>
    <category>QGIS</category>
    <description>Services that need to perform CRUD on data use a DB. Data needed to run the service is stored in the DB, and by properly managing and manipulating it, the service's features are delivered. In the case of GIS, due to its nature, large volumes of data are commonly encountered. For example, the number of buildings nationwide easily exceeds a few million. Not only is having millions of rows an issue by itself, but given the nature of building information, the number of columns is also often several dozen. All of this makes the data volume grow very large.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/05/gis-guide-for-programmer-6</guid>
    <link>https://blog.itcode.dev/en/2022/03/05/gis-guide-for-programmer-6</link>
    <pubDate>Fri, 04 Mar 2022 19:35:41 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 6. Turning Geospatial Information into a DB</title>
  </item>
  <item>
    <category>GIS</category>
    <category>OpenLayers</category>
    <description>OpenLayers is a JavaScript Library for providing maps or GIS services in a web browser. Among GIS libraries, it has the steepest entry barrier, but it offers correspondingly powerful features.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/05/gis-guide-for-programmer-5</guid>
    <link>https://blog.itcode.dev/en/2022/03/05/gis-guide-for-programmer-5</link>
    <pubDate>Fri, 04 Mar 2022 18:39:25 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 5. OpenLayers</title>
  </item>
  <item>
    <category>GIS</category>
    <category>QGIS</category>
    <description>I mentioned earlier that most geospatial data is provided in SHP by default. The trouble is, I have no idea how to open this SHP thing. Text-based data like GeoJSON or CSV can at least be opened and inspected somehow, but that's not possible with SHP. That's why we need some kind of tool that can open and manipulate SHP—fortunately several already exist, so it's not a big problem. There are two especially representative tools.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/05/gis-guide-for-programmer-4</guid>
    <link>https://blog.itcode.dev/en/2022/03/05/gis-guide-for-programmer-4</link>
    <pubDate>Fri, 04 Mar 2022 18:05:25 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 4. Trying Out QGIS</title>
  </item>
  <item>
    <category>GIS</category>
    <description>In 1986, NASA launched the space shuttle Challenger, but it tragically exploded roughly 73 seconds after launch. The cause, absurdly enough, was a unit mistake. Even though the international standard is the metric system, the United States and a few other countries used the imperial system as their standard. Under these circumstances, the O-ring, a component specified in metric units on the spacecraft's design drawings, was manufactured using imperial units—and that mistake caused the accident.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/04/gis-guide-for-programmer-3</guid>
    <link>https://blog.itcode.dev/en/2022/03/04/gis-guide-for-programmer-3</link>
    <pubDate>Thu, 03 Mar 2022 16:47:29 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 3. Coordinate Systems</title>
  </item>
  <item>
    <category>GIS</category>
    <description>If you're new to GIS, I'd like to ask you something. What is space made of? Think about it for a moment. I imagine a variety of answers came to mind. It's a bit of a shame I can't actually hear what they were. But I suspect most of them were fairly abstract answers.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/03/gis-guide-for-programmer-2</guid>
    <link>https://blog.itcode.dev/en/2022/03/03/gis-guide-for-programmer-2</link>
    <pubDate>Thu, 03 Mar 2022 14:36:04 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 2. Getting to Know GIS</title>
  </item>
  <item>
    <category>GIS</category>
    <description>Unless you work in or have an interest in geospatial information or geography, the word GIS is a fairly unfamiliar term. Some people even ask, isn't it GPS, not GIS? GPS (Global Positioning System) is a technique for calculating a receiver's position using signals from three or more satellites. When you hear GPS, you tend to think of navigation, but whether we realize it or not, GPS has deeply woven itself into daily life. Navigation, smartphone maps, tracking rider locations for delivery platforms, drone swarm flight, military science, and more. GPS permeates a wide range of domains and delivers its benefits there. Through GPS, we can catch a glimpse of what kind of power comes from digitizing space in this digital age of geospatial information. GIS (Global Information System) refers, broadly, to every technology that deals with geospatial information, GPS included. Not just GPS, but every technology intertwined with space—maps, coordinate systems, and the like—can be grouped under the broad umbrella of GIS.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2022/03/03/gis-guide-for-programmer-1</guid>
    <link>https://blog.itcode.dev/en/2022/03/03/gis-guide-for-programmer-1</link>
    <pubDate>Thu, 03 Mar 2022 14:05:35 GMT</pubDate>
    <title>A Guide for Developers Traveling Through OpenLayers - 1. Introduction</title>
  </item>
  <item>
    <category>NextJS</category>
    <category>React</category>
    <category>Typescript</category>
    <category>SCSS</category>
    <description>A development blog I built myself to put the React I ended up self-teaching to meaningful use. I developed it using NextJS for a static blog. I use Typescript, and the design is rendered using a CSS-in-CSS approach via SCSS. When I bought a Raspberry Pi, I also applied the domain itcode.dev, which I purchased at the same time to build a server. I use the subdomain blog, as in blog.itcode.dev.</description>
    <guid isPermaLink="true">https://blog.itcode.dev/en/2021/10/26/github-react-blog</guid>
    <link>https://blog.itcode.dev/en/2021/10/26/github-react-blog</link>
    <pubDate>Mon, 25 Oct 2021 17:37:30 GMT</pubDate>
    <title>[React] The π-th Alpaca's Dev Scribble Project</title>
  </item>
</rss>