
		<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
			<channel>
				<copyright>Copyright ⓒ RWB 2021.05</copyright>
				<description>🦙 𝝅번째 알파카의 우당탕탕 개발 기록</description>
				<generator>𝝅번째 알파카의 개발 낙서장</generator>
				<language>ko-KR</language>
				<lastBuildDate>2025-09-06T15:05:26.488Z</lastBuildDate>
				<link>https://blog.itcode.dev</link>
				<managingEditor>psj2716@gmail.com</managingEditor>
				<pubDate>2021-05-26T23:36:57.000Z</pubDate>
				<title>𝝅번째 알파카의 개발 낙서장</title>
				<webMaster>psj2716@gmail.com</webMaster>
				
				<item>
					<title>𝝅번째 알파카의 개발 낙서장</title>
					<description>🦙 𝝅번째 알파카의 우당탕탕 개발 기록</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>https://blog.itcode.dev</link>
					<guid isPermaLink="true">https://blog.itcode.dev</guid>
					
				</item>
			

				<item>
					<title>게시글</title>
					<description>📚🦙 무엇인가 끄적끄적 쓰는 중...</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>https://blog.itcode.dev/posts</link>
					<guid isPermaLink="true">https://blog.itcode.dev/posts</guid>
					
				</item>
			

				<item>
					<title>프로젝트</title>
					<description>💻🦙 무언가 뚝딱뚝딱 만드는 중...</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>https://blog.itcode.dev/projects</link>
					<guid isPermaLink="true">https://blog.itcode.dev/projects</guid>
					
				</item>
			

				<item>
					<title>방명록</title>
					<description>💝🦙 두근대며 읽어보는 중...</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>https://blog.itcode.dev/comments</link>
					<guid isPermaLink="true">https://blog.itcode.dev/comments</guid>
					
				</item>
			

				<item>
					<title>[React Component] 무한 스크롤(Infinite Scroll) 컴포넌트 만들어보기</title>
					<description>바닐라 React.js 환경에서 무한 스크롤(Infinite Scroll) 컴포넌트를 직접 구현해보자</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/07/22/react-component-infinite-scroll</link>
					<guid isPermaLink="true">undefined/posts/2024/07/22/react-component-infinite-scroll</guid>
					<category>TypeScript</category>
<category>React</category>
				</item>
			

				<item>
					<title>useEffect &amp; useLayoutEffect</title>
					<description>React의 렌더링을 다루는 대표적인 훅으로 useEffect와 useLayoutEffect가 있다. 비슷하면서도 다른 것 같은 각각의 훅에 대한 특징을 다뤄본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/07/11/use-effect-use-layout-effect</link>
					<guid isPermaLink="true">undefined/posts/2024/07/11/use-effect-use-layout-effect</guid>
					<category>TypeScript</category>
<category>React</category>
<category>useEffect</category>
<category>useLayoutEffect</category>
				</item>
			

				<item>
					<title>[Observer API 파헤치기] 6. ReportingObserver</title>
					<description>PerformanceObserver API는 페이지의 성능 지표를 측정하는데 특화된 옵저버다. 해당 옵저버의 간략한 내용과 사용법에 대해 알아보자</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/06/30/observer-api-6</link>
					<guid isPermaLink="true">undefined/posts/2024/06/30/observer-api-6</guid>
					<category>JavaScript</category>
<category>TypeScript</category>
<category>React</category>
<category>Observer API</category>
<category>ReportingObserver</category>
				</item>
			

				<item>
					<title>[Observer API 파헤치기] 5. PerformanceObserver</title>
					<description>PerformanceObserver API는 페이지의 성능 지표를 측정하는데 특화된 옵저버다. 해당 옵저버의 간략한 내용과 사용법에 대해 알아보자</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/06/27/observer-api-5</link>
					<guid isPermaLink="true">undefined/posts/2024/06/27/observer-api-5</guid>
					<category>JavaScript</category>
<category>TypeScript</category>
<category>React</category>
<category>Observer API</category>
<category>PerformanceObserver</category>
				</item>
			

				<item>
					<title>[Observer API 파헤치기] 4. MutationObserver</title>
					<description>MutationObserver API는 DOM의 변화를 감지하는데 특화된 옵저버다. width나 height 같은 사이즈는 물론, class 같은 속성의 변화도 감지할 수 있다. 이 옵저버의 사용법을 알아보고, React에서 커스텀 훅을 통해 간편하게 사용해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/06/24/observer-api-4</link>
					<guid isPermaLink="true">undefined/posts/2024/06/24/observer-api-4</guid>
					<category>JavaScript</category>
<category>TypeScript</category>
<category>React</category>
<category>Observer API</category>
<category>MutationObserver</category>
				</item>
			

				<item>
					<title>[Observer API 파헤치기] 3. ResizeObserver</title>
					<description>ResizeObserver API는 DOM과 사이즈 변화를 다루는 데 특화된 옵저버다. 이 옵저버의 사용법을 알아보고, React에서 커스텀 훅을 통해 간편하게 사용해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/06/20/observer-api-3</link>
					<guid isPermaLink="true">undefined/posts/2024/06/20/observer-api-3</guid>
					<category>JavaScript</category>
<category>TypeScript</category>
<category>React</category>
<category>Observer API</category>
<category>ResizeObserver</category>
				</item>
			

				<item>
					<title>[Observer API 파헤치기] 2. IntersectionObserver</title>
					<description>IntersectionObserver API은 DOM과 뷰포트를 다루는 데 특화된 옵저버다. 이 옵저버의 사용법을 알아보고, React에서 커스텀 훅을 통해 간편하게 사용해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/06/14/observer-api-2</link>
					<guid isPermaLink="true">undefined/posts/2024/06/14/observer-api-2</guid>
					<category>JavaScript</category>
<category>TypeScript</category>
<category>React</category>
<category>Observer API</category>
<category>IntersectionObserver</category>
				</item>
			

				<item>
					<title>[Observer API 파헤치기] 1. Observer API</title>
					<description>Observer API가 무엇인지, 전통적인 Event Driven 기법과 어떤 차이가 있으며, 어떤 강점이 있는지 알아본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/06/12/observer-api-1</link>
					<guid isPermaLink="true">undefined/posts/2024/06/12/observer-api-1</guid>
					<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>
				</item>
			

				<item>
					<title>[GitHub Actions] 삼가 수동배포의 명복을 GitHub Actions빔 - 5. 일해라 GitHub Actions! Steps(단계) &amp; Actions(액션)</title>
					<description>GitHub Actions 워크플로의 목적과 동작이 정해지는 Steps와 Actions에 대해 알아본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/06/09/github-actions-5</link>
					<guid isPermaLink="true">undefined/posts/2024/06/09/github-actions-5</guid>
					<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>
				</item>
			

				<item>
					<title>[속보] 반 년간 실종된 RWB. 자택에서 숨 쉰 채 발견돼..</title>
					<description>&amp;#39;네티즌 曰 보자보자 하니 도가 지나쳐..&amp;#39; 실종 간 무슨 사연이 있었는지, 그 동안 쳐 논건 아닌지. 그의 행적에 귀추가 주목된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2024/05/28/missing-rwb</link>
					<guid isPermaLink="true">undefined/posts/2024/05/28/missing-rwb</guid>
					<category>잡담</category>
				</item>
			

				<item>
					<title>[GitHub Actions] 삼가 수동배포의 명복을 GitHub Actions빔 - 4. 일해라 GitHub Actions! Jobs(작업)</title>
					<description>워크플로우를 실행하는 방법에 대해서 다뤄봤으니, 이젠 워크플로우에게 작업을 시켜보는 방법에 대해 다룬다. Jobs(작업)과 Steps(단계)에 대해 다루며, Runners(러너)도 잠깐이나마 언급된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/11/08/github-actions-4</link>
					<guid isPermaLink="true">undefined/posts/2023/11/08/github-actions-4</guid>
					<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>
				</item>
			

				<item>
					<title>[GitHub Actions] 삼가 수동배포의 명복을 GitHub Actions빔 - 3. GitHub Actions를 구동하는 방법. Events(이벤트)</title>
					<description>GitHub. Git 호스팅 관리 서비스의 대표주자라 할 수 있으며, 대부분의 개발자들이 사용하는 글로벌한 서비스다. 오픈소스 진영에서 시작한 GitHub는 2018년, MicroSoft에 인수되기까지한다. 이러한 GitHub의 성공에는 소스코드 저장소 관리 기능을 기반으로 다양한 서비를 제공했기 때문일 것이다. 그 중에서는 GitHub Actions이라는 기능도 있으며, 별다른 비용 없이 CI/CD 파이프라인을 구축할 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/10/29/github-actions-3</link>
					<guid isPermaLink="true">undefined/posts/2023/10/29/github-actions-3</guid>
					<category>GitHub</category>
<category>GitHub Actions</category>
<category>Events</category>
<category>YAML</category>
<category>crontab</category>
				</item>
			

				<item>
					<title>[GitHub Actions] 삼가 수동배포의 명복을 GitHub Actions빔 - 2. GitHub Actions 알아보기</title>
					<description>우리는 이전 장에서 CI/CD가 무엇인지와, 이를 제공하는 대표적인 서비스 중 하나로 GitHub Actions이 있음을 확인했다. 그럼 GitHub Actions은 정확히 어떻게 CI/CD 서비스를 제공한다는걸까? GitHub Actions에 대해 알아보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/10/26/github-actions-2</link>
					<guid isPermaLink="true">undefined/posts/2023/10/26/github-actions-2</guid>
					<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>
				</item>
			

				<item>
					<title>Google Analytics API를 활용하여 블로그의 인기 게시글을 표현하는 갹스러운 방법</title>
					<description>게시글이 중심인 사이트를 보면, 대부분 조회수에 기반한 인기 게시글을 보여주는 기능을 제공해준다. 각 게시글마다 조회수를 저장하고, 이를 통해 가장 많은 조회수 혹은 이에 기반한 특정 조건을 만족하는 게시글을 보여주는 방식이다. 하지만, 내 블로그. 조회수 저장같은 건 없다. Serverless 방식이기 때문. GitHub를 통해 정적 호스팅만을 수행할 뿐, 서버에 그 이상의 어떤 연산도 기대할 수 없는 구조다. 때문에 능동적인 방문자수 계산은 불가능한 상황이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/10/05/hot-posts-with-ga4</link>
					<guid isPermaLink="true">undefined/posts/2023/10/05/hot-posts-with-ga4</guid>
					<category>GA</category>
<category>Google Analytics</category>
				</item>
			

				<item>
					<title>[GitHub Actions] 삼가 수동배포의 명복을 GitHub Actions빔 - 1. CI/CD</title>
					<description>하나의 프로그램이 나오기 위해선 여러 과정을 거친다. 프로그램의 규모에 따라 더 많은 인력, 더 많은 과정과 일정이 동반된다. 하지만 그 어떤 프로그램이라도 결과는 빌드와 배포 하나로 귀속된다. 한낮 텍스트들과 에셋들이 빌드를 거쳐 하나의 프로그램으로 완성되고, 배포를 통해 사람들에게 쓰여진다. 모든 프로그램의 목표인 셈이다. 그에 걸맞게 빌드와 배포에 대한 중요성 역시 매우 크다. 그에 맞게 빌드/배포는 마냥 쉬운 일이 아니다. 프로그램의 규모가 커질수록, 시간은 그 이상으로 걸리게 된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/09/28/github-actions-1</link>
					<guid isPermaLink="true">undefined/posts/2023/09/28/github-actions-1</guid>
					<category>GitHub</category>
<category>GitHub Actions</category>
<category>CI</category>
<category>CD</category>
<category>지속적 통합</category>
<category>지속적 제공</category>
<category>지속적 배포</category>
				</item>
			

				<item>
					<title>[TypeScript] 마크다운 TOC 만들기</title>
					<description>글의 요소 중엔 목차라는 개념이 존재한다. TOC(Table Of Content)라고도 한다. 목차를 통해 독자는 글의 전반적인 내용과 짜임새를 파악할 수 있으며, 원할 경우 필요한 부분만 취사선택을 하도록 유도할 수도 있다. 독자를 위해서도, 글을 위해서도 좋은 장치인 셈이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/09/26/markdown-toc</link>
					<guid isPermaLink="true">undefined/posts/2023/09/26/markdown-toc</guid>
					<category>React</category>
<category>TypeScript</category>
<category>Markdown</category>
<category>Regexp</category>
<category>Table Of Content</category>
				</item>
			

				<item>
					<title>[Next.js] Next.js 13 알아보기</title>
					<description>React 프로젝트를 하면, 십중팔구는 `Next.js`를 쓰게 된다. 최근에 블로그를 개편하면서 `create-next-app`을 돌렸는데, 13버전으로 업데이트 되면서 눈에 띄는 변경점이 있는 듯 하다. 그 중 몇몇 변경점은 기존 사용법과 상이해져서 쓰는데 살짝 애를 좀 먹었는데, 이러한 변경점에 대해 다뤄보고자 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/09/23/nextjs13</link>
					<guid isPermaLink="true">undefined/posts/2023/09/23/nextjs13</guid>
					<category>React</category>
<category>Web</category>
<category>Next.js</category>
				</item>
			

				<item>
					<title>[recoil] Duplicate atom key 오류 해결하기</title>
					<description>React와 상태관리는 떼놓을 수 없는 존재다. 좀 더 효율적이고 스마트한 상태관리를 위한 많은 시도가 있어왔는데, recoil도 그 중 하나다. recoil은 선발주자인 Redux, mobx와 달리 간편하면서도 강력한 기능 덕분에 많은 사랑을 받는 라이브러리다. 나 또한 React 개발 시 애용하기도 하고.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2023/02/04/recoil-duplicated-key</link>
					<guid isPermaLink="true">undefined/posts/2023/02/04/recoil-duplicated-key</guid>
					<category>React</category>
<category>Web</category>
<category>recoil</category>
				</item>
			

				<item>
					<title>심심해서 쓰는 Tesla Model 3 렌트 후기</title>
					<description>제주도 갈끄니까~~~~~~</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2022/07/25/tesla-model3</link>
					<guid isPermaLink="true">undefined/posts/2022/07/25/tesla-model3</guid>
					<category>Tesla</category>
				</item>
			

				<item>
					<title>렌더링 삼형제 CSR, SSR, SSG</title>
					<description>인터넷 역사가 이어지며 발전을 거듭할수록, 인터넷의 대명사인 웹 또한 거대해지고 있다. 초기 시절, 정적 데이터 기반의 단순 페이지만 보여주는데 그쳤던 웹은 이젠 대규모 비즈니스 로직을 무리없이 수행한다. 이러한 흐름에 따라, 웹의 기본 단위인 페이지의 비중도 따라 점점 커지고 있다. 우리는 하루에도 수십 개의 페이지를 향유한다. 사용자는 단순히 &amp;quot;페이지를 본다&amp;quot;는 활동을 하지만, 모든 일이 그렇듯이 그 이면에는 보이지 않는 여러 동작이 존재한다. 그 중 사용자에게 페이지를 보여주기 위해, 이 페이지를 렌더링. 즉, 그리는 로직에 대한 많은 고민이 이루어지게 된다. 페이지를 좀 더 빠르고, 효율적으로 보여줌은 우수한 페이지 UX로 이어지기 때문이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2022/06/12/csr-ssr-ssg</link>
					<guid isPermaLink="true">undefined/posts/2022/06/12/csr-ssr-ssg</guid>
					<category>CSR</category>
<category>SSR</category>
<category>SSG</category>
				</item>
			

				<item>
					<title>Tomcat 9 vs 10</title>
					<description>필자는 Jersey 3 라이브러리를 활용하여 API 서버를 구성하고 있다. 코드를 작성하고 올바른 URL을 호출했음에도, 404 오류가 계속 출력됐다. 간단한 테스트 서블릿을 작성하고, 공식 문서와 아무리 비교를 해도 별다른 특이점을 찾을 수 없었다. 알고보니, Jersey 3는 Servlet 5.0을 지원하기 때문에 Servlet 5.0 스펙을 구현한 Tomcat 10 이상부터 구동이 가능하다는 것을 처음 알았다. 지금껏 톰캣의 버전을 크게 신경쓰지 않았으나, 이 계기로 Tomcat 9와 Tomcat 10에 큰 차이가 있다는 것을 깨달았다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2022/02/12/tomcat-9-and-10</link>
					<guid isPermaLink="true">undefined/posts/2022/02/12/tomcat-9-and-10</guid>
					<category>JAVA(자바)</category>
<category>WAS</category>
<category>Tomcat(톰캣)</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 메뉴 리뉴얼 (72411)</title>
					<description>각 손님들이 주문한 단품메뉴들이 문자열 형식으로 담긴 배열 orders, &amp;quot;스카피&amp;quot;가 추가하고 싶어하는 코스요리를 구성하는 단품메뉴들의 갯수가 담긴 배열 course가 매개변수로 주어질 때, &amp;quot;스카피&amp;quot;가 새로 추가하게 될 코스요리의 메뉴 구성을 문자열 형태로 배열에 담아 return 하도록 solution 함수를 완성해 주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/29/programmers-a0078</link>
					<guid isPermaLink="true">undefined/posts/2021/12/29/programmers-a0078</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 행렬 테두리 회전하기 (77485)</title>
					<description>rows x columns 크기인 행렬이 있습니다. 행렬에는 1부터 rows x columns까지의 숫자가 한 줄씩 순서대로 적혀있습니다. 이 행렬에서 직사각형 모양의 범위를 여러 번 선택해, 테두리 부분에 있는 숫자들을 시계방향으로 회전시키려 합니다. 각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며, 그 의미는 다음과 같습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/29/programmers-a0077</link>
					<guid isPermaLink="true">undefined/posts/2021/12/29/programmers-a0077</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 짝지어 제거하기 (12973)</title>
					<description>짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/29/programmers-a0076</link>
					<guid isPermaLink="true">undefined/posts/2021/12/29/programmers-a0076</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 2 루시와 엘라 찾기 (59046)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/28/programmers-a0075</link>
					<guid isPermaLink="true">undefined/posts/2021/12/28/programmers-a0075</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 2 고양이와 개는 몇 마리 있을까 (59040)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/28/programmers-a0074</link>
					<guid isPermaLink="true">undefined/posts/2021/12/28/programmers-a0074</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 타겟 넘버 (43165)</title>
					<description>n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/28/programmers-a0073</link>
					<guid isPermaLink="true">undefined/posts/2021/12/28/programmers-a0073</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 더 맵게 (42626)</title>
					<description>매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/28/programmers-a0072</link>
					<guid isPermaLink="true">undefined/posts/2021/12/28/programmers-a0072</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 기능개발 (42586)</title>
					<description>프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/27/programmers-a0071</link>
					<guid isPermaLink="true">undefined/posts/2021/12/27/programmers-a0071</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 124 나라의 숫자 (12899)</title>
					<description>124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/27/programmers-a0070</link>
					<guid isPermaLink="true">undefined/posts/2021/12/27/programmers-a0070</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 멀쩡한 사각형 (62048)</title>
					<description>가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭지점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상태이기 때문에, 이 종이에서 원래 종이의 가로, 세로 방향과 평행하게 1cm × 1cm로 잘라 사용할 수 있는 만큼만 사용하기로 하였습니다. 가로의 길이 W와 세로의 길이 H가 주어질 때, 사용할 수 있는 정사각형의 개수를 구하는 solution 함수를 완성해 주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/27/programmers-a0069</link>
					<guid isPermaLink="true">undefined/posts/2021/12/27/programmers-a0069</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 단체사진 찍기 (1835)</title>
					<description>가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 달라 어떤 순서로 설지 정하는데 시간이 오래 걸렸다. 네오는 프로도와 나란히 서기를 원했고, 튜브가 뿜은 불을 맞은 적이 있던 라이언은 튜브에게서 적어도 세 칸 이상 떨어져서 서기를 원했다. 사진을 찍고 나서 돌아오는 길에, 무지는 모두가 원하는 조건을 만족하면서도 다르게 서는 방법이 있지 않았을까 생각해보게 되었다. 각 프렌즈가 원하는 조건을 입력으로 받았을 때 모든 조건을 만족할 수 있도록 서는 경우의 수를 계산하는 프로그램을 작성해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/26/programmers-a0068</link>
					<guid isPermaLink="true">undefined/posts/2021/12/26/programmers-a0068</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 카카오프렌즈 컬러링북 (1829)</title>
					<description>출판사의 편집자인 어피치는 네오에게 컬러링북에 들어갈 원화를 그려달라고 부탁하여 여러 장의 그림을 받았다. 여러 장의 그림을 난이도 순으로 컬러링북에 넣고 싶었던 어피치는 영역이 많으면 색칠하기가 까다로워 어려워진다는 사실을 발견하고 그림의 난이도를 영역의 수로 정의하였다. (영역이란 상하좌우로 연결된 같은 색상의 공간을 의미한다.) 그림에 몇 개의 영역이 있는지와 가장 큰 영역의 넓이는 얼마인지 계산하는 프로그램을 작성해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/26/programmers-a0067</link>
					<guid isPermaLink="true">undefined/posts/2021/12/26/programmers-a0067</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 오픈채팅방 (42888)</title>
					<description>카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/26/programmers-a0066</link>
					<guid isPermaLink="true">undefined/posts/2021/12/26/programmers-a0066</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 2 문자열 압축 (60057)</title>
					<description>데이터 처리 전문가가 되고 싶은 &amp;quot;어피치&amp;quot;는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 &amp;quot;aabbaccc&amp;quot;의 경우 &amp;quot;2a2ba3c&amp;quot;(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, &amp;quot;abcabcdede&amp;quot;와 같은 문자열은 전혀 압축되지 않습니다. &amp;quot;어피치&amp;quot;는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 압축하여 더 짧은 문자열로 표현할 수 있는지 방법을 찾아보려고 합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/26/programmers-a0065</link>
					<guid isPermaLink="true">undefined/posts/2021/12/26/programmers-a0065</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 2</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 직사각형 별찍기 (12954)</title>
					<description>이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/19/programmers-a0064</link>
					<guid isPermaLink="true">undefined/posts/2021/12/19/programmers-a0064</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 x만큼 간격이 있는 n개의 숫자 (12954)</title>
					<description>함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0063</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0063</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 행렬의 덧셈 (12950)</title>
					<description>행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0062</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0062</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 핸드폰 번호 가리기 (12948)</title>
					<description>프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0061</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0061</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 하샤드 수 (12947)</title>
					<description>양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1 + 8 = 9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0060</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0060</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 평균 구하기 (12944)</title>
					<description>정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0059</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0059</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 콜라츠 추측 (12943)</title>
					<description>1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0058</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0058</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 최대공약수와 최소공배수 (12940)</title>
					<description>두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0057</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0057</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 짝수와 홀수 (12937)</title>
					<description>정수 num이 짝수일 경우 &amp;quot;Even&amp;quot;을 반환하고 홀수인 경우 &amp;quot;Odd&amp;quot;를 반환하는 함수, solution을 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0056</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0056</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 제일 작은 수 제거하기 (12935)</title>
					<description>정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0055</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0055</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 정수 제곱근 판별 (12934)</title>
					<description>임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x + 1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0054</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0054</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 정수 내림차순으로 배치하기 (12933)</title>
					<description>함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0053</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0053</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 자연수 뒤집어 배열로 만들기 (12932)</title>
					<description>자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0052</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0052</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 자릿수 더하기 (12931)</title>
					<description>자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0051</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0051</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 이상한 문자 만들기 (12930)</title>
					<description>문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0050</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0050</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 약수의 합 (12928)</title>
					<description>정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0049</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0049</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 시저 암호 (12926)</title>
					<description>어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 &amp;quot;AB&amp;quot;는 1만큼 밀면 &amp;quot;BC&amp;quot;가 되고, 3만큼 밀면 &amp;quot;DE&amp;quot;가 됩니다. &amp;quot;z&amp;quot;는 1만큼 밀면 &amp;quot;a&amp;quot;가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0048</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0048</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 문자열을 정수로 바꾸기 (12925)</title>
					<description>문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0047</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0047</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 수박수박수박수박수박수? (12922)</title>
					<description>길이가 n이고, &amp;quot;수박수박수박수....&amp;quot;와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 &amp;quot;수박수박&amp;quot;을 리턴하고 3이라면 &amp;quot;수박수&amp;quot;를 리턴하면 됩니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/18/programmers-a0046</link>
					<guid isPermaLink="true">undefined/posts/2021/12/18/programmers-a0046</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 소수 찾기 (12921)</title>
					<description>1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.)</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/17/programmers-a0045</link>
					<guid isPermaLink="true">undefined/posts/2021/12/17/programmers-a0045</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 서울에서 김서방 찾기 (12919)</title>
					<description>String형 배열 seoul의 element중 &amp;quot;Kim&amp;quot;의 위치 x를 찾아, &amp;quot;김서방은 x에 있다&amp;quot;는 String을 반환하는 함수, solution을 완성하세요. seoul에 &amp;quot;Kim&amp;quot;은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/17/programmers-a0044</link>
					<guid isPermaLink="true">undefined/posts/2021/12/17/programmers-a0044</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 문자열 다루기 기본 (12918)</title>
					<description>문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 &amp;quot;a234&amp;quot;이면 False를 리턴하고 &amp;quot;1234&amp;quot;라면 True를 리턴하면 됩니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0043</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0043</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 문자열 내림차순으로 배치하기 (12917)</title>
					<description>문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0042</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0042</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 문자열 내 p와 y의 개수 (12916)</title>
					<description>대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 &amp;#39;p&amp;#39;의 개수와 &amp;#39;y&amp;#39;의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. &amp;#39;p&amp;#39;, &amp;#39;y&amp;#39; 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0041</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0041</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 문자열 내 마음대로 정렬하기 (12915)</title>
					<description>문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [&amp;quot;sun&amp;quot;, &amp;quot;bed&amp;quot;, &amp;quot;car&amp;quot;]이고 n이 1이면 각 단어의 인덱스 1의 문자 &amp;quot;u&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;a&amp;quot;로 strings를 정렬합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0040</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0040</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 두 정수 사이의 합 (12912)</title>
					<description>두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0039</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0039</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 나누어 떨어지는 숫자 배열 (12910)</title>
					<description>array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0038</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0038</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 같은 숫자는 싫어 (12906)</title>
					<description>배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0037</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0037</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 상위 n개 레코드 (59405)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0036</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0036</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 다트 게임 (17682)</title>
					<description>카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~ 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다. 갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0035</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0035</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 여러 기준으로 정렬하기 (59404)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0034</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0034</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 가운데 글자 가져오기 (12903)</title>
					<description>단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0033</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0033</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 비밀지도 (17681)</title>
					<description>네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0032</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0032</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 부족한 금액 계산하기 (82612)</title>
					<description>새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/16/programmers-a0031</link>
					<guid isPermaLink="true">undefined/posts/2021/12/16/programmers-a0031</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 동물의 아이디와 이름 (59403)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0030</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0030</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 나머지가 1이 되는 수 찾기 (87389)</title>
					<description>자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0029</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0029</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 최소직사각형 (86491)</title>
					<description>명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0028</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0028</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 어린 동물 찾기 (59037)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0027</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0027</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 2016년 (12901)</title>
					<description>2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a, b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT 입니다. 예를 들어 a = 5, b = 24라면 5월 24일은 화요일이므로 문자열 &amp;quot;TUE&amp;quot;를 반환하세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0026</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0026</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 아픈 동물 찾기 (59036)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0025</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0025</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 두 개 뽑아서 더하기 (68644)</title>
					<description>정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0024</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0024</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 이름이 있는 동물의 아이디 (59407)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0023</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0023</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 두 개 뽑아서 더하기 (12982)</title>
					<description></description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0022</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0022</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 예산 (12982)</title>
					<description>S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0021</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0021</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 3진법 뒤집기 (68935)</title>
					<description>자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0020</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0020</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 약수의 개수와 덧셈 (77884)</title>
					<description>두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0019</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0019</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 실패율 (42889)</title>
					<description>슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0018</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0018</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 폰켓몬 (1845)</title>
					<description>당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0017</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0017</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 이름이 없는 동물의 아이디 (59039)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0016</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0016</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 최댓값 구하기 (59415)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0015</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0015</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / MySQL] Level 1 모든 레코드 조회하기 (59034)</title>
					<description>ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/15/programmers-a0014</link>
					<guid isPermaLink="true">undefined/posts/2021/12/15/programmers-a0014</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>SQL</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 체육복 (42862)</title>
					<description>점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0013</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0013</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 모의고사 (42840)</title>
					<description>수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0012</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0012</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 K번째수 (42748)</title>
					<description>배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0011</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0011</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 완주하지 못한 선수 (42576)</title>
					<description>수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0010</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0010</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 소수 만들기 (12977)</title>
					<description>0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0009</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0009</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 내적 (70128)</title>
					<description>길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0] * b[0] + a[1] * b[1] + ... + a[n-1] * b[n-1] 입니다. (n은 a, b의 길이)</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0008</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0008</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 음양 더하기 (76501)</title>
					<description>어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0007</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0007</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 없는 숫자 더하기 (86051)</title>
					<description>0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0006</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0006</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 크레인 인형뽑기 게임 (64061)</title>
					<description>게임개발자인 &amp;quot;죠르디&amp;quot;는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. &amp;quot;죠르디&amp;quot;는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0005</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0005</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 키패드 누르기 (67256)</title>
					<description>스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 `*`키패드에 오른손 엄지손가락은 `#`키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0004</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0004</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 숫자 문자열과 영단어 (81301)</title>
					<description>네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0003</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0003</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 신규 아이디 추천 (72410)</title>
					<description>카카오에 입사한 신입 개발자 네오는 &amp;quot;카카오계정개발팀&amp;quot;에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. &amp;quot;네오&amp;quot;에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0002</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0002</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[프로그래머스 / JAVA] Level 1 로또의 최고 순위와 최저 순위 (77484)</title>
					<description>로또 6/45 (이하 &amp;#39;로또&amp;#39;로 표기)는 1부터 45까지 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/12/14/programmers-a0001</link>
					<guid isPermaLink="true">undefined/posts/2021/12/14/programmers-a0001</guid>
					<category>프로그래머스</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Level 1</category>
				</item>
			

				<item>
					<title>[NextJS] 블로그 개편기 - 5. marked를 응용하여 코드블럭 디자인 개선하기</title>
					<description>이전 장에서 marked를 활용하여 이 블로그만의 마크다운 변환기를 구현했다. 이 변환기를 활용하여 밋밋한 코드블럭을 좀 더 IDE 같게 개선해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/11/07/nextjs-reorganization-5</link>
					<guid isPermaLink="true">undefined/posts/2021/11/07/nextjs-reorganization-5</guid>
					<category>NextJS</category>
<category>React</category>
<category>Markdown</category>
<category>HTML</category>
<category>SCSS</category>
<category>TypeScript</category>
				</item>
			

				<item>
					<title>[NextJS] 블로그 개편기 - 4. marked를 활용한 마크다운 변환기 구현하기</title>
					<description>정적 블로그는 마크다운을 적극적으로 사용한다. 일반적인 텍스트 기반에 매우 친숙하면서도 HTML과의 호환성 또한 매우 뛰어나기 때문이다. 기존의 블로그는 Remark, Rehype 플러그인을 사용했다. 여러 플러그인이 있어서 그냥저냥 사용하는덴 매우 편했지만, 사용자가 직접 변환과정을 커스터마이징하는 것이 매우 어려웠다. TOC, 코드블럭, 링크에 추가적인 기능, 디자인을 입히기 위해 HTML 태그를 입히고 싶은데, 관련 API가 없다보니 속절없이 주어진 태그만 그대로 사용할 수 밖에 없었다. 관련 정보를 찾아보던 중 marked 플러그인은 내가 원하는 요소를 충족시켜주는 것 같아, 블로그 개편 과정에서 마크다운 플러그인에도 많은 변화를 주었다. 이 장에서는 marked를 통해 마크다운을 HTML로 변환하는 과정에 대해 다룬다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/28/nextjs-reorganization-4</link>
					<guid isPermaLink="true">undefined/posts/2021/10/28/nextjs-reorganization-4</guid>
					<category>NextJS</category>
<category>React</category>
<category>Markdown</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 9. Jersey로 RESTful API 서비스 제공하기</title>
					<description>이 장에서는 Jersey를 활용하여 RESTful API 서비스를 제공하는 방법에 대해 다룬다. 이 프로젝트는 Jersey를 통해 요청을 받아 응답하므로, 컨트롤러를 구성하기 이전에 Jersey에 대해 잠깐 다루고 넘어간다. 통상 JAVA 서버를 구축하는데 Spring 프레임워크를 많이 사용할 것이다. 그럼에도 굳이 Jersey를 선택하는 이유는 일단 내가 Spring을 잘 모른다. 그것도 그거지만, Spring에 비해 규모가 작고 설정이 간단해서 온전히 RESTful 서버를 구축하는데 집중할 수 있다. Spring 설정의 악랄함은 고사하고, 이 프로젝트의 특성 상 복잡한 로직이나 다채로운 기능을 요구하지 않는다. Spring의 방대한 규모를 온전히 쓰지 못 하므로 배보다 배꼽이 더 크다는 뜻이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/25/oauth2-java-server-9</link>
					<guid isPermaLink="true">undefined/posts/2021/10/25/oauth2-java-server-9</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
<category>Jersey</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 12. 마치며</title>
					<description>그 동안 만들어 놓은건 많은데, 정작 정리같은 건 해두지 않았었다. GitHub를 활용하지 않기도 했고, 블로그도 딱히 운영하지 않고 있었으니.. 개인 서버도 샀겠다. 나름의 개발 포트폴리오를 위해 시험삼아 만든 프로젝트다. 개발부터 정리까지 차근차근 작성한 프로젝트는 이게 처음이 아닌가 싶다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/25/oauth2-java-server-12</link>
					<guid isPermaLink="true">undefined/posts/2021/10/25/oauth2-java-server-12</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 11. OAuth 서비스 심사 신청하기</title>
					<description>OAuth 서비스를 등록하고 인증 서버까지 별도로 구축했지만, 이렇게 했다고 해서 그 즉시 사용 가능한 것은 아니다. 이 장에서는 OAuth 서비스 심사를 신청하여 OAuth 서비스를 온전히 사용할 수 있도록 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/25/oauth2-java-server-11</link>
					<guid isPermaLink="true">undefined/posts/2021/10/25/oauth2-java-server-11</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 10. 컨트롤러 구현하기</title>
					<description>Jersey 라이브러리를 통해 요청을 받아 응답을 반환하는 컨트롤러를 구성해보자. Jersey에 대해 자세히 알아보고 싶다면 이전 글을 참고하자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/25/oauth2-java-server-10</link>
					<guid isPermaLink="true">undefined/posts/2021/10/25/oauth2-java-server-10</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
<category>Jersey</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 8. 프로세스 구현하기</title>
					<description>4장부터 7장까지 진행하며 각 플랫폼의 인증 모듈을 구현했다. 이 장에서는 모듈을 사용하는 주체인 프로세스를 구현한다. 프로세스는 HTTP 메소드에 따라 구분하여 관리한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/24/oauth2-java-server-8</link>
					<guid isPermaLink="true">undefined/posts/2021/10/24/oauth2-java-server-8</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 7. GitHub OAuth 서비스 신청 및 모듈 구현하기</title>
					<description>마지막 플랫폼으로, GitHub에 OAuth 서비스를 신청하고 인증 모듈을 구현한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/23/oauth2-java-server-7</link>
					<guid isPermaLink="true">undefined/posts/2021/10/23/oauth2-java-server-7</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
<category>scribeJAVA</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 6. KAKAO OAuth 서비스 신청 및 모듈 구현하기</title>
					<description>세 번째 플랫폼으로, KAKAO에 OAuth 서비스를 신청하고 인증 모듈을 구현한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/23/oauth2-java-server-6</link>
					<guid isPermaLink="true">undefined/posts/2021/10/23/oauth2-java-server-6</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
<category>scribeJAVA</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 5. Google OAuth 서비스 신청 및 모듈 구현하기</title>
					<description>두 번째 플랫폼으로, Google에 OAuth 서비스를 신청하고 인증 모듈을 구현한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/23/oauth2-java-server-5</link>
					<guid isPermaLink="true">undefined/posts/2021/10/23/oauth2-java-server-5</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
<category>scribeJAVA</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 4. NAVER OAuth 서비스 신청 및 모듈 구현하기</title>
					<description>첫 번째 플랫폼으로, NAVER에 OAuth 서비스를 신청하고 인증 모듈을 구현한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/22/oauth2-java-server-4</link>
					<guid isPermaLink="true">undefined/posts/2021/10/22/oauth2-java-server-4</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
<category>scribeJAVA</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 3. scribeJAVA로 OAuth2.0 인증 모듈 구현하기</title>
					<description>OAuth 라이브러리인 scribeJAVA를 통해 인증 모듈을 구현해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/20/oauth2-java-server-3</link>
					<guid isPermaLink="true">undefined/posts/2021/10/20/oauth2-java-server-3</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
<category>Jersey</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 2. 인증서버 설계하기</title>
					<description>OAuth2.0 프로토콜에 대한 사전 지식도 얻었으니, 이를 통해 인증서버를 직접 구축해보자. Frontend, Backend 부분으로 나누어 웹 페이지를 통해 소셜 로그인을 수행하고, 직접 구현한 인증서버에서 이를 처리하는 시스템 일체를 구축하는 것이 궁극적인 목표다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/14/oauth2-java-server-2</link>
					<guid isPermaLink="true">undefined/posts/2021/10/14/oauth2-java-server-2</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
				</item>
			

				<item>
					<title>[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 1. OAuth2.0이란?</title>
					<description>사이트를 돌아다니다보면 로그인이 필요한 사이트를 심심치않게 만나볼 수 있다. 그리고 이런 사이트들은 대부분 &amp;quot;네이버로 로그인하기&amp;quot;와 같은 플랫폼 로그인을 제공한다. 사이트 뿐만 아니라 근래 들어 출시되는 앱 역시 대부분 플랫폼을 통한 인증 서비스를 제공한다. 이를 활용하면 매우 간단한 절차를 통해 회원가입 또는 로그인을 수행할 수 있게 된다. 이러한 서비스는 네이버 뿐만 아니라 Google, 카카오 등 어느정도 규모있는 플랫폼의 대부분은 이러한 &amp;quot;플랫폼으로 로그인하기&amp;quot;와 같은 기능을 제공한다. 이렇게 플랫폼의 정보를 활용하여 타 사이트에서 인증을 수행하는 것을 OAuth 프로토콜이라 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/10/14/oauth2-java-server-1</link>
					<guid isPermaLink="true">undefined/posts/2021/10/14/oauth2-java-server-1</guid>
					<category>JAVA</category>
<category>OAuth2.0</category>
				</item>
			

				<item>
					<title>[NextJS] 블로그 개편기 - 3. SCSS 입히기</title>
					<description>원래 내 블로그는 JS-in-CSS 스타일 방식을 사용하고 있었다. 그 이유는 Material-UI 때문. Material-UI의 공식 예제에서 대놓고 JS-in-CSS 방식으로 설명하기 때문에, React 기초 수준이였던 난 당연히 이렇게 해야하는 줄 알고 있었다. 하지만 개발을 거듭하며, 그 중 몇몇은 복잡한 스타일을 강요받기도 하며 점점 스타일 구문이 비대해지는 컴포넌트가 생겨나기 시작했다. 이에 따라 JS-in-CSS의 단점이 점점 대두되기 시작했다. 대표적인 문제점으로 FOCU(Flash Of Unstyled Content). 스타일 렌더링에 시간이 소요되어, 사용자가 렌더링 이전의 페이지를 보게 되는 현상이다. 내 페이지의 경우 약 1초가 조금 안 되게 FOUC가 발생했는데, 사용자 경험을 극도로 해치는 일이였다. 블로그 개편을 마음먹게 된 가장 큰 이유 역시 이 FOCU 현상 때문이였으며, 관련 정보 조사 결과 CSS-in-CSS의 성능이 월등히 뛰어나다는 점을 확인했다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/24/nextjs-reorganization-3</link>
					<guid isPermaLink="true">undefined/posts/2021/09/24/nextjs-reorganization-3</guid>
					<category>NextJS</category>
<category>React</category>
<category>SCSS</category>
<category>CSS</category>
				</item>
			

				<item>
					<title>[NextJS] 블로그 개편기 - 2. Typescript 입히기</title>
					<description>내가 JavaScript를 접하고 기본 개념 정도에 익숙해졌을 때, 개발 커뮤니티에서 전설처럼 들려오던 이야기를 듣게 되었다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/21/nextjs-reorganization-2</link>
					<guid isPermaLink="true">undefined/posts/2021/09/21/nextjs-reorganization-2</guid>
					<category>NextJS</category>
<category>React</category>
<category>TypeScript</category>
				</item>
			

				<item>
					<title>[NextJS] 블로그 개편기 - 1. Record One</title>
					<description>인터넷으로 알음알음 React를 배워, 뭣도 모르고 호기롭게 블로그를 개발한지가 5월이였다. 그 때만 해도 이 재밌는 걸 가지고 뭐라도 만들어보고 싶다는 강한 열망에 사로잡혔었는데, 그 때 눈에 보였던 게 개발 블로그였다. 그 때 내가 사용하던 블로그는 Jekyll 기반의 GitHub 블로그였는데, 재밌어보여서 시작했다가 며칠 안 가 관둔지가 1년이 넘었었다. 블로그에 흥미가 떨어진 이유 중 하나가 뭐 좀 할라치면 남이 작성한 코드를 일일히 분석한다는 스트레스였다. 개발 블로그를 보자마자 떠오른 내 머릿속의 흐름은 대충 저랬다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/21/nextjs-reorganization-1</link>
					<guid isPermaLink="true">undefined/posts/2021/09/21/nextjs-reorganization-1</guid>
					<category>NextJS</category>
<category>React</category>
				</item>
			

				<item>
					<title>[Ubuntu] Ubuntu 원격 프로토콜 보안 강화하기</title>
					<description>SSH, SFTP와 같은 원격 프로토콜은 서버의 접근성을 향상시켜주지만, 서버의 보안성을 극도로 훼손한다. 공격자가 특정 서버의 IP를 알아냈을 경우, 해당 IP로 SSH 접속 시도를 할 수 있다. 굳이 IP가 아니더라도 해당 IP와 연결된 도메인을 통해서도 얼마든지 가능하다. 특정 도메인의 정보를 DNS서버에 요청하여 IP는 물론 소유자 정보까지 쉽게 취득할 수 있기 때문이다. 따라서 누군가가 내가 접속하려는 서버의 IP 혹은 도메인, SSH 서비스 포트, 계정정보를 알고 있다면 얼마든지 SSH 접속 시도를 하거나 서버에 피해를 줄 수 있다. 외부에 도메인을 공개하는 순간 국내는 물론 외국에서 여러 접속 시도가 들어오기도 한다. 특히 중국에서의 공격이 많이 들어오며, 인터넷에서 이와 관련된 경험담이나 피해사례를 쉽게 찾아볼 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/15/increase-ubuntu-remote-security</link>
					<guid isPermaLink="true">undefined/posts/2021/09/15/increase-ubuntu-remote-security</guid>
					<category>Ubuntu</category>
<category>SSH</category>
<category>SFTP</category>
				</item>
			

				<item>
					<title>[라즈베리파이 4] MariaDB 구축하기</title>
					<description>드디어 라즈베리파이 개발환경 구축의 마지막 장이다. DBMS는 다양한 데이터를 저장하는 저장소인 DB(Database)를 관리하는 시스템이다. 필요한 데이터를 DB에 저장하고, 이를 적재적소에 꺼내어 데이터를 다룰 수 있도록 해준다. 웹 서버와 DBMS를 연동하면 사용자의 계정 정보, 설정 등을 저장하고 활용할 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/14/ubuntu-in-mariadb</link>
					<guid isPermaLink="true">undefined/posts/2021/09/14/ubuntu-in-mariadb</guid>
					<category>라즈베리파이</category>
<category>Ubuntu</category>
<category>MariaDB</category>
<category>RDBMS</category>
				</item>
			

				<item>
					<title>[라즈베리파이 4] 원격 환경 구축하기 (SSH, RDP)</title>
					<description>이제 얼추 라즈베리파이에 그럴듯한 웹서버 환경이 구축됐다. 하지만 라즈베리파이를 다루기 위해서 기기에 직접 모니터랑 키보드, 마우스를 연결해서 쓰긴 좀 번거롭다. 이 주제에서의 라즈베리파이는 어디까지나 서브로 운영되는 웹서버이므로, 메인 컴퓨터가 될 수 없다. 즉, 개발같은 대부분의 작업은 메인 컴퓨터에서 진행하고, 배포만 서버가 담당하는 방식이다. 이렇게 디바이스가 서로 나뉠 경우, 두 디바이스의 접근이 서로 원활해야한다. 한 마디로, 원격 환경이 필요하다. 이 장에서는 라즈베리파이에 원격 환경을 구축한다. SSH, RDP 통신을 구축함으로써 SSH 혹은 윈도우 PC 어디에서나 라즈베리파이에 접근할 수 있도록 구성한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/08/raspberry-remote</link>
					<guid isPermaLink="true">undefined/posts/2021/09/08/raspberry-remote</guid>
					<category>라즈베리파이</category>
<category>Ubuntu</category>
<category>SSH</category>
<category>RDP</category>
				</item>
			

				<item>
					<title>[라즈베리파이 4] Let&amp;#39;s Ecrypt로 Ubuntu 서버에 HTTPS 통신 제공하기</title>
					<description>이전 장에서 Google Domains를 통해 dev 도메인을 발급받았다. 이 블로그의 주소는 실제로 구입한 https://blog.itcode.dev 도메인이 적용되어있다. dev 도메인은 강화된 보안정책이 적용되어있다. 해당 도메인으로의 모든 HTTP 통신은 반드시 HTTPS 보안 통신으로만 제공된다. 네트워크 계층에서 https 프로토콜로 라우팅하므로 좋든 싫든 HTTPS 서비스를 제공해야만 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/06/raspberry-ssl-domain</link>
					<guid isPermaLink="true">undefined/posts/2021/09/06/raspberry-ssl-domain</guid>
					<category>라즈베리파이</category>
<category>Ubuntu</category>
<category>Tomcat(톰캣)</category>
<category>SSL</category>
				</item>
			

				<item>
					<title>[라즈베리파이 4] 라즈베리파이에 도메인 입히기</title>
					<description>지금까지 과정을 거치면서 라즈베리파이에 OS를 설치하고, Tomcat을 구동하여 웹 서버로 동작할 수 있도록 환경을 구축했다. 이제 우리는 라즈베리파이의 IP로 접속하여 웹 사이트를 호스팅할 수 있다. 하지만 정상적인 페이지라면 IP를 입력하여 접속하지 않는다. Domain을 발급받아 IP에 연동하고, 이를 URL 주소로 사용할 것이다. 이 장에서는 Domain을 직접 구입하고 라즈베리파이 서버에 이를 연동한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/04/raspberry-domain</link>
					<guid isPermaLink="true">undefined/posts/2021/09/04/raspberry-domain</guid>
					<category>라즈베리파이</category>
<category>Ubuntu</category>
<category>도메인</category>
				</item>
			

				<item>
					<title>[Ubuntu] ufw로 방화벽 포트 설정하기</title>
					<description>모든 건물에는 입구가 존재한다. 일반적인 상황에서, 누구든지 해당 건물에 드나들기 위해선 좋든 싫든 입구를 통과해야한다. 이 입구라는 것이 또 마냥 열려있는 건 아니라서, 필요 시엔 개방되어있다가도 특정 시간에는 폐쇄되기도 한다. 심지어 어떤 곳은 까다롭기 그지없어서, 사람을 가려받기도 한다. 이를테면 보안구역이라던가, 금요일 밤의 클럽이라던가. PC통신도 이와 원리가 별반 다를 바 없다. 보기엔 그냥 막 통신하는 것 같아도, 저마다 할당받은 입구를 통해 PC에 드나든다. PC가 건물이라고 한다면, PC의 입구는 포트(PORT)라 할 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/04/firewall-with-ufw</link>
					<guid isPermaLink="true">undefined/posts/2021/09/04/firewall-with-ufw</guid>
					<category>Ubuntu</category>
<category>방화벽</category>
				</item>
			

				<item>
					<title>[라즈베리파이 4] Ubuntu에 톰캣 설치하기</title>
					<description>OS가 준비되었으므로 본격적으로 웹 서버 환경을 구축해보자. 대표적인 WAS인 Tomcat을 활용하여 페이지를 호스팅한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/09/02/ubuntu-in-tomcat</link>
					<guid isPermaLink="true">undefined/posts/2021/09/02/ubuntu-in-tomcat</guid>
					<category>라즈베리파이</category>
<category>Ubuntu</category>
<category>도메인</category>
				</item>
			

				<item>
					<title>[라즈베리파이 4] 라즈베리파이에 Unbuntu 설치하기</title>
					<description>목요일을 기점으로 모든 준비물의 배송이 완료됐다. 클린 상태의 라즈베리파이는 OS가 별도로 깔려있지 않은 FreeDOS 상태이므로, 직접 OS를 설치해야한다. 컴퓨터도 주기적으로 포맷하고, 가상머신도 몇 개 돌려본 나로썬 크게 문제될 건 없지만, 이건 내가 지금까지 다루던 컴퓨터와는 좀 다르다는점이 흠. 한 번도 다뤄보지 않은 장비인데다, 일반적인 데스크탑에 비해 여러 차이점과 제약사항이 있어 그리 순탄하진 않았다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/31/ubuntu-in-raspberry</link>
					<guid isPermaLink="true">undefined/posts/2021/08/31/ubuntu-in-raspberry</guid>
					<category>라즈베리파이</category>
<category>Ubuntu</category>
				</item>
			

				<item>
					<title>[라즈베리파이 4] Hello Raspberry!</title>
					<description>개발자의 적지않은 수가 클라우드든, 디바이스든 자신만의 서버를 구축하여 다양하게 활용하고 있다. 개발을 하다보면 필연적으로 24시간 언제나 가동되는 서버 비스무리한 것이 필요할 때가 있다. 일례로 GitHub Pages의 경우 정적 페이지만 호스팅해줄 뿐, 백엔드나 DB는 사용할 수가 없어 동적 페이지 호스팅은 불가능하다. 그러나 개인 API 혹은 DB 서버가 존재한다면, 해당 서버와의 통신을 통해 더욱 동적 페이지 호스팅이 가능하다. 웹에서 백엔드가 갖는 역할을 생각해본다면, 개인이 활용 가능한 서버가 있고 없고의 차이는 천지차이가 난다. 나 역시도 개발하는 입장에서 제약없이 사용할 수 있는 서버의 소요가 이전부터 있어왔고, 개인 서버를 구축하기 위한 방안을 모색했다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/29/hello-raspberry</link>
					<guid isPermaLink="true">undefined/posts/2021/08/29/hello-raspberry</guid>
					<category>라즈베리파이</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1021번 회전하는 큐</title>
					<description>지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그 원소를 주어진 순서대로 뽑아내는데 드는 2번, 3번 연산의 최솟값을 출력하는 프로그램을 작성하시오.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/26/a1021</link>
					<guid isPermaLink="true">undefined/posts/2021/08/26/a1021</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>덱</category>
<category>SILVER</category>
<category>SILVER IV</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1020번 디지털 카운터</title>
					<description>지민이는 매 초마다 수가 증가하는 N자리의 디지털 카운터를 가지고 있다. 카운터에 나오는 수는 순환된다. 10^N-1에 이르면 다시 0부터 시작한다. 각 숫자는 다음과 같은 7개의 선분으로 이루어져 있다. 모든 인접한 두 개의 선분은 +로 이어져 있다. 예를 들어, 1은 두 개의 선분, 9는 다섯 개의 선분으로 이루어져 있다. 현재 카운터에 나와있는 숫자가 주어진다. 그럴 때, 현재 나와있는 숫자의 선분의 개수와 같은 숫자는 최소 몇 초가 지나야 나오는지 구하는 프로그램을 작성하시오. 1, 2, ..., 9, 그리고 0은 모두 2, 5, 5, 4, 5, 6, 3, 7, 5, 6개의 선분으로 이루어져 있고, 모든 수는 N자리를 채워야 하므로, N자리보다 작을 때는 앞에 0이 있을 수도 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/24/a1020</link>
					<guid isPermaLink="true">undefined/posts/2021/08/24/a1020</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Dynamic Programming(동적 프로그래밍)</category>
<category>PLATINUM</category>
<category>PLATINUM II</category>
				</item>
			

				<item>
					<title>블로그 텍스트 색상 예시</title>
					<description>색상 테스트</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/20/color-test</link>
					<guid isPermaLink="true">undefined/posts/2021/08/20/color-test</guid>
					<category>개발 블로그</category>
				</item>
			

				<item>
					<title>[SSL] Tomcat에 SSL 적용하기</title>
					<description>SSL 인증서를 받았으니, 이를 적용해보자. 보통 Nginx 같은 웹서버나, Tomcat과 같은 WAS에 적용한다. 이 장에서는 Tomcat 9.0.50을 기준으로 설명한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/20/apply-ssl</link>
					<guid isPermaLink="true">undefined/posts/2021/08/20/apply-ssl</guid>
					<category>CS</category>
<category>객체지향</category>
<category>SSL</category>
<category>Tomcat(톰캣)</category>
				</item>
			

				<item>
					<title>[SSL] Windows 10에서 Let&amp;#39;s Encrypt로 SSL 인증서 무료 발급받기</title>
					<description>도메인도 있겠다. 이제 이 도메인을 가지고 SSL 인증서를 발급받아보자. 물론 SSL 인증서 또한 발급받는데 비용이 든다. 대부분의 운영 중인 도메인 업체는 SSL 발급도 병행한다. 테스트 목적이라면 도메인과 마찬가지로 SSL 발급도 부담스러울 것이다. SSL 역시 무료로 발급받을 수 있는 방법이 있으며, 도메인보다 그 방법이 훨씬 많다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/19/lets-encrypt</link>
					<guid isPermaLink="true">undefined/posts/2021/08/19/lets-encrypt</guid>
					<category>CS</category>
<category>객체지향</category>
<category>SSL</category>
				</item>
			

				<item>
					<title>[SSL] Freenom을 활용한 무료 도메인 발급하기</title>
					<description>이전 글들에서 SSL이 뭔지, 어떤식으로 동작하는지를 다뤘다. 사이트에 SSL을 적용하기 위해선 SSL 인증서를 발급받아야한다. SSL 인증서를 발급받기 위해선 인증받기 위한 도메인이 필요하다. 국내에서 서비스 중인 도메인 업체에서 쉽게 발급받을 수 있다. 위 업체는 도메인 외에도 호스팅 등 다양한 서비스를 제공한다. 이 외에도 여러 업체들이 있으며, 국내 뿐만 아니라 해외에서 서비스 중인 업체들도 있다. 업체마다 가격 및 정책이 다르니 발품팔다보면 좋은 금액으로 구매할 수도 있다. TLD(Top Level Domain)에 따라 가격이 달라지며, 저렴한 건 연간 몇 천원에서부터 비싸면 수십만원대에 이르기도 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/18/freenom-domain</link>
					<guid isPermaLink="true">undefined/posts/2021/08/18/freenom-domain</guid>
					<category>CS</category>
<category>객체지향</category>
<category>SSL</category>
<category>도메인</category>
				</item>
			

				<item>
					<title>[SSL] SSL이란?</title>
					<description>웹을 배포해본 적이 있다면 SSL에 대해 들어본 적이 있을 것이다. SSL이 적용된 URL의 프로토콜은 https://로 시작하며, http://와 달리 보안(Secure)을 의미하는 s가 붙는다. 지금 이 사이트의 주소도 https://blog.itcode.dev로 SSL이 적용된 걸 확인할 수 있다. NAVER나 Google도 마찬가지. 이 처럼 SSL은 굳이 웹 개발자에게만 친숙한 개념이 아니다. 누구나 인터넷을 사용했다면, 좋든 싫든 모두가 SSL을 접했다고 봐도 무방하다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/18/about-ssl</link>
					<guid isPermaLink="true">undefined/posts/2021/08/18/about-ssl</guid>
					<category>CS</category>
<category>객체지향</category>
<category>SSL</category>
<category>TLS</category>
				</item>
			

				<item>
					<title>[SSL] SSL 인증서</title>
					<description>이전 장을 읽었다면 인증서에 대한 언급이 있음을 확인할 수 있다. SSL이 적용되면 서버와 클라이언트가 어떤 식으로 통신하고 암/복호화하여 데이터를 다루는지 설명했지만, 이는 SSL의 원리일 뿐이다. 그렇다면, 해당 도메인에 SSL이 적용되어 https를 사용할 수 있는 이유는 무엇일까?</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/18/about-ssl-license</link>
					<guid isPermaLink="true">undefined/posts/2021/08/18/about-ssl-license</guid>
					<category>CS</category>
<category>객체지향</category>
<category>SSL</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향 5원칙(SOLID) - 의존성 역전 원칙 DIP (Dependency Inversion Principle)</title>
					<description>의존성 역전 원칙이란 객체는 저수준 모듈보다 고수준 모듈에 의존해야한다는 원칙이다. 말이 좀 어렵다. 고수준 모듈은 뭐고, 저수준 모듈은 또 뭐란 말인가? 고/저수준 모델의 정의는 위와 같다. 위 정의를 의존성 역전 원칙에 대입하면, 객체는 객체보다 인터페이스에 의존해야한다로 치환할 수 있다. 즉, 가급적 객체의 상속은 인터페이스를 통해 이루어져야 한다는 의미로 해석할 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/17/dependency-inversion-principle</link>
					<guid isPermaLink="true">undefined/posts/2021/08/17/dependency-inversion-principle</guid>
					<category>CS</category>
<category>객체지향</category>
<category>객체지향 5원칙</category>
<category>의존성 역전 원칙</category>
<category>DIP</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향 5원칙(SOLID) - 인터페이스 분리 원칙 ISP (Interface Segregation Principle)</title>
					<description>인터페이스 분리 원칙이란 객체는 자신이 호출하지 않는 메소드에 의존하지 않아야한다는 원칙이다. 구현할 객체에게 무의미한 메소드의 구현을 방지하기 위해 반드시 필요한 메소드만을 상속/구현하도록 권고한다. 만약 상속할 객체의 규모가 너무 크다면, 해당 객체의 메소드를 작은 인터페이스로 나누는 것이 좋다. 위 그림은 규모가 너무 큰 객체를 상속했을 때 발생하는 문제와, 이를 인터페이스로 분리하여 해결하는 방법을 도식한 것이다. 왼쪽과 오른쪽 객체가 가운데 객체를 각각 상속할 경우, 왼쪽 객체는 필요한 메소드가 모두 구현되기 때문에 아무런 문제가 없다. 그러나 오른쪽 객체의 경우, Method1을 제외한 나머지 메소드는 필요가 없다. 하지만 이를 상속했기 때문에, 좋든 싫든 해당 메소드를 가지고 있거나, 최악의 경우 필요 없는 메소드를 구현까지 해야만한다. 하지만 상속 대상인 객체의 메소드를 각 동작별로 구분해 인터페이스를 만들어보자. 각 객체가 필요한 인터페이스만을 상속하여 구현하면 되므로 각자가 필요한 메소드만을 가지게 된다. 이 것이 인터페이스 분리 원칙이 지향하는 바다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/16/interface-segregation-principle</link>
					<guid isPermaLink="true">undefined/posts/2021/08/16/interface-segregation-principle</guid>
					<category>CS</category>
<category>객체지향</category>
<category>객체지향 5원칙</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향 5원칙(SOLID) - 리스코프 치환 원칙 LSP (Liskov Subsitution Principle)</title>
					<description>리스코프 치환 원칙은 부모 객체와 이를 상속한 자식 객체가 있을 때 부모 객체를 호출하는 동작에서 자식 객체가 부모 객체를 완전히 대체할 수 있다는 원칙이다. 객체지향 언어에선 객체의 상속이 일어난다. 이 과정에서 부모/자식 관계가 정의된다. 자식 객체는 부모 객체의 특성을 가지며, 이를 토대로 확장할 수 있다. 하지만 이 과정에서 무리하거나 객체의 의의와 어긋나는 확장으로 인해 잘못된 방향으로 상속되는 경우가 생긴다. 리스코프 치환 원칙은 올바른 상속을 위해 자식 객체의 확장이 부모 객체의 방향을 온전히 따르도록 권고하는 원칙이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/15/liskov-subsitution-principle</link>
					<guid isPermaLink="true">undefined/posts/2021/08/15/liskov-subsitution-principle</guid>
					<category>CS</category>
<category>객체지향</category>
<category>객체지향 5원칙</category>
<category>리스코프 치환 원칙</category>
<category>LSP</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향 5원칙(SOLID) - 개방-폐쇄 원칙 OCP (Open-Closed Principle)</title>
					<description>개방 폐쇄 원칙이란 객체를 다룸에 있어서 객체의 확장은 개방적으로, 객체의 수정은 폐쇄적으로 대하는 원칙이다. 한 마디로, 보여줄 건 보여주고, 숨길 건 숨긴다는 의미. 좀 더 쉽게 말하자면, 기능이 변하거나 확장 가능하지만, 해당 기능의 코드는 수정하면 안 된다는 뜻이다. 그런데 이 원칙, 말이 좀 이상하다. 기능이 변하는 거 OK. 확장되는 거 OK. 근데 코드를 수정하면 안 된다?? 다소 이해가 되지 않는 요구사항이다. 만약, 객체 하나를 수정한다고 가정하자. 이 때 단순히 해당 객체만 수정하는 것 뿐만 아니라 해당 객체에 의존하는 다른 객체들의 코드까지 줄줄이 고쳐야한다면 좋은 설계로 보기 힘들다. 대표적으로 라이브러리를 생각해보자. 라이브러리를 사용하는 객체의 코드가 변경된다고 해서 라이브러리 코드까지 변경하지 않는다. 이처럼 개방-폐쇄 원칙은 각 객체의 모듈화와 정보 은닉의 올바른 구현을 추구하며, 이를 통해 객체 간의 의존성을 최소화하여 코드 변경에 따른 영향력을 낮추기 위한 원칙이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/14/open-closed-principle</link>
					<guid isPermaLink="true">undefined/posts/2021/08/14/open-closed-principle</guid>
					<category>CS</category>
<category>객체지향</category>
<category>객체지향 5원칙</category>
<category>개방-폐쇄 원칙</category>
<category>OCP</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향 5원칙(SOLID) - 단일 책임 원칙 SRP(Single Responsibility Principle)</title>
					<description>올바른 객체지향 설계를 위해 수립한 원칙이 있으며, 이 다섯 가지 원칙을 통틀어 객체지향 5원칙(SOLID)이라 명명한다. 필수로 적용하지는 않지만, 적어도 이 규칙을 준수하면 준수할 수록 올바르게 설계된 객체지향이라 할 수 있다. 이 다섯가지 원칙은 아래와 같다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/13/single-responsibility-principle</link>
					<guid isPermaLink="true">undefined/posts/2021/08/13/single-responsibility-principle</guid>
					<category>CS</category>
<category>객체지향</category>
<category>객체지향 5원칙</category>
<category>단일 책임 원칙</category>
<category>SRP</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향의 특징 - 다형성(Polymorphism)</title>
					<description>객체지향 언어는 동일한 이름을 가진 메소드를 허용하지 않는다. 예를 들어, &amp;quot;먹는다&amp;quot;는 동작이 구현된 메소드가 있다고 가정하자. 먹는다는 동일한 동작이 구태여 두 개나 구현될 필요는 없다. 이러한 관점에서 본다면 메소드의 고유 아이덴티티라고도 불릴 수 있는 메소드명의 유니크화는 어쩌면 당연하다. 하지만 조금 생각해보면 좀 이상하다. JAVA는 타입에 죽고 타입에 산다. JavaScript와 달리 파라미터에 아무 타입이나 넣을 수 없기 때문에, 정해진 타입 이외의 무언가를 넣으면 컴파일 단계에서 가차없이 컷한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/12/polymorphism</link>
					<guid isPermaLink="true">undefined/posts/2021/08/12/polymorphism</guid>
					<category>CS</category>
<category>객체지향</category>
<category>다형성</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향의 특징 - 상속(Inheritance)</title>
					<description>나른한 주말, 느긋하게 영화를 보고 있는 A씨. 영화에선 천대받으며 살던 주인공 소녀가 어느날 누군가로부터 거액의 유산을 받았다. 알고보니 그는 어렸을 적 실종된 재벌집 가문의 손녀딸이였던 것! 이후 그녀는 받은 유산을 통해 고마웠던 주변인에게 은혜를 갚고, 무시하던 이들에게 통쾌한 복수를 돌려준다는 내용이였다. 나름 통쾌했던 A씨지만, 어차피 현실에선 일어날 수 없는 일이라는 걸 이내 떠올린 A씨. 우리는 이걸 상속이라 부른다. 이처럼 상속이라는 개념은 영화나 드라마와 같은 창작물에서나 볼 수 있었다. 사전에서나 찾아볼 수 있었던 허구의 개념인 셈이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/11/inheritance</link>
					<guid isPermaLink="true">undefined/posts/2021/08/11/inheritance</guid>
					<category>CS</category>
<category>객체지향</category>
<category>상속</category>
<category>추상</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향의 특징 - 캡슐화(Encapsulation)와 정보 은닉</title>
					<description>객체. 즉, 클래스의 내부 변수와 메소드를 하나로 패키징하는 특징이다. 객체에 선언된 변수나 메소드가 구분없이 중구난방으로 접근할 수 있다면 정상적인 객체로 보기 어렵다. 캡슐화와 비슷한 개념으로 정보 은닉이라는 개념이 있다. 정보 은닉은 객체의 내부 구현을 숨김으로써 객체가 반드시 정해진 메소드를 통해 상호작용하도록 유도한다. 이 두 개념은 객체의 응집도와 독립성을 높임으로써 객체의 모듈화를 지향한다. 객체의 모듈화가 잘 이루어져있을 경우 모듈 단위의 재사용이 매우 용이하다. 여러 로직에서 중복되는 코드를 모듈로 대체하면 모듈 내부의 소스만 수정하는 것으로 수정사항을 반영할 수 있다. 이는 곧 간편한 유지보수와 직결된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/08/encapulation</link>
					<guid isPermaLink="true">undefined/posts/2021/08/08/encapulation</guid>
					<category>CS</category>
<category>객체지향</category>
<category>캡슐화</category>
<category>정보 은닉</category>
<category>접근제어자</category>
				</item>
			

				<item>
					<title>[OOP] 객체지향 프로그래밍(Object Oriented Programming)이란?</title>
					<description>IT 업계에 종사하게 된다면 십중팔구 JAVA, C++, C# 중 하나는 다루게 된다. 국내 IT의 최다 공급이자 수요인 JAVA를 위시한 위 세 가지 언어의 공통점은 전부 객체지향언어라는 점이다. 물론 지금에 이르러서는 함수형이라는 개념도 나왔지만, C의 단순한 절차지향 이래로 나온 객체지향은 프로그래밍의 새로운 관점을 제시했고, 크고 작은 언어들이 알게 모르게 영향을 받았다. 이렇게 영향력이 큰 개념임에도 불구하고 막상 이와 관련된 질문을 받으면 명확하게 답을 내지 못 하기도 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/07/what-is-oop</link>
					<guid isPermaLink="true">undefined/posts/2021/08/07/what-is-oop</guid>
					<category>CS</category>
<category>객체지향</category>
				</item>
			

				<item>
					<title>재귀를 사용한 재귀적 반복</title>
					<description>컴퓨터 언어에서의 재귀란 자기 자신을 호출함을 의미한다. 알고리즘에서의 재귀는 매우 중요한 개념 중 하나로써, 그 특성 상 복잡한 연산 및 연산에 걸리는 소요 시간을 효과적으로 개선할 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/08/04/about-algorithm-chapter09</link>
					<guid isPermaLink="true">undefined/posts/2021/08/04/about-algorithm-chapter09</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>재귀</category>
				</item>
			

				<item>
					<title>스택과 큐로 간결한 코드 생성</title>
					<description>이 장에서는 스택과 큐에 대해 알아본다. 사실 이 두 자료구조는 배열에 특정한 제약을 건 자료구조다. 제약이라는 개념 때문에 특수한 상황에서만 쓰이지 않을까 싶지만, 오히려 이러한 제약이 주는 규칙으로 인해 굉장히 많은 곳에서 쓰인다. 스택과 큐의 가장 큰 특징은 데이터 처리에 순서가 있다는 점이다. 스택과 큐는 그 제약에 따라 반드시 정해진 순서로 데이터를 처리한다. 이러한 특징 덕에 순서가 필요한 작업들에 유용하게 사용된다. 대표적으로 스케쥴러, 대기 등이 있으며 OS의 인터럽트(Interrupt) 작업에서 스택이 쓰인다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/31/about-algorithm-chapter08</link>
					<guid isPermaLink="true">undefined/posts/2021/07/31/about-algorithm-chapter08</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>큐</category>
<category>스택</category>
				</item>
			

				<item>
					<title>해시 테이블로 매우 빠른 룩업</title>
					<description>현재까지 다룬 데이터 형식 중 다수의 데이터를 다루는 데 가장 효과적인 형식은 배열일 것이다. 하지만 배열의 경우, 요소별로 단 하나의 값이 들어가는 데 특화되어 있다. 만약 하나의 요소에 두 값을 넣고자 한다면 어떻게 될까? [[A, 1], [B, 2], [C, 3]]과 같은 형태로 나타낼 것이다. 배열의 단점 중 하나는, 값을 빠르게 찾기 위해선 반드시 정렬을 수행해야 한다는 것이다. 하지만 저렇게 배열 안에 또다른 배열이 포함되는 것처럼 배열의 depth가 심해질 경우 구조가 복잡해서 배열을 다루기 점점 난해해진다. 더군다나 배열의 경우 원하는 요소를 탐색하기 위해선 적어도 O(logN) 이상의 시간복잡도를 필요로 한다. 만약, 배열과 같이 특정 데이터의 모음에서 내가 원하는 데이터를 O(1)과 같이 상수 시간으로 탐색할 수 있는 데이터가 있다면 어떨까? 왠지 이 장에서 그 해답을 찾을 수 있을 것 같다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/29/about-algorithm-chapter07</link>
					<guid isPermaLink="true">undefined/posts/2021/07/29/about-algorithm-chapter07</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>해시 테이블</category>
				</item>
			

				<item>
					<title>블로그 개편기</title>
					<description>이 블로그를 처음 개발한지가 한 5월 쯤으로 기억한다. 4월부터 접한 리액트에 흥미가 생겨 두서없이 만든게 시작이였으니, 결과물은 내 생각보다 훨씬 조잡하지 않았나 생각했다. 다행스럽게(?)도 블로그 또한 그런 내 믿음을 져버리기 싫었는지, 동작 과정에서 크고 작은 문제들을 보여주곤 했다. 동작 자체에 영향을 미칠 정도로 크리티컬한 문제는 아니였다만, 내 신경엔 영향을 미칠 정도로 거슬리는 부분이 몇 가지 있었다. 아무도 관심 없지만 이왕 만든거 이번 포스팅을 통해 블로그의 개선점을 정리해놓고자 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/26/brand-new</link>
					<guid isPermaLink="true">undefined/posts/2021/07/26/brand-new</guid>
					<category>React(리액트)</category>
<category>Next.js</category>
<category>개발 블로그</category>
<category>TypeScript</category>
<category>SCSS</category>
				</item>
			

				<item>
					<title>긍정적인 시나리오 최적화</title>
					<description>지금까지는 항상 알고리즘을 비관적인 관점으로 바라봤다. 이 경우의 장점은 명확하다. 어떠한 경우에도 최악을 대비하면 문제가 없다. 하지만 모든 데이터가 항상 최악의 경우는 아닐 뿐더러, 대부분의 케이스는 평범한 영역에 위치할 것이다. 이 장에서는 모든 시나리오를 고려하여 상황에 따른 적절한 알고리즘을 판단한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/24/about-algorithm-chapter06</link>
					<guid isPermaLink="true">undefined/posts/2021/07/24/about-algorithm-chapter06</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>삽입 정렬</category>
				</item>
			

				<item>
					<title>빅 오를 사용하거나 사용하지 않는 코드 최적화</title>
					<description>지금까지 알고리즘의 퍼포먼스를 비교하면서 빅 오 표기법을 통해 수치화했다. 하지만 빅 오 표기법도 알고리즘의 퍼포먼스를 측정함에 있어서 완벽함을 보여주진 않는다. 이전 장에서 N(O^2)이나 N(N^2 - N) 모두 빅 오 표기법에선 N(O^2)로 간주한다고 설명했다. 이러한 특성으로 인해, 실제로는 명백한 차이를 보이는 알고리즘임에도 불구하고 빅 오 표기법으론 성능이 거의 동일하게 측정되기도 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/23/about-algorithm-chapter05</link>
					<guid isPermaLink="true">undefined/posts/2021/07/23/about-algorithm-chapter05</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>선택 정렬</category>
				</item>
			

				<item>
					<title>빅 오로 코드 속도 올리기</title>
					<description>이전 장에서 빅 오 코드 표기법을 배웠으니, 이를 통해 시간 복잡도를 비교함으로써 알고리즘을 서로 비교할 수 있음을 확인했다. 이 장에서는 버블 정렬 알고리즘을 설계하고, 이를 빅 오 표기법을 통해 어떻게 개선할 수 있는지 확인해본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/16/about-algorithm-chapter04</link>
					<guid isPermaLink="true">undefined/posts/2021/07/16/about-algorithm-chapter04</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>버블 정렬</category>
				</item>
			

				<item>
					<title>빅 오 표기법</title>
					<description>하나의 문제가 있어도, 이를 해결하는 수 많은 알고리즘이 존재할 수 있다. 어떠한 방법으로든 문제를 해결할 수 있다면 그 자체로 알고리즘이라 불러도 손색이 없지만, 알고리즘이라고 해서 다 같진 않다. 바로 문제를 해결하는 효율성의 차이 때문. 결과적으로 문제를 해결한다고 해도 그냥 무식하게 해결하는 알고리즘이 있는가 하면, 정말 효율적으로 문제를 해결하는 알고리즘도 있다. 그리고 우리는 통상 후자를 알고리즘이라는 명칭에 더 어울린다고 생각할 것이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/14/about-algorithm-chapter03</link>
					<guid isPermaLink="true">undefined/posts/2021/07/14/about-algorithm-chapter03</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>빅 오 표기법</category>
				</item>
			

				<item>
					<title>알고리즘이 중요한 까닭</title>
					<description>IT영역에서의 알고리즘이란, 어떤 문제를 해결하는 방법을 형상화한 코드를 의미한다. 알고리즘을 잘 설계한다면, 단순한 로직으로 접근할 때보다 훨씬 빠르게 문제를 처리할 수 있다. 개발에는 정말 다양한 문제와 그보다 더욱 다양한 해결방법이 존재하기 때문에, 복잡한 문제일수록 정교한 알고리즘의 설계가 요구된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/10/about-algorithm-chapter02</link>
					<guid isPermaLink="true">undefined/posts/2021/07/10/about-algorithm-chapter02</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>배열</category>
<category>정렬</category>
<category>이진 검색</category>
				</item>
			

				<item>
					<title>자료구조가 중요한 까닭</title>
					<description>혼자 공부하는건 다 좋은데 효율이 떨어진다. 컴퓨터 앞에 앉아있는 시간은 거의 대부분이라 할 수 있지만, 순수하게 공부하는 시간이 얼마나 되냐고 물어보면 눈치보기 바쁘다. 마침 블로그도 새로 개발해서 쓰고 있고, 공부도 할 겸 적절한 스터디에 하나 참가했다. 노트북 팔아버린 뒤로 스터디에 가입하고 싶어도 할 수가 없었던 차에, 노트북 없이도 할 수 있다는 말에 바로 들어갔다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/07/10/about-algorithm-chapter01</link>
					<guid isPermaLink="true">undefined/posts/2021/07/10/about-algorithm-chapter01</guid>
					<category>자료구조</category>
<category>알고리즘</category>
<category>누구나 자료 구조와 알고리즘</category>
<category>배열</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1019번 책 페이지</title>
					<description>지민이는 전체 페이지의 수가 N인 책이 하나 있다. 첫 페이지는 1페이지이고, 마지막 페이지는 N페이지이다. 각 숫자가 전체 페이지 번호에서 모두 몇 번 나오는지 구해보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/28/a1019</link>
					<guid isPermaLink="true">undefined/posts/2021/06/28/a1019</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>GOLD</category>
<category>GOLD I</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1018번 체스판 다시 칠하기</title>
					<description>지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M*N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8*8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 이 정의를 따르면 체스판을 색칠하는 경우는 두 가지뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다. 보드가 체스판처럼 칠해져 있다는 보장이 없어서, 지민이는 8 X 8 크기의 체스판으로 잘라낸 후에 몇 개의 정사각형을 다시 칠해야겠다고 생각했다. 당연히 8*8 크기는 아무데서나 골라도 된다. 지민이가 다시 칠해야 하는 정사각형의 최소 개수를 구하는 프로그램을 작성하시오.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/26/a1018</link>
					<guid isPermaLink="true">undefined/posts/2021/06/26/a1018</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>SILVER</category>
<category>SILVER V</category>
<category>Brute Force(무차별 대입 공격)</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1017번 소수 쌍</title>
					<description>지민이는 수의 리스트가 있을 때, 이를 짝지어 각 쌍의 합이 소수가 되게 하려고 한다. 예를 들어, {1, 4, 7, 10, 11, 12}가 있다고 하자. 지민이는 다음과 같이 그룹지을 수 있다. 1 + 4 = $, 7 + 10 = 17$, $11 + 12 = 23 또는 1 + 10 = 11, 4 + 7 = 11, 11 + 12 = 23 수의 리스트가 주어졌을 때, 지민이가 모든 수를 다 짝지었을 때, 첫 번째 수와 어떤 수를 짝지었는지 오름차순으로 출력하는 프로그램을 작성하시오. 위의 예제에서 1 + 12 = 13으로 소수이다. 그러나, 남은 4개의 수를 합이 소수가 되게 짝지을 수 있는 방법이 없다. 따라서 예제의 답은 4, 10이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/26/a1017</link>
					<guid isPermaLink="true">undefined/posts/2021/06/26/a1017</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>PLATINUM</category>
<category>PLATINUM III</category>
<category>에라토스 테네스의 체</category>
<category>이분 매칭</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1016번 제곱 ㄴㄴ수</title>
					<description>어떤 수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min과 max를 포함한 사이에 제곱ㄴㄴ수가 몇 개 있는지 출력한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/23/a1016</link>
					<guid isPermaLink="true">undefined/posts/2021/06/23/a1016</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>GOLD</category>
<category>GOLD I</category>
<category>에라토스 테네스의 체</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1015번 수열 정렬</title>
					<description>P[0], P[1], ..., P[N - 1]은 0부터 N - 1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주어졌을 때, 수열 P를 적용한 결과가 비내림차순이 되는 수열을 찾는 프로그램을 작성하시오. 비내림차순이란, 각각의 원소가 바로 앞에 있는 원소보다 크거나 같을 경우를 말한다. 만약 그러한 수열이 여러개라면 사전순으로 앞서는 것을 출력한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/22/a1015</link>
					<guid isPermaLink="true">undefined/posts/2021/06/22/a1015</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>SILVER</category>
<category>SILVER IV</category>
<category>정렬</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1014번 컨닝</title>
					<description>최백준은 서강대학교에서 “컨닝의 기술”이라는 과목을 가르치고 있다. 이 과목은 상당히 까다롭기로 정평이 나있기 때문에, 몇몇 학생들은 시험을 보는 도중에 다른 사람의 답지를 베끼려 한다. 시험은 N행 X M열 크기의 직사각형 교실에서 이루어진다. 교실은 1 X 1 크기의 단위 정사각형으로 이루어져 있는데, 각 단위 정사각형은 자리 하나를 의미한다. 최백준은 컨닝을 방지하기 위해서 다음과 같은 전략을 세웠다. 모든 학생은 자신의 왼쪽, 오른쪽, 왼쪽 대각선 위, 오른쪽 대각선 위, 이렇게 총 네 자리에 앉아있는 친구의 답지를 항상 베낀다고 가정한다. 따라서, 자리 배치는 모든 학생이 컨닝을 할 수 없도록 배치되어야 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/18/a1014</link>
					<guid isPermaLink="true">undefined/posts/2021/06/18/a1014</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>PLATINUM</category>
<category>PLATINUM IV</category>
<category>네트워크 플로우</category>
<category>최소 버텍스 커버</category>
<category>이분 매칭</category>
				</item>
			

				<item>
					<title>[JAVA] split vs StringTokenizer</title>
					<description>알고리즘을 풀다보면, 필연적으로 입력값 처리를 하게된다. 다양한 케이스에 대응하기 위해, 사용자의 값을 직접 입력받아 이를 처리하게 된다. 이 때, 우리는 십중팔구 이와 같은 상황이 발생한다. 데이터셋을 보내기 위해 데이터의 모음을 구분자(공백 혹은 쉼표)를 통해 하나의 문자열로 합쳐 전달한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/14/split-and-stringtokenizer</link>
					<guid isPermaLink="true">undefined/posts/2021/06/14/split-and-stringtokenizer</guid>
					<category>JAVA(자바)</category>
<category>String(문자열)</category>
<category>split</category>
<category>StringTokenizer</category>
				</item>
			

				<item>
					<title>IntelliJ(인텔리제이) 시작 시 오류(java.net.BindException: Address already in use: bind)</title>
					<description></description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/14/intellij-error-onstart</link>
					<guid isPermaLink="true">undefined/posts/2021/06/14/intellij-error-onstart</guid>
					<category>IntelliJ(인텔리제이)</category>
<category>Hyper-V</category>
<category>오류 해결책</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1013번 Contact</title>
					<description>푸에르토리코 아레시보에 위치한 아레시보 전파망원경(Arecibo radio telescope)은 수십 년째 존재하지 않을 지도 모르는 외계 문명으로부터의 전파를 수신하기 위해 밤하늘을 바라보고 있다. 이 망원경이 수집한 전파 속에서 자연적으로 발생하기 힘든 패턴들을 찾아내어, 그것을 증거로 외계 문명의 존재 여부를 가리려는 노력은 줄곧 이어져왔지만 아직까지도 그러한 패턴은 발견되지 않았다. 한국 천문학계의 자존심 김동혁 박사는 국내 기술로 이러한 탐사를 진행하기 위하여 다음의 전파 표기를 표준으로 삼았다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/13/a1013</link>
					<guid isPermaLink="true">undefined/posts/2021/06/13/a1013</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>정규 표현식</category>
<category>GOLD</category>
<category>GOLD V</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1012번 유기농 배추</title>
					<description>차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다.(한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있다고 간주한다)</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/13/a1012</link>
					<guid isPermaLink="true">undefined/posts/2021/06/13/a1012</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>DFS(깊이 우선 탐색)</category>
<category>BFS(너비 우선 탐색)</category>
<category>SILVER</category>
<category>SILVER II</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1011번 Fly me to the Alpha Centauri</title>
					<description>우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k - 1 , k 혹은 k + 1 광년만을 다시 이동할 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/11/a1011</link>
					<guid isPermaLink="true">undefined/posts/2021/06/11/a1011</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>SILVER</category>
<category>SILVER I</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1010번 다리 놓기</title>
					<description>재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M)</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/09/a1010</link>
					<guid isPermaLink="true">undefined/posts/2021/06/09/a1010</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Combination(조합)</category>
<category>SILVER</category>
<category>SILVER V</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1009번 분산처리</title>
					<description>재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/09/a1009</link>
					<guid isPermaLink="true">undefined/posts/2021/06/09/a1009</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>수학</category>
<category>BRONZE</category>
<category>BRONZE IV</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1008번 A / B</title>
					<description>두 정수 A와 B를 입력받은 다음, A / B를 출력하는 프로그램을 작성하시오.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/09/a1008</link>
					<guid isPermaLink="true">undefined/posts/2021/06/09/a1008</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>사칙연산</category>
<category>BRONZE</category>
<category>BRONZE IV</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1007번 벡터</title>
					<description>평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속하는 모든 점은 한 번씩 쓰여야 한다. V에 있는 벡터의 갯수는 P에 있는 점의 절반이다. 평면 상의 점이 주어졌을 때, 집합 P의 벡터 매칭에 있는 벡터의 합의 길이의 최솟값을 출력하는 프로그램을 작성하시오.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/09/a1007</link>
					<guid isPermaLink="true">undefined/posts/2021/06/09/a1007</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Brute Force(무차별 대입 공격)</category>
<category>Combination(조합)</category>
<category>GOLD</category>
<category>GOLD II</category>
				</item>
			

				<item>
					<title>[Jekyll] GitHub Pages를 이용해 나만의 블로그 만들기 - 4. Jekyll 쇼핑하기</title>
					<description>GitHub는 각 프로젝트를 하나의 Repository로 관리한다. 생성한 Repository는 Git을 이용하여 관리할 수 있다. GitHub 페이지 자체로도 Repository 내부의 파일 생성, 수정, 삭제가 가능하지만 매우 번거로우므로 대부분 Git을 활용하는 것이 권장된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/07/jekyll-blog-jekyll-shopping</link>
					<guid isPermaLink="true">undefined/posts/2021/06/07/jekyll-blog-jekyll-shopping</guid>
					<category>GitHub Pages(깃허브 페이지)</category>
<category>Jekyll(지킬)</category>
<category>Blog(블로그)</category>
				</item>
			

				<item>
					<title>[Jekyll] GitHub Pages를 이용해 나만의 블로그 만들기 - 1. Jekyll이란?</title>
					<description>대형 포탈이나 크고 작은 플랫폼을 통해 자신만의 블로그를 만들 수 있다. 이러한 플랫폼을 통한 블로그는 연동된 계정과 버튼 클릭 몇 번으로 만들 수 있을 정도로 쉽고 간편하다. 하지만 이와 같은 블로그는 페이지의 기본 프레임이 정해져있고, 자유로운 커스터마이징이 제한된 편이다. 자신만의 색이나 가치관을 담은 블로그를 만들기 위해선 소위 &amp;quot;기성품&amp;quot;이 아닌 방법을 찾아야하는데, 이는 곧 자신이 직접 웹 페이지를 제작하고 퍼블리싱, 호스팅까지 전반적인 웹 서비스 자체를 구축해야하는 큰 작업으로 이어진다. 어찌어찌 페이지를 제작한다 하더라도, CSS를 통한 디자인이나 JavaScript같은 부가기능은 프레임 제작 이상으로 어렵다. 여기까지는 어떻게 자력으로 했다고 하더라도, 호스팅은 돈이 든다. DB까지 연동한다면 금액은 더욱 커지게 된다. 내가 원한건 단순한 블로그였는데.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/06/jekyll-blog-start</link>
					<guid isPermaLink="true">undefined/posts/2021/06/06/jekyll-blog-start</guid>
					<category>GitHub Pages(깃허브 페이지)</category>
<category>Jekyll(지킬)</category>
<category>Blog(블로그)</category>
				</item>
			

				<item>
					<title>[Jekyll] GitHub Pages를 이용해 나만의 블로그 만들기 - 3. Git 설치하기</title>
					<description>GitHub는 각 프로젝트를 하나의 Repository로 관리한다. 생성한 Repository는 Git을 이용하여 관리할 수 있다. GitHub 페이지 자체로도 Repository 내부의 파일 생성, 수정, 삭제가 가능하지만 매우 번거로우므로 대부분 Git을 활용하는 것이 권장된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/06/jekyll-blog-prepare-git</link>
					<guid isPermaLink="true">undefined/posts/2021/06/06/jekyll-blog-prepare-git</guid>
					<category>GitHub Pages(깃허브 페이지)</category>
<category>Jekyll(지킬)</category>
<category>Blog(블로그)</category>
<category>Git</category>
				</item>
			

				<item>
					<title>[Jekyll] GitHub Pages를 이용해 나만의 블로그 만들기 - 2. GitHub와 친해지기</title>
					<description>Jekyll은 GitHub를 통해 호스팅한다. 즉, Jekyll로 블로그를 만들기 위해선 GitHub를 조금이나마 알고 있어야 한다. 본문에서는 GitHub의 여러 기능은 제쳐두고, Jekyll 호스팅을 목적을 기준으로 설명한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/06/jekyll-blog-github</link>
					<guid isPermaLink="true">undefined/posts/2021/06/06/jekyll-blog-github</guid>
					<category>GitHub Pages(깃허브 페이지)</category>
<category>Jekyll(지킬)</category>
<category>Blog(블로그)</category>
<category>GitHub(깃허브)</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1006번 습격자 초라기</title>
					<description>초라기는 한국의 비밀국방기지(원타곤)를 습격하라는 임무를 받은 특급요원이다. 원타곤의 건물은 도넛 형태이며, 초라기는 효율적인 타격 포인트를 정하기 위해 구역을 아래와 같이 두 개의 원 모양으로 나누었다. (그림의 숫자는 각 구역의 번호이다.) 초라기는 각각 W명으로 구성된 특수소대를 다수 출동시켜 모든 구역에 침투시킬 예정이며, 각 구역 별로 적이 몇 명씩 배치되어 있는지는 초라기가 모두 알고 있다. 특수소대를 아래 조건에 따라 침투 시킬 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/06/a1006</link>
					<guid isPermaLink="true">undefined/posts/2021/06/06/a1006</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Dynamic Programming(동적 프로그래밍)</category>
<category>PLATINUM</category>
<category>PLATINUM III</category>
				</item>
			

				<item>
					<title>Compiler(컴파일러) &amp; Interpreter(인터프리터)</title>
					<description>천공카드 이래로 지금까지 컴퓨터 언어는 무수히 많은 발전을 거듭했다. 현재에 이르러서는 개발된 언어끼리의 시너지가 일어나 하루가 멀다하고 새로운 언어, 개념이 생성되고 있다. 하지만 그 아무리 새로운 언어로 구현한 소프트웨어라 하더라도, 결과적으로 프로그램의 실행 주체는 컴퓨터에게 있다. 우리가 아무리 새로운 언어니, 프레임워크니, 기술이니 지지고 볶고 하더라도 결국은 컴퓨터가 알아먹을 수 있어야 실행된다는 얘기다. 글로벌 시대답게 초등학생도 1개 이상의 외국어를 하는 마당에, 안타깝게도 우리 컴퓨터는 개발 이래로 초지일관 기계어만을 고집한다. 한글, 영어는 고사하고 우리가 개발할 때 사용하는 프로그래밍 언어라고 하는 대부분의 언어들. 심지어 C언어 보다도 저수준인 어셈블리어 조차 컴퓨터 입장에서는 외계어와 다를 바 없다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/03/compiler-interpreter</link>
					<guid isPermaLink="true">undefined/posts/2021/06/03/compiler-interpreter</guid>
					<category>Compiler(컴파일러)</category>
<category>Interpreter(인터프리터)</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1005번 ACM Craft</title>
					<description>서기 2012년! 드디어 2년간 수많은 국민들을 기다리게 한 게임 ACM Craft(Association of Construction Mananger Craft)가 발매되었다. 이 게임은 지금까지 나온 게임들과는 다르게 ACM Craft는 다이나믹한 게임 진행을 위해 건물을 짓는 순서가 정해져있지 않다. 즉, 첫 번째 게임과 두 번째 게임이 건물을 짓는 순서가 다를 수도 있다. 매 게임시작 시 건물을 짓는 순서가 주어진다. 또한 모든 건물은 각각 건설을 시작하여 완성이 될 때까지 Delay가 존재한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/06/01/a1005</link>
					<guid isPermaLink="true">undefined/posts/2021/06/01/a1005</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>Dynamic Programming(동적 프로그래밍)</category>
<category>위상 정렬</category>
<category>GOLD</category>
<category>GOLD III</category>
				</item>
			

				<item>
					<title>Unsupported major.minor version 에러 해결하기 (+Servlet 404 에러)</title>
					<description>간혹 JAVA 프로그램을 실행하다보면 Unsupported major.minor version 52(숫자는 class 버전에 따라 다름) 오류가 출력되면서 정상적으로 동작하지 않는 오류가 발생한다. Unsupported major.minor version 오류는 직역하면 &amp;quot;지원하지 않는 주/부 버전&amp;quot;이다. JAVA 버전관련 오류라고 보면 된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/30/unsupported-version-error</link>
					<guid isPermaLink="true">undefined/posts/2021/05/30/unsupported-version-error</guid>
					<category>JAVA</category>
<category>WAS</category>
<category>Tomcat(톰캣)</category>
<category>오류 해결책</category>
				</item>
			

				<item>
					<title>URI? URL? URN? 리소스 식별자 구분하기</title>
					<description>우리가 인터넷 상에서 특정한 데이터에 접근할 때 URL이라는 것을 활용하여 접근한다. 원하는 자료의 URL을 얻으면, 브라우저 같은 HTTP 통신 프로그램에 해당 URL을 호출하여 응답을 얻는 것이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/29/uri-url-urn</link>
					<guid isPermaLink="true">undefined/posts/2021/05/29/uri-url-urn</guid>
					<category>WEB(웹)</category>
<category>URI</category>
<category>URL</category>
<category>URN</category>
				</item>
			

				<item>
					<title>Tomcat(톰캣) 현재 콘솔창에서 구동하기</title>
					<description>오늘도 어느때와 다름없이 톰캣을 구동하는 A씨. 어제까지만 해도 잘 되던 톰캣이 무슨 오류가 있는지 구동 중에 바로 꺼져버린다. 꺼지기 직전의 순간 무슨 오류가 뜬 거 같은데..... 너무 빨라서 도통 확인할 수가 없다. 할 수 없이 일일이 로그를 찾아보며 오류를 수정하는 A씨. 건드린 것도 없는데, 왜 이러는 걸까?</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/26/tomcat-current-window</link>
					<guid isPermaLink="true">undefined/posts/2021/05/26/tomcat-current-window</guid>
					<category>WAS</category>
<category>Tomcat(톰캣)</category>
<category>Console(콘솔)</category>
				</item>
			

				<item>
					<title>Tomcat(톰캣) 콘솔창 한글 인코딩 깨짐 현상 해결하기</title>
					<description>톰캣을 구동하다보면 심심치않게 마주하는 오류(?)는 아니고 현상. Windows Console의 기본 인코딩과 Tomcat이 출력하는 인코딩이 서로 달라서 생긴다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/22/tomcat-encoding-euckr</link>
					<guid isPermaLink="true">undefined/posts/2021/05/22/tomcat-encoding-euckr</guid>
					<category>WAS</category>
<category>Tomcat(톰캣)</category>
<category>Console(콘솔)</category>
				</item>
			

				<item>
					<title>도메인이란?</title>
					<description>도메인을 이해하기 위해선, IP에 대해 짚고 넘어가야 한다. 인터넷에 연결된 모든 디바이스(컴퓨터, 스마트폰, 공유기 등)는 고유한 12자리 숫자로 구성된 IP주소를 가진다. IP를 유동성으로 나누면 크게 유동 IP, 고정 IP로 분류할 수 있다. 유동 IP: 임의의 시점마다 IP주소가 갱신되는 IP. 갱신 주기는 일정하지 않음. 대부분의 인터넷 회선에 적용됨. 고정 IP: 회선에 고정된 IP를 부여하며, 해당 회선의 IP는 갱신되지 않음. 부가서비스 형태로 제공되며, 쇼핑몰이나 회사 등 지속적으로 시스템을 운영해야 할 경우 적합함. 우리가 원하는 장소에 방문하기 위해 주소를 찾듯이, 특정 서버에서 운영하는 웹 사이트를 방문하기 위해선 해당 서버의 주소인 IP가 필요하다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/22/about-domain</link>
					<guid isPermaLink="true">undefined/posts/2021/05/22/about-domain</guid>
					<category>WEB(웹)</category>
<category>Domain(도메인)</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1004번 어린 왕자</title>
					<description>어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/22/a1004</link>
					<guid isPermaLink="true">undefined/posts/2021/05/22/a1004</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>기하학</category>
<category>SILVER</category>
<category>SILVER III</category>
				</item>
			

				<item>
					<title>백준 알고리즘 시작하기</title>
					<description>코딩 테스트 및 개인 실력 향상을 위해 백준 알고리즘을 차례로 풀어보기로 했다. 그냥 풀기만 하면 분명히 나중에 어떻게 풀었는지 까먹을테니, 이해한 내용을 포스팅하며 풀이를 진행한다. 풀이의 규칙은 아래와 같다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/21/start-beakjoon</link>
					<guid isPermaLink="true">undefined/posts/2021/05/21/start-beakjoon</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
				</item>
			

				<item>
					<title>Jekyll에서 Next.js로</title>
					<description>Jekyll에서 Next.js로의 블로그 이동기</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/21/jekyll-to-nextjs</link>
					<guid isPermaLink="true">undefined/posts/2021/05/21/jekyll-to-nextjs</guid>
					<category>React(리액트)</category>
<category>Next.js</category>
<category>개발 블로그</category>
<category>Jekyll</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1003번 피보나치 함수</title>
					<description>다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/21/a1003</link>
					<guid isPermaLink="true">undefined/posts/2021/05/21/a1003</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>피보나치 수열</category>
<category>Dynamic Programming(동적 프로그래밍)</category>
<category>SILVER</category>
<category>SILVER III</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1002번 터렛</title>
					<description>조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승현의 사진이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/21/a1002</link>
					<guid isPermaLink="true">undefined/posts/2021/05/21/a1002</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>기하학</category>
<category>SILVER</category>
<category>SILVER IV</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1001번 A - B</title>
					<description>두 정수 A와 B를 입력받은 다음, A - B를 출력하는 프로그램을 작성하시오.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/21/a1001</link>
					<guid isPermaLink="true">undefined/posts/2021/05/21/a1001</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>사칙연산</category>
<category>BRONZE</category>
<category>BRONZE V</category>
				</item>
			

				<item>
					<title>[백준 / JAVA] 백준 알고리즘 1000번 A + B</title>
					<description>두 정수 A와 B를 입력받은 다음, A + B를 출력하는 프로그램을 작성하시오.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/posts/2021/05/21/a1000</link>
					<guid isPermaLink="true">undefined/posts/2021/05/21/a1000</guid>
					<category>백준</category>
<category>알고리즘</category>
<category>JAVA(자바)</category>
<category>사칙연산</category>
<category>BRONZE</category>
<category>BRONZE V</category>
				</item>
			

				<item>
					<title>The 5th Generation</title>
					<description>5번 째 리뉴얼을 수행하며 블로그가 어떤식으로 변화됐는지, 어떤 것을 중점으로 삼았는지 다뤄본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2024/06/01/5th-generation</link>
					<guid isPermaLink="true">undefined/projects/2024/06/01/5th-generation</guid>
					<category>React</category>
<category>Next.js</category>
<category>Markdown</category>
<category>NX</category>
<category>Monorepo</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 26. 실전! OpenLayers6 Sandbox를 내 GeoServer로 구동하기</title>
					<description>이 시리즈를 쭉 정독했다면, 코드와 함께 예시로 보여주는 OpenLayers6 Sandbox를 봤을 것이다. 해당 사이트는 코드의 결과를 직관적으로 보여주기 위해 만든 예시 사이트다. 코드로 보는 것보다, 직접 구현된 결과물을 보는 것이 이해가 훨씬 빠를거라 생각했다. 예시 사이트를 보여주는 것도 좋지만, 자신이 직접 GeoServer를 구축하고 이를 예시 사이트에 연결하는 방법을 알려준다면, 더 자유롭게 탐구를 할 수 있지 않을까 싶었다. 이 장에선, 내가 직접 예시 사이트에 사용한 데이터 일체와 GeoServer의 구축 방식을 제공하여, OpenLayers6 Sandbox 사이트를 내 GeoServer로 연결하여 구축해본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2023/09/24/gis-guide-for-programmer-26</link>
					<guid isPermaLink="true">undefined/projects/2023/09/24/gis-guide-for-programmer-26</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>React</category>
				</item>
			

				<item>
					<title>파이딧 개발기</title>
					<description>일반적으로 사이트에서 글을 작성할 때, HTML 기반의 에디터를 많이 사용한다. 하지만 개발과 관련된 사이트라면, 마크다운 기반의 에디터를 사용하는 것을 심심치않게 볼 수 있다. 내 블로그 또한 웹에서 작성하진 않지만, 마크다운을 기반으로 게시글을 작성하고 있다. 글을 직관적으로 작성할 수 있으면서도, HTML과의 호환이 뛰어나서 웹으로 표현하는데도 무리가 없다. 이를 보조하는 다양한 플러그인은 덤. 블로그 컨텐츠의 미려한 디자인을 위해 렌더링 코드를 추가하여 사용하고 있다. 예를들면, 코드블럭 같은 것들이 그렇다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2023/09/17/piedit</link>
					<guid isPermaLink="true">undefined/projects/2023/09/17/piedit</guid>
					<category>React</category>
<category>Next.js</category>
<category>Markdown</category>
				</item>
			

				<item>
					<title>정신차려보니 블로그를 4번이나 갈아 엎은 건에 대하여</title>
					<description>블로그 마음에 안 든다고 세 번째 갈아엎은지가 얼마 안 된 거 같은데, 눈 떠보니 어느새 네 차례나 갈아엎고 있는 나를 봤다. 블로그 마지막 글이 거의 반 년 전 글인데, 토이 프로젝트 개발하느라 블로그에 거의 신경을 안 썼다. 더군다나, 3차 개편 이후로 여러 프론트 기술을 습득하게 됐다. 이 때문에 덩달아 내 눈도 높아져버린 탓에, 블로그의 UI가 너무 마음에 들지 않았던 것도 한 몫했다. 다행히 써둔 글들도 꽤 있었고, 그 중엔 나름 효자라 불릴만한 게시글도 몇 개 있어서 방문자가 감소하지는 않았다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2023/09/09/4th-renewal</link>
					<guid isPermaLink="true">undefined/projects/2023/09/09/4th-renewal</guid>
					<category>React</category>
<category>Next.js</category>
<category>Material UI</category>
<category>Giscus</category>
				</item>
			

				<item>
					<title>Rollup.js로 React 컴포넌트 라이브러리 개발기</title>
					<description>회사에서 할당받은 업무 중 하나로, 컴포넌트를 라이브러리화하여 npm으로 배포하는 업무를 맡게 됐다. 즉, react-bootstrap 같은 컴포넌트 라이브러리를 개발해야한다. 코드 배포 경험이라곤 예전에 JAVA 오픈소스 라이브러리 만든답시고 Maven에 한 번 배포해본 게 전부인 내게, 새로운 개발환경에서의 배포는 필연적인 시행착오를 불러왔다. 개발하면서 느꼈던건, 깊게 참고할만한 레퍼런스가 너무 없었고, 가져다 쓸만한 적절한 코드도 찾지 못 했다. 다행히 뭐 어찌저찌 시간 갈아가며 어느정도 기틀을 잡을 수 있었다. 나름 재밌기도 했고, 한 번 파볼만한 가치도 있는 것 같고, 인지도 높은 레퍼런스도 없는 것 같아서 내가 직접 한 번 만들어보기로 했다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/06/10/react-components-library-starter</link>
					<guid isPermaLink="true">undefined/projects/2022/06/10/react-components-library-starter</guid>
					<category>React</category>
<category>Rollup.js</category>
<category>npm</category>
<category>Library</category>
				</item>
			

				<item>
					<title>블로그 3차 리뉴얼</title>
					<description>Next.js로 블로그를 다시 만든 뒤에, 새로운 글 작성 이외에 별다른 유지보수는 하지 않았었다. 나름의 이유는 있었던 것이, 일단 당장 쓰는 데 큰 문제가 없었고, 귀찮기도 했다. 적절한 컴포넌트를 구상하고 배치하는 게 여간 귀찮은 일이 아니기도 했고. 내 블로그에 몇 가지 문제점이 있었는데, 그 중 하나가 About 페이지에 아무 것도 없다는 점이다. 뭔가 나름의 블로그 소개를 작성하려고 했는데, 마땅한 아이디어가 없었기 때문. 그러다 문득, 괜찮은 아이디어가 하나 떠올랐는데, &amp;quot;About 페이지에 커밋 리스트를 표시해주면 괜찮지 않을까?&amp;quot;란 생각이였다. 나쁘지 않은 생각이였으므로 개발에 들어갔으나, 갑자기 블로그의 못난 부분들이 거슬리기 시작했다. 갑자기 못난 부분들이 보이는 게 너무나도 참을 수 없던 나는, 그렇게 예정에도 없던 블로그 리뉴얼 작업을 시작했다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/06/05/blog-renewal</link>
					<guid isPermaLink="true">undefined/projects/2022/06/05/blog-renewal</guid>
					<category>React</category>
<category>Next.js</category>
<category>개발 블로그</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 25. WebGL로 초대용량 데이터 표시하기</title>
					<description>WFS 마커는 표현 대상이 많아지면 많아질수록 비용으로 직결된다고 언급한 적이 있었다. 하지만 만약, 정말 만약에, 수 많은 객체를 온전히 마커로 전부 보여줘야 한다면? 어떠한 이유로든 이러한 문제에 당면했을 경우, WebGL이 그 해결책이 될 수 있다. 이 장에서는 WebGL 렌더러를 활용하여 30만개의 마커를 표현해본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/06/02/gis-guide-for-programmer-25</link>
					<guid isPermaLink="true">undefined/projects/2022/06/02/gis-guide-for-programmer-25</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WFS</category>
<category>WebGL</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 24. Heat Map 표현하기</title>
					<description>데이터는 보는 관점에 따라, 전혀 새로운 결과를 도출하기도 한다. 지금까지 다뤘던 지도들은 하나같이 데이터를 지도 상에 있는 그대로 보여주는 것에 중점을 뒀었다. 이번 장에서는 Heat Map을 통해, 데이터를 바라보는 관점을 조금 바꿔본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/06/02/gis-guide-for-programmer-24</link>
					<guid isPermaLink="true">undefined/projects/2022/06/02/gis-guide-for-programmer-24</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WFS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 23. Cluster Map 표현하기</title>
					<description>지도에서 마커의 경우, 사용자와의 상호작용이 일어나는 주요소이기 때문에 통상 WFS 객체로 관리한다. 객체를 기반으로 렌더링하다보니, 데이터가 많아지면 많아질수록 곧 서비스의 비용으로 직결된다. 보다시피, 너무 많은 양의 마커는 데이터로써의 의미를 잃게 된다. 너무나도 많은 요소로 인해 시인성은 극도로 떨어지며, 유의미한 상호작용 또한 불가능하다. 최대한 많은 데이터를 보여주고자 흔히 하는 실수이기도 하다. 시인성 이전에, 저렇게 많은 마커를 표현하는 지도는 매우 느리다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/06/01/gis-guide-for-programmer-23</link>
					<guid isPermaLink="true">undefined/projects/2022/06/01/gis-guide-for-programmer-23</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WFS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 22. WFS Transaction으로 데이터 삭제하기</title>
					<description>세 가지 WFS Transaction API 중, 마지막 단계로 데이터 삭제에 대해 다뤄보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/31/gis-guide-for-programmer-22</link>
					<guid isPermaLink="true">undefined/projects/2022/05/31/gis-guide-for-programmer-22</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WFS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 21. WFS Transaction으로 데이터 수정하기</title>
					<description>세 가지 WFS Transaction API 중, 데이터를 수정하는 Update에 대해 다뤄보자.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/31/gis-guide-for-programmer-21</link>
					<guid isPermaLink="true">undefined/projects/2022/05/31/gis-guide-for-programmer-21</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WFS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 20. WFS Transaction으로 데이터 추가하기</title>
					<description>지금까지는 GeoServer를 통해 데이터를 호출하고, 이를 표현하는 것이 전부였다. 객체로 표현을 하던, 이미지로 그리던, 데이터를 직접 표현해주던, 결국 어떠한 형태로든 데이터를 보여주는 수준에 그쳤다. 이 문서를 포함하여, 앞으로 서술할 3개 문서는 공간정보 데이터의 삽입/수정/삭제에 대해 다룬다. WFS Transaction 프로토콜을 활용하면 정해진 패턴으로 데이터의 CUD를 수행할 수 있다. 이 중 이 문서에서는 WFS Transaction Insert. 즉, 공간정보 데이터의 추가에 대해 다룬다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/30/gis-guide-for-programmer-20</link>
					<guid isPermaLink="true">undefined/projects/2022/05/30/gis-guide-for-programmer-20</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WFS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 19. WMS에 팝업 붙이기</title>
					<description>지도에 표시된 마커 혹은 객체를 클릭하면, 팝업을 통해 해당 객체의 자세한 정보를 보여준다. 이 장에서는 WFS 지도에 팝업을 출력하여 마커의 세부 정보를 표현해본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/28/gis-guide-for-programmer-19</link>
					<guid isPermaLink="true">undefined/projects/2022/05/28/gis-guide-for-programmer-19</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WMS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 18. WFS에 팝업 붙이기</title>
					<description>지도에 표시된 마커 혹은 객체를 클릭하면, 팝업을 통해 해당 객체의 자세한 정보를 보여준다. 이 장에서는 WFS 지도에 팝업을 출력하여 마커의 세부 정보를 표현해본다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/25/gis-guide-for-programmer-18</link>
					<guid isPermaLink="true">undefined/projects/2022/05/25/gis-guide-for-programmer-18</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>WFS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 17. WFS 객체에 상호작용 추가하기</title>
					<description>WFS와 WMS의 가장 큰 특징은 데이터의 결과물이다. WFS는 GeoJSON으로 공간정보 요소를 반환해주는 반면, WMS는 공간정보 요소를 토대로 직접 지도를 렌더링하여 제공해준다. OpenLayers는 WFS의 데이터를 토대로 `canvas`에 객체를 렌더링한다. 공간정보를 토대로 일종의 도형을 그린다고 생각하면 쉽다. 이미지와 다르게 웹 상에서 직접 그려지는 객체이므로, 웹은 이를 인식하거나 조작할 수 있다는 큰 장점이 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/21/gis-guide-for-programmer-17</link>
					<guid isPermaLink="true">undefined/projects/2022/05/21/gis-guide-for-programmer-17</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 16. WMS GetImage를 사용하여 지도에 이미지 표시하기</title>
					<description>이 장에선 WFS를 통해 지도에 이미지를 표시하는 방법에 대해 다룬다. 이전 장의 WFS는 공간정보 데이터를 GeoJSON으로 받아 직접 객체로 표시하지만, WMS는 객체를 GeoServer에서 이미지로 렌더링한 이미지를 받아 표시한다. 즉, GeoServer로 부터 직접 Tile Map을 받아 표현한다고 생각하면 된다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/16/gis-guide-for-programmer-16</link>
					<guid isPermaLink="true">undefined/projects/2022/05/16/gis-guide-for-programmer-16</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>OGC</category>
<category>WMS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 15. WFS GetFeature를 사용하여 지도에 객체 표시하기</title>
					<description>지금까지는 온전히 OpenLayers만의 기능이였다면, 이 장부터 슬슬 GeoServer와의 연동을 다루게 된다. 그 중 첫 번째로 다룰 기능은, WFS다. GeoServer에서 WFS는 지정한 요소의 정보를 GeoJSON의 형태로 반환해준다. 이 정보를 적절히 활용하여 지도에 표시할 수 있다. 이러한 기능을 통해 직접 관리하거나 가공한 데이터를 지도에 표시할 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/05/15/gis-guide-for-programmer-15</link>
					<guid isPermaLink="true">undefined/projects/2022/05/15/gis-guide-for-programmer-15</guid>
					<category>GIS</category>
<category>GeoServer</category>
<category>OpenLayers</category>
<category>OGC</category>
<category>WFS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 14. 지도에 사용자의 위치 표시하기</title>
					<description>사용자의 위치를 기반으로 다양한 서비스를 제공할 수 있겠지만, 그 중에서 가장 기본적인 기능은 사용자의 위치를 지도 상에 직접 표시하는 것이다. 이전 장에서 설명한 지오로케이션을 토대로, OpenLayers를 활용하여 위치를 지도에 표시한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/04/04/gis-guide-for-programmer-14</link>
					<guid isPermaLink="true">undefined/projects/2022/04/04/gis-guide-for-programmer-14</guid>
					<category>GIS</category>
<category>OpenLayers</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 13. 브라우저에서 사용자 위치정보 수집하기</title>
					<description>지도 서비스 중에서는 사용자의 위치를 분석하고, 위치에 더욱 적절한 컨텐츠를 제시하기도 한다. 일례로, 배달 어플은 사용자의 위치에 따라 일정 범위 내의 음식점만을 우선으로 보여준다던가 하는 방식이다. 어플리케이션의 경우, 주 구동 기기인 스마트폰의 GPS를 활용할 수 있다. 비슷하게 브라우저는 브라우저 자체적으로 사용자의 동의에 따라 위치정보를 수집하여 활용할 수 있다. 당연하게도 인터넷이 반드시 연결되어야 한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/04/03/gis-guide-for-programmer-13</link>
					<guid isPermaLink="true">undefined/projects/2022/04/03/gis-guide-for-programmer-13</guid>
					<category>GIS</category>
<category>OpenLayers</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 12. 맵의 유용한 정보 표시하기</title>
					<description>지도를 다루다보면, 내가 현재 보고있는 영역의 좌표, 지도 상에서 마우스가 위치한 좌표, 줌 레벨 등 다양한 정보를 얻어야할 경우가 생긴다. 이런 니즈를 충족하기 위해, 지도 상에 상태창을 만들어 관련 정보를 출력해주면 필요할 때 유용하게 사용할 수 있을 것이다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/22/gis-guide-for-programmer-12</link>
					<guid isPermaLink="true">undefined/projects/2022/03/22/gis-guide-for-programmer-12</guid>
					<category>GIS</category>
<category>OpenLayers</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 11. VWorld 맵 만들기</title>
					<description>이전 장에서 OSM을 통해 지도를 표시해봤다. 하지만, OSM의 지도는 디테일함이 떨어진다는 무시할 수 없는 단점이 존재한다. OSM은 사용하기 쉬운 세계지도라는 큰 장점이 있음에도, 저 단점 하나로 인해 국내 서비스용 지도로 사용하기 어렵다. 즉, 예제 이상의 실질적인 서비스에 사용하려면 국내 지리에 특화된 지도가 필요하다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/21/gis-guide-for-programmer-11</link>
					<guid isPermaLink="true">undefined/projects/2022/03/21/gis-guide-for-programmer-11</guid>
					<category>GIS</category>
<category>OpenLayers</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 10. Open Street Map(OSM) 맵 만들기</title>
					<description>OSM이란, 전세계 지도 종사자들이 자율적으로 관리하는 세계지도다. 즉, 지도 분야의 오픈 소스라고 생각하면 이해하기 쉽다. 각 국의 기여자들이 지도를 관리하고 있으며, 각 국가의 영역은 해당하는 국가의 언어로 표시된다. 전세계를 대상으로 하는 서비스에도 무리없이 적용 가능하다는 장점이 있다. 단, 한국 기준으로 지도의 퀄리티가 그리 뛰어나진 않다. OpenLayers는 라이브러리 단계에서 OSM을 기본 제공한다. 즉, 별다른 API 호출이나 설정 없이 간단한 코드 몇 줄 만으로도 웹 상에 세계지도를 띄울 수 있다. 이 장에서는 OpenLayers6를 활용하여 웹 상에 OSM을 띄우는 매우 기초적인 방법에 대해 다룬다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/19/gis-guide-for-programmer-10</link>
					<guid isPermaLink="true">undefined/projects/2022/03/19/gis-guide-for-programmer-10</guid>
					<category>GIS</category>
<category>OpenLayers</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 9. 데이터 필터링하기</title>
					<description>WFS나 WMS를 호출할 때, 좀 더 다채로운 필터링이 필요한 경우가 존재할 수 있다. 특정 영역 밖의 객체를 호출한다거나, 특정 영역에 걸치는 데이터만 호출하는 것, 혹은 다양한 조건을 조합하여 데이터를 조회해야 할 수도 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/15/gis-guide-for-programmer-9</link>
					<guid isPermaLink="true">undefined/projects/2022/03/15/gis-guide-for-programmer-9</guid>
					<category>GIS</category>
<category>GeoServer</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 8. 공간정보 데이터를 주문하는 법. OGC</title>
					<description>OpenLayers는 웹 브라우저에서 지도나 GIS 서비스를 제공하기 위한 JavaScript Library다. GIS 라이브러리 중 진입 장벽은 가장 높지만, 그에 상응하는 강력한 기능을 제공한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/14/gis-guide-for-programmer-8</link>
					<guid isPermaLink="true">undefined/projects/2022/03/14/gis-guide-for-programmer-8</guid>
					<category>GIS</category>
<category>GeoServer</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 7. 공간정보 데이터를 관리하는 법. GeoServer</title>
					<description>이전 장에서 공간정보 데이터를 DB에 넣어봤다. 이제 데이터를 적절한 방법으로 통신할 방법만 마련한다면, DB에 저장한 공간정보 데이터를 웹에서든 앱에서든 자유롭게 활용할 수 있을 것이다. 하지만 누누히 언급했듯이, 공간정보 데이터는 다른 데이터와 엄연한 차별점이 존재한다. 바로 공간 데이터라는 점이다. 공간정보 데이터는 일반적인 텍스트 기반의 데이터가 아니다보니, CRUD에 있어서 굉장히 취약하다. 좀 더 자유로운 통신을 위해 DB에 넣었음에도 CRUD에 전혀 강점이 없는 것. 즉, MyBatis든, JPA든, 일반적인 DB 통신으로는 공간정보 데이터를 온전히 받기가 어렵다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/07/gis-guide-for-programmer-7</link>
					<guid isPermaLink="true">undefined/projects/2022/03/07/gis-guide-for-programmer-7</guid>
					<category>GIS</category>
<category>GeoServer</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 6. 공간정보의 DB화</title>
					<description>데이터의 CRUD 소요가 있는 서비스는 DB를 사용한다. 서비스 운영에 필요한 데이터를 DB에 저장하고, 이를 적절히 관리, 조작함으로써 서비스의 기능을 제공한다. GIS의 경우, 그 특성상 대용량 데이터를 자주 접하게 된다. 일례로, 전국의 건물 수는 몇백만을 우습게 상회하기 때문. 단순 row가 백만 단위인 것도 문제지만, 건물 정보의 특성 상 column의 갯수 또한 수십 개 정도다. 때문의 데이터의 용량이 매우 커진다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/05/gis-guide-for-programmer-6</link>
					<guid isPermaLink="true">undefined/projects/2022/03/05/gis-guide-for-programmer-6</guid>
					<category>GIS</category>
<category>MariaDB</category>
<category>QGIS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 5. OpenLayers</title>
					<description>OpenLayers는 웹 브라우저에서 지도나 GIS 서비스를 제공하기 위한 JavaScript Library다. GIS 라이브러리 중 진입 장벽은 가장 높지만, 그에 상응하는 강력한 기능을 제공한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/05/gis-guide-for-programmer-5</link>
					<guid isPermaLink="true">undefined/projects/2022/03/05/gis-guide-for-programmer-5</guid>
					<category>GIS</category>
<category>OpenLayers</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 4. QGIS 체험하기</title>
					<description>이전에 대부분의 공간정보 데이터는 SHP를 기본으로 제공한다고 언급했었다. 그런데 문제는 이 SHP. 어떻게 여는지 모르겠다. GeoJSON이나 CSV 같은 텍스트 기반 데이터는 어찌됐든 열어서 검증을 해볼 수 있지만, SHP는 그게 안 된다는 말이다. 때문에 SHP를 열어서 조작할 수 있는 일종의 툴이 필요한데, 이미 여러 툴이 있으니 크게 문제되진 않는다. 가장 대표적인 툴은 두 가지가 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/05/gis-guide-for-programmer-4</link>
					<guid isPermaLink="true">undefined/projects/2022/03/05/gis-guide-for-programmer-4</guid>
					<category>GIS</category>
<category>QGIS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 3. 좌표계</title>
					<description>1986년, NASA에서 우주왕복선 챌린저호를 발사했으나, 발사한 지 약 73초만에 폭발한 안타까운 사고가 있었다. 원인은 어이없게도 단위 실수. 국제적인 표준은 미터법임에도 불구하고, 미국을 포함한 몇몇 국가는 인치법을 표준으로 사용하고 있었다. 이러한 상황에서 우주선의 설계도 중 미터법으로 표기된 부품 O Ring을 인치법으로 제작했기 때문에 일어난 사고였다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/04/gis-guide-for-programmer-3</link>
					<guid isPermaLink="true">undefined/projects/2022/03/04/gis-guide-for-programmer-3</guid>
					<category>GIS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 2. GIS랑 인사하기</title>
					<description>여러분들이 GIS를 처음 접했다면, 한 번 물어보고 싶다. 공간이란 뭘로 이루어져 있을까? 한 번 생각해보자. 다양한 답이 나왔을 것이라 생각한다. 무슨 답인지 내가 직접 못 듣는다는 게 좀 아쉽지만. 아마 대부분 추상적인 답이 나왔을 것이라 생각한다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/03/gis-guide-for-programmer-2</link>
					<guid isPermaLink="true">undefined/projects/2022/03/03/gis-guide-for-programmer-2</guid>
					<category>GIS</category>
				</item>
			

				<item>
					<title>OpenLayers를 여행하는 개발자를 위한 안내서 - 1. 머릿말</title>
					<description>공간정보, 지리쪽에 업이 있거나 관심있는 사람이 아니라면, GIS라는 단어는 다소 생소한 단어다. 혹자는 GIS가 아니라 GPS 아니냐고 반문하기도 한다. GPS(Global Positioning System)는 3개 이상의 위성 신호를 통해 수신기의 위치를 계산할 수 있는 기법이다. GPS라 하면 흔히 네비게이션을 연상하기 쉽지만, 알게 모르게 GPS는 일상생활에 깊게 녹아들어 있다. 네비게이션, 스마트폰 지도, 배달 플랫폼의 라이더 위치 추적, 드론 군집비행, 군사학 등. GPS는 다양한 영역에 스며들어 그 이로움을 전해준다. 우리는 GPS를 통해, 공간정보라는 디지털 시대에서 공간을 디지털화한다는 것이 어떤 능력을 발휘하는 지 엿볼 수 있다. GIS(Global Information System)는 GPS와 같이 공간정보를 다루는 모든 기술에 대한 포괄적인 기술을 의미한다. GPS 뿐만 아니라, 지도, 좌표계와 같이 공간과 엮이는 모든 기술은 GIS라는 커다란 범주로 묶을 수 있다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2022/03/03/gis-guide-for-programmer-1</link>
					<guid isPermaLink="true">undefined/projects/2022/03/03/gis-guide-for-programmer-1</guid>
					<category>GIS</category>
				</item>
			

				<item>
					<title>[React] 𝝅번째 알파카의 개발 낙서장 프로젝트</title>
					<description>어쩌다 독학하게 된 React를 유의미하게 써먹기위해 직접 만든 개발 블로그. 정적 블로그를 위한 NextJS를 활용하여 개발했다. Typescript를 사용하고 있으며, SCSS를 통한 CSS-in-CSS 방식으로 디자인을 렌더링한다. 라즈베리파이를 구매하면서 서버 구축을 위해 같이 구입한 도메인 itcode.dev를 적용했다. blog.itcode.dev로, 서브도메인 blog를 사용했다.</description>
					<pubDate>2025-09-06T15:05:26.486Z</pubDate>
					<link>undefined/projects/2021/10/26/github-react-blog</link>
					<guid isPermaLink="true">undefined/projects/2021/10/26/github-react-blog</guid>
					<category>NextJS</category>
<category>React</category>
<category>Typescript</category>
<category>SCSS</category>
				</item>
			
			</channel>
		</rss>
		