<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>mgyo</title>
    <link>https://mgyo.tistory.com/</link>
    <description>산업경영공학도 소프트웨어 엔지니어 mgyo의 블로그!</description>
    <language>ko</language>
    <pubDate>Mon, 6 Jul 2026 14:58:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>김민교</managingEditor>
    <image>
      <title>mgyo</title>
      <url>https://tistory1.daumcdn.net/tistory/4833766/attach/6b2094fbdc474c0c8125b1d0602fa228</url>
      <link>https://mgyo.tistory.com</link>
    </image>
    <item>
      <title>온보딩의 마무리 그리고 새로운 시작(NestJS &amp;amp; Prisma)</title>
      <link>https://mgyo.tistory.com/835</link>
      <description>목차

주제 선정
요구 사항
참고한 문서
DB Schema
Project Structure
API
추가로 공유할 만한 내용
마무리&amp;nbsp;

주제 선정
사내 노션을 확인하던 중, 도서 관리 문서를 발견했고, 해당 문서를 서비스화 해서 DB 로 도서 대여 히스토리 등을 관리하면 좋겠다는 생각이 들었습니다.&amp;nbsp;
&amp;nbsp;
요구사항
사내 노션의 도서 관리 문서에 존재하는 피쳐들을 그대로 이관할 수 있도록 구현하는 것을 최우선 순위로 하였습니다.

..</description>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/835</guid>
      <comments>https://mgyo.tistory.com/835#entry835comment</comments>
      <pubDate>Mon, 4 Nov 2024 02:53:37 +0900</pubDate>
    </item>
    <item>
      <title>Legacy를 이전할건데, 테스트 코드를 작성하자고?</title>
      <link>https://mgyo.tistory.com/834</link>
      <description>제목을 조금 자극적으로 써봤습니다.여러분은 테스트코드란 무엇이라고 생각하시나요?
제가 소프트웨어 엔지니어로 일을 시작하고나서, 저에게 가장 큰 깨달음을 준건 &quot;테스트코드&quot; 입니다.
대부분의 회사에 그렇듯 제가 재직중인 회사에도 Legacy 프로젝트가 존재합니다.여전히 Core 한 로직들이 Legacy 프로젝트에서 동작중이죠.&amp;nbsp;
최근에 작성된 프로젝트들의 경우에는 테스트코드 커버리지가 꽤 높습니다.하지만, Legacy 프로젝트의 경우 테스트코드 ..</description>
      <category>Architecture</category>
      <category>testcode</category>
      <category>테스트코드</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/834</guid>
      <comments>https://mgyo.tistory.com/834#entry834comment</comments>
      <pubDate>Tue, 6 Aug 2024 02:35:43 +0900</pubDate>
    </item>
    <item>
      <title>너 CORS 설정 해줬어? (Cross-Origin Resource Sharing)</title>
      <link>https://mgyo.tistory.com/833</link>
      <description>필자는 CORS 개념을 얼핏 들어보기만 했을뿐, 잘 몰랐엇다.친구가 우연히 한 질문을 이해조차 못하는 나였고, 곧바로 CORS에 대해서 공부했다.  이번 글에서는 CORS 개념을 이해하고 정리한다.&amp;nbsp;&amp;nbsp;&amp;nbsp;CORS (Cross-Origin Resource Sharing)정의우선, 위키피디아에 CROS를 검색해보았다.CORS는, 웹 페이지 상의 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있도록 허용하는..</description>
      <category>HTTP</category>
      <category>Access-Control-Allow-Origin</category>
      <category>CORS</category>
      <category>Cross-Origin Resource Sharing</category>
      <category>Sop</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/833</guid>
      <comments>https://mgyo.tistory.com/833#entry833comment</comments>
      <pubDate>Thu, 22 Jun 2023 15:56:09 +0900</pubDate>
    </item>
    <item>
      <title>Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation)</title>
      <link>https://mgyo.tistory.com/832</link>
      <description>Redis를 이용한 토큰 탈취 대응 시나리오(feat. Refresh Token Rotation)
&amp;nbsp;
문제 상황
1. 유효기간이 긴 Refresh Token이 탈취된 경우-&amp;gt; 이 경우는 간단히 Refresh Token Rotation을 떠올릴 수 있다. 하지만 아래의 문제까지 커버가 가능할까?2. 탈취한 Refresh Token으로 정상 유저보다 먼저 Access Token을 재발급 받는 경우-&amp;gt; Refresh Token Rotati..</description>
      <category>Authentication &amp;amp; Authorization</category>
      <category>redis</category>
      <category>Refresh Token Rotation</category>
      <category>RTR</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/832</guid>
      <comments>https://mgyo.tistory.com/832#entry832comment</comments>
      <pubDate>Mon, 19 Jun 2023 20:47:52 +0900</pubDate>
    </item>
    <item>
      <title>Redis를 사용하는 이유 (feat. Refresh Token)</title>
      <link>https://mgyo.tistory.com/831</link>
      <description>왜 Redis를 사용하는가?
Redis는 key-value 쌍으로 데이터를 관리할 수 있는 데이터 스토리지이다.
데이터베이스라고 표현하지 않은 이유는 기본적으로 Redis는 In-Memory 로 데이터를 관리하므로, 저장된 데이터가 영속적이지 않기 때문이다.Redis는 Remote Dictionary Server의 약자로 키(Key) - 값(Value) 쌍의 해시 맵과 같은 구조를 가진&amp;nbsp;비관계형(NoSQL) 데이터베이스 관리 시스템(DBMS)이..</description>
      <category>Authentication &amp;amp; Authorization</category>
      <category>redis</category>
      <category>Refresh Token</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/831</guid>
      <comments>https://mgyo.tistory.com/831#entry831comment</comments>
      <pubDate>Sun, 18 Jun 2023 21:11:47 +0900</pubDate>
    </item>
    <item>
      <title>Access Token의 문제점과 Refresh Token</title>
      <link>https://mgyo.tistory.com/830</link>
      <description>Access Token의 문제점
&amp;nbsp;
사용자의 잦은 로그아웃 경험
다음과 같이 가정하자.A라는 서비스가 있다.A라는 서비스에서는 Refresh Token을 사용중이지 않다. Access Token만을 사용하여 사용자를 인증/인가 한다.A서비스의 Access Token 유효기한은 24시간, 즉 하루다.로그인을 한 이후 하루가 지나면, A 서비스의 사용자는 A 서비스에서 로그아웃 되는 경험을 하게 될 것이다.
그렇다고 Access Token의 유효 ..</description>
      <category>Authentication &amp;amp; Authorization</category>
      <category>access token</category>
      <category>Refresh Token</category>
      <category>Refresh Token Rotation</category>
      <category>RTR</category>
      <category>리프레쉬 토큰</category>
      <category>엑세스 토큰</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/830</guid>
      <comments>https://mgyo.tistory.com/830#entry830comment</comments>
      <pubDate>Sat, 17 Jun 2023 14:22:29 +0900</pubDate>
    </item>
    <item>
      <title>다중 서버 환경에서의 세션 불일치 문제와 해결 방법</title>
      <link>https://mgyo.tistory.com/829</link>
      <description>다중 서버 환경에서의 세션 불일치 문제와 해결 방법
세션 불일치 문제는 단일 서버 환경에서는 발생하지 않으므로 따로 걱정하지 않아도 된다.하지만, 최근 웹 서비스는 대부분 수직 확장(Scale Up)이 아닌 수평 확장(Scale out) 으로 서버를 확장하기 때문에 일반적으로 다중 서버 환경일 것 이다. 이런 다중 서버 환경에서는 세션 불일치 문제가 발생할 수 있다. 기본적으로 세션은 서버의 메모리(RAM)에 저장되기 때문이다.
예를 들어, 우리가 서버..</description>
      <category>Authentication &amp;amp; Authorization</category>
      <category>memcached</category>
      <category>redis</category>
      <category>session clustering</category>
      <category>session Storage</category>
      <category>Sticky Session</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/829</guid>
      <comments>https://mgyo.tistory.com/829#entry829comment</comments>
      <pubDate>Fri, 16 Jun 2023 20:13:02 +0900</pubDate>
    </item>
    <item>
      <title>세션 기반 인증과 토큰 기반 인증(feat. Authentication 과 Authorization)</title>
      <link>https://mgyo.tistory.com/828</link>
      <description>인증과 인가
세션기반 인가와 토큰기반 인가에 대해 알아보기 이전에 먼저, 인증과 인가가 무엇인지 부터 알아야 할 필요가 있다.인증과 인가를 같거나 비슷한 개념이라고 생각하는 사람들이 많을텐데, 엄밀하게는 서로 다른 개념이다. 인증과 인가는 요약하자면 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다.
인증(Authentication)
인증은 쉽게 말하자면, 로그인 이다. 클라이언트가 자기자신이라고 주장하고 있는 사용자가 맞는지를 검증..</description>
      <category>Authentication &amp;amp; Authorization</category>
      <category>SESSION</category>
      <category>Token</category>
      <category>세션</category>
      <category>토큰</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/828</guid>
      <comments>https://mgyo.tistory.com/828#entry828comment</comments>
      <pubDate>Fri, 16 Jun 2023 19:29:51 +0900</pubDate>
    </item>
    <item>
      <title>쿠키와 세션 (feat. HTTP의 Connectionless 와 Stateless)</title>
      <link>https://mgyo.tistory.com/827</link>
      <description>HTTP의 Connectionless와 Stateless
HTTP는 요청과 응답을 한번 주고받으면 바로 연결을 끊어버리는 특성을 가지고 있다. 그리고 다음 요청을 하기 위해 다시 연결을 맺어야 한다. 이를 HTTP의 Connectionless(비연결성) 라고 한다.
또한 HTTP 프로토콜은 요청과 응답을 교환하는 동안 상태(Status)를 저장하지 않는다. 따라서 HTTP 레벨에서는 이전에 보냈던 request나 response를 기억하지 못한다. 즉,..</description>
      <category>Authentication &amp;amp; Authorization</category>
      <category>Connectionless</category>
      <category>Cookie</category>
      <category>SESSION</category>
      <category>stateless</category>
      <category>세션</category>
      <category>쿠키</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/827</guid>
      <comments>https://mgyo.tistory.com/827#entry827comment</comments>
      <pubDate>Fri, 16 Jun 2023 12:44:16 +0900</pubDate>
    </item>
    <item>
      <title>JWT 직접 만들어보며 이해하기</title>
      <link>https://mgyo.tistory.com/826</link>
      <description>JWT 직접 만들어보며 이해하기
본 포스팅에서는 JWT의 정의, 구조, 원리 등을 알아보며 실습을 통해 '라이브러리 없이' 직접 JWT를 생성하고 해독해본다.
&amp;nbsp;

1. &amp;nbsp;JWT에 대하여
1-1. JWT의 정의
Json Web Token의 줄임말이다. RFC 7519 에 명세되어 있는 국제 표준으로써, 통신 양자간의 정보를 JSON 형식을 사용하여 안전하게 전송하기 위한 방법이다. JWT는 정보가 토큰 자체에 포함된 (Self-Cont..</description>
      <category>Authentication &amp;amp; Authorization</category>
      <category>JSON Web Token</category>
      <category>JWT</category>
      <category>참고-hudi.blog</category>
      <category>클레임 기반 토큰</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/826</guid>
      <comments>https://mgyo.tistory.com/826#entry826comment</comments>
      <pubDate>Thu, 15 Jun 2023 14:43:01 +0900</pubDate>
    </item>
    <item>
      <title>Blocking과 Non-Blocking, Sync와 Async 그만 헷갈리기</title>
      <link>https://mgyo.tistory.com/825</link>
      <description>Blocking과&amp;nbsp;Non-Blocking,&amp;nbsp;Sync와&amp;nbsp;Async&amp;nbsp;그만&amp;nbsp;헷갈리기
&amp;nbsp;
OS를 공부하면서 Blocking과 Non-Blocking, Sync와 Async 개념을 이해했었는데, 다시 떠올려보니 너무 헷갈렸다.특히 둘을 섞어서 생각해보면 더 혼란스러워졌다.&amp;nbsp;헷갈리는 것을 찾아보다가, 우연히 보게 된 좋은 예시가 있어서 정리해두고자 한다.

사무실에 있다. 복합기를 사용해서 스캔을 뜨고..</description>
      <category>Operating System</category>
      <category>async</category>
      <category>Blocking</category>
      <category>Non-blocking</category>
      <category>Sync</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/825</guid>
      <comments>https://mgyo.tistory.com/825#entry825comment</comments>
      <pubDate>Mon, 12 Jun 2023 18:41:17 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 9372번 상근이의 여행 (feat. 그래프 이론, 최소 신장 트리)</title>
      <link>https://mgyo.tistory.com/824</link>
      <description>https://www.acmicpc.net/problem/9372

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

-&amp;nbsp;문제&amp;nbsp;요약N개의&amp;nbsp;국가를&amp;nbsp;여행하려고&amp;nbsp;함.비행&amp;nbsp;스케줄이&amp;nbsp;주어졌을&amp;nbsp;때,&amp;nbsp;가장&amp;nbsp;적은&amp;nbsp;종류의&amp;nbsp;비행기를&amp;nbsp;탈&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;하는&amp;nbsp;프로그램을&amp;nbsp;작성할&amp;nbsp;것.한&amp;nbsp;..</description>
      <category>Problem Solving</category>
      <category>그래프 이론</category>
      <category>백준 9372번</category>
      <category>백준 상근이의 여행</category>
      <category>최소 신장 트리</category>
      <category>트리</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/824</guid>
      <comments>https://mgyo.tistory.com/824#entry824comment</comments>
      <pubDate>Tue, 11 Apr 2023 12:34:56 +0900</pubDate>
    </item>
    <item>
      <title>JPA 성능 최적화 (feat. @SequenceGenerator allocationSize)</title>
      <link>https://mgyo.tistory.com/823</link>
      <description>JPA&amp;nbsp;성능&amp;nbsp;최적화&amp;nbsp;(feat.&amp;nbsp;@SequenceGenerator&amp;nbsp;allocationSize)
JPA의&amp;nbsp;기본 키 매핑을 들여다 보던 중, SEQUENCE 전략에 대해서 이해한 내용을 정리하려고 한다.Persistence Context에 대한 개념을 충분히 이해하고 있다는 가정하에 정리할 것이다.
&amp;nbsp;
우선, 기본키 매핑 전략으로 SEQUENCE를 사용하려면 @SequenceGenerator 를..</description>
      <category>Spring Data</category>
      <category>@SequenceGenerator</category>
      <category>allocationSize</category>
      <category>JPA</category>
      <category>persistencecontext</category>
      <category>primarykey</category>
      <category>sequence</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/823</guid>
      <comments>https://mgyo.tistory.com/823#entry823comment</comments>
      <pubDate>Sun, 9 Apr 2023 14:47:51 +0900</pubDate>
    </item>
    <item>
      <title>Trade-Off(구조의 안정성 vs 단순한 개발의 편리성)</title>
      <link>https://mgyo.tistory.com/822</link>
      <description>Trade-Off(구조의&amp;nbsp;안정성&amp;nbsp;vs&amp;nbsp;단순한&amp;nbsp;개발의&amp;nbsp;편리성)
스프링 데이터 JPA 예제를 수행한 것을 다시 한번 돌아보며, 느낀 것들을 기록한다.
우선, DI, OCP를 지키기 위해 어댑터를 도입한 코드의 클래스 의존 관계와, 런타임 객체 의존 관계를 살펴보자.

중간에서 JpaItemRepositoryV2가 어댑터 역할을 해준 덕분에 ItemService가 사용하는 ItemRepository 인터페이스를 그..</description>
      <category>Architecture</category>
      <category>trade-off</category>
      <category>링크</category>
      <category>트레이드 오프</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/822</guid>
      <comments>https://mgyo.tistory.com/822#entry822comment</comments>
      <pubDate>Fri, 7 Apr 2023 13:04:04 +0900</pubDate>
    </item>
    <item>
      <title>Querydsl을 이용한 리팩토링(feat. 쿼리 조각화)</title>
      <link>https://mgyo.tistory.com/821</link>
      <description>Querydsl을 이용한 리팩토링 (feat. 쿼리 조각화)
Querydsl을 공부하다가, 예제코드를 보고, 당연한 것임에도 정말 좋은 방법이다 라는 생각이 들어서 글을 남긴다.
&amp;nbsp;
Before Refactoring Code

리팩토링을 하기 전의 코드다.Querydsl을 이용하여 동적쿼리를 작성한 코드다.

만약 검색 조건으로 들어온&amp;nbsp;itemName이 like검색을 수행하고, 없으면 like 검색을 하지 않고,&amp;nbsp;
만약 검색 ..</description>
      <category>Architecture</category>
      <category>querydsl</category>
      <category>Refactoring</category>
      <category>리팩토링</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/821</guid>
      <comments>https://mgyo.tistory.com/821#entry821comment</comments>
      <pubDate>Thu, 6 Apr 2023 20:29:03 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 20040번 사이클 게임 (feat. 자료 구조, 유니온 파인드)</title>
      <link>https://mgyo.tistory.com/815</link>
      <description>https://www.acmicpc.net/problem/20040

&amp;nbsp;
문제 분석

첫 번째 단계 (문제 요약 및 조건 파악)

사이클&amp;nbsp;게임은&amp;nbsp;두&amp;nbsp;플레이어가&amp;nbsp;차례대로&amp;nbsp;돌아가며&amp;nbsp;진행하는&amp;nbsp;게임.선&amp;nbsp;플레이어가&amp;nbsp;홀수&amp;nbsp;번째&amp;nbsp;차례&amp;nbsp;진행후&amp;nbsp;플레이어가&amp;nbsp;짝수&amp;nbsp;번째&amp;nbsp;차례&amp;nbsp;진행게임&amp;nbsp;시작&amp;nbsp;시&amp;nb..</description>
      <category>Problem Solving</category>
      <category>disjoint set</category>
      <category>백준 20040번</category>
      <category>백준 사이클 게임</category>
      <category>유니온 파인드</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/815</guid>
      <comments>https://mgyo.tistory.com/815#entry815comment</comments>
      <pubDate>Tue, 4 Apr 2023 11:52:04 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 11286번 절댓값 힙 (feat. 자료 구조, 우선순위 큐)</title>
      <link>https://mgyo.tistory.com/814</link>
      <description>https://www.acmicpc.net/problem/11286

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

절대값&amp;nbsp;힙은&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;연산을&amp;nbsp;지원하는&amp;nbsp;자료구조다.1.&amp;nbsp;배열에&amp;nbsp;정수&amp;nbsp;x(x&amp;nbsp;!=&amp;nbsp;0)을&amp;nbsp;넣는다.2.&amp;nbsp;배열에서&amp;nbsp;절댓값이&amp;nbsp;가장&amp;nbsp;작은&amp;nbsp;값을&amp;nbsp;출력하고,&amp;nbsp;그..</description>
      <category>Problem Solving</category>
      <category>heapq</category>
      <category>백준 11286번</category>
      <category>백준 절댓값 힙</category>
      <category>우선순위 큐</category>
      <category>최소힙</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/814</guid>
      <comments>https://mgyo.tistory.com/814#entry814comment</comments>
      <pubDate>Sun, 2 Apr 2023 14:29:41 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1927번 최소 힙 (feat. 자료 구조, 우선순위 큐)</title>
      <link>https://mgyo.tistory.com/812</link>
      <description>https://www.acmicpc.net/problem/1927

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

-&amp;nbsp;문제&amp;nbsp;요약최소&amp;nbsp;힙을&amp;nbsp;이용하여&amp;nbsp;다음&amp;nbsp;연산을&amp;nbsp;지원하는&amp;nbsp;프로그램을&amp;nbsp;작성할&amp;nbsp;것.1.&amp;nbsp;배열에&amp;nbsp;자연수&amp;nbsp;x를&amp;nbsp;넣는다.2.&amp;nbsp;배열에서&amp;nbsp;가장&amp;nbsp;작은&amp;nbsp;값을&amp;nbsp;출력하고,&amp;n..</description>
      <category>Problem Solving</category>
      <category>heapq</category>
      <category>백준 1927번</category>
      <category>백준 최소 힙</category>
      <category>우선순위 큐</category>
      <category>자료구조</category>
      <category>최소힙</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/812</guid>
      <comments>https://mgyo.tistory.com/812#entry812comment</comments>
      <pubDate>Sat, 1 Apr 2023 15:49:27 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 11279번 최대 힙 (feat. 자료 구조, 우선순위 큐)</title>
      <link>https://mgyo.tistory.com/811</link>
      <description>https://www.acmicpc.net/problem/11279

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

자료구조&amp;nbsp;중&amp;nbsp;최대&amp;nbsp;힙이&amp;nbsp;있다.최대&amp;nbsp;힙을&amp;nbsp;이용하여&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;연산을&amp;nbsp;지원하는&amp;nbsp;프로그램을&amp;nbsp;작성할&amp;nbsp;것.1.&amp;nbsp;배열에&amp;nbsp;자연수&amp;nbsp;X를&amp;nbsp;넣는다.2.&amp;nbsp;배열에서&amp;nbsp;가장..</description>
      <category>Problem Solving</category>
      <category>백준 11279번</category>
      <category>백준 우선순위 큐</category>
      <category>우선순위 큐</category>
      <category>힙</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/811</guid>
      <comments>https://mgyo.tistory.com/811#entry811comment</comments>
      <pubDate>Fri, 31 Mar 2023 13:53:02 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1516번 게임 개발 (feat. 위상 정렬, 다이나믹 프로그래밍)</title>
      <link>https://mgyo.tistory.com/810</link>
      <description>https://www.acmicpc.net/problem/1516

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

-&amp;nbsp;문제&amp;nbsp;요약특정&amp;nbsp;건물을&amp;nbsp;짓기&amp;nbsp;전에&amp;nbsp;선행되어야&amp;nbsp;하는&amp;nbsp;건물이&amp;nbsp;존재.모든&amp;nbsp;건물을&amp;nbsp;짓는데&amp;nbsp;걸리는&amp;nbsp;최소의&amp;nbsp;시간을&amp;nbsp;구해라.-&amp;nbsp;입력첫째&amp;nbsp;줄에&amp;nbsp;건물의&amp;nbsp;종류&amp;nbsp..</description>
      <category>Problem Solving</category>
      <category>다이나믹 프로그래밍</category>
      <category>백준 1516번</category>
      <category>백준 게임 개발</category>
      <category>위상 정렬</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/810</guid>
      <comments>https://mgyo.tistory.com/810#entry810comment</comments>
      <pubDate>Thu, 30 Mar 2023 23:28:15 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 14567번 선수과목 (feat. 위상 정렬)</title>
      <link>https://mgyo.tistory.com/809</link>
      <description>https://www.acmicpc.net/problem/14567

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

어떤&amp;nbsp;과목들은&amp;nbsp;선수과목이&amp;nbsp;있음.선수과목&amp;nbsp;조건을&amp;nbsp;반드시&amp;nbsp;지키려고함.1.&amp;nbsp;한&amp;nbsp;학기에&amp;nbsp;들을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;과목&amp;nbsp;수에는&amp;nbsp;제한이&amp;nbsp;없음.2.&amp;nbsp;모든&amp;nbsp;과목은&amp;nbsp;매&amp;nbsp;학기&amp;n..</description>
      <category>Problem Solving</category>
      <category>Topology Sort</category>
      <category>백준 14567번</category>
      <category>백준 선수문제</category>
      <category>위상정렬</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/809</guid>
      <comments>https://mgyo.tistory.com/809#entry809comment</comments>
      <pubDate>Thu, 30 Mar 2023 10:35:08 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2623번 음악프로그램(feat. 위상 정렬)</title>
      <link>https://mgyo.tistory.com/808</link>
      <description>https://www.acmicpc.net/problem/2623

&amp;nbsp;

2623번: 음악프로그램
첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는&amp;nbsp;번호 1, 2,&amp;hellip;,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한
www.acmicpc.net



&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

가수&amp;nbsp..</description>
      <category>Problem Solving</category>
      <category>topology</category>
      <category>백준 2623번</category>
      <category>백준 음악프로그램</category>
      <category>위상정렬</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/808</guid>
      <comments>https://mgyo.tistory.com/808#entry808comment</comments>
      <pubDate>Wed, 29 Mar 2023 13:52:42 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1766번 문제집(feat. 위상 정렬, heapq)</title>
      <link>https://mgyo.tistory.com/807</link>
      <description>https://www.acmicpc.net/problem/1766

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

1번부터&amp;nbsp;N번까지&amp;nbsp;총&amp;nbsp;N개의&amp;nbsp;문제로&amp;nbsp;되어&amp;nbsp;있는&amp;nbsp;문제집을&amp;nbsp;풀려고함.문제&amp;nbsp;난이도는&amp;nbsp;순서대로&amp;nbsp;출제되어&amp;nbsp;있음.&amp;nbsp;1번문제가&amp;nbsp;가장&amp;nbsp;쉬운&amp;nbsp;문제,&amp;nbsp;N번&amp;nbsp;문제가&amp;nbsp;가장&amp;..</description>
      <category>Problem Solving</category>
      <category>heapq</category>
      <category>백준 1766번</category>
      <category>백준 문제집</category>
      <category>위상정렬</category>
      <category>최소힙</category>
      <category>힙정렬</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/807</guid>
      <comments>https://mgyo.tistory.com/807#entry807comment</comments>
      <pubDate>Tue, 28 Mar 2023 12:37:39 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2252번 줄 세우기(feat. 위상 정렬)</title>
      <link>https://mgyo.tistory.com/806</link>
      <description>https://www.acmicpc.net/problem/2252

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

N명의&amp;nbsp;학생들을&amp;nbsp;키&amp;nbsp;순서대로&amp;nbsp;줄을&amp;nbsp;세우려고&amp;nbsp;함.두&amp;nbsp;학생의&amp;nbsp;키를&amp;nbsp;비교한&amp;nbsp;데이터가&amp;nbsp;있을&amp;nbsp;때,이&amp;nbsp;데이터를&amp;nbsp;이용하여&amp;nbsp;줄을&amp;nbsp;세워야&amp;nbsp;한다.-입력첫째&amp;nbsp;줄에&amp;nbsp;N(1&amp;..</description>
      <category>Problem Solving</category>
      <category>Topological sort</category>
      <category>Topology Sort</category>
      <category>백준 2252번</category>
      <category>백준 줄세우기</category>
      <category>위상정렬</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/806</guid>
      <comments>https://mgyo.tistory.com/806#entry806comment</comments>
      <pubDate>Mon, 27 Mar 2023 20:31:10 +0900</pubDate>
    </item>
    <item>
      <title>11. [Algorithm] 위상 정렬 (그래프 이론)</title>
      <link>https://mgyo.tistory.com/805</link>
      <description>위상 정렬 (Topological Sorting) 


정렬 알고리즘의 일종으로, 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘이다.
조금 더 이론적인 설명은,&amp;nbsp;사이클이 없는 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는 것'&amp;nbsp;을 의미한다.

&amp;nbsp;
예시를 통해 확실하게 이해해보도록 하자.

&amp;nbsp;
그림과 같이 총 3개의 과목이 있다고 가정하자.세 과목을 모두 듣..</description>
      <category>Algorithm</category>
      <category>deque</category>
      <category>Topological sort</category>
      <category>Topology Sort</category>
      <category>위상 정렬</category>
      <category>큐</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/805</guid>
      <comments>https://mgyo.tistory.com/805#entry805comment</comments>
      <pubDate>Mon, 27 Mar 2023 19:52:52 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1197번 최소 스패닝 트리(feat. 최소 신장 트리, 크루스칼 알고리즘)</title>
      <link>https://mgyo.tistory.com/804</link>
      <description>https://www.acmicpc.net/problem/1197

&amp;nbsp;
문제 분석

첫 번째 단계 (문제 요약 및 조건 파악)

그래프가&amp;nbsp;주어졌을&amp;nbsp;때,&amp;nbsp;그&amp;nbsp;그래프의&amp;nbsp;최소&amp;nbsp;신장&amp;nbsp;트리&amp;nbsp;를&amp;nbsp;구하는&amp;nbsp;프로그램을&amp;nbsp;작성하시오.최소&amp;nbsp;신장&amp;nbsp;트리(MST)는&amp;nbsp;주어진&amp;nbsp;그래프의&amp;nbsp;모든&amp;nbsp;정점들을&amp;nbsp;연결하는&amp;nbsp..</description>
      <category>Problem Solving</category>
      <category>MinimumSpanningTree</category>
      <category>MST</category>
      <category>백준 1197번</category>
      <category>최소 신장 트리</category>
      <category>크루스칼 알고리즘</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/804</guid>
      <comments>https://mgyo.tistory.com/804#entry804comment</comments>
      <pubDate>Mon, 27 Mar 2023 18:32:56 +0900</pubDate>
    </item>
    <item>
      <title>10. [Algorithm] 크루스칼 알고리즘 (그래프 이론)</title>
      <link>https://mgyo.tistory.com/803</link>
      <description>크루스칼 알고리즘 (Kruskal Algorithm)

&amp;nbsp;
신장 트리 중에서 최소 비용으로 만들 수 있는 신장 트리를 찾는 알고리즘을&amp;nbsp;'최소 신장 트리 알고리즘'&amp;nbsp;이라고 하는데,대표적인&amp;nbsp;최소 신장 트리 알고리즘으로는 크루스칼 알고리즘&amp;nbsp;이 있다.
크루스칼 알고리즘&amp;nbsp;을 사용하면 가장 적은 비용으로 모든 노드를 연결할 수 있다.

크루스칼 알고리즘은 대표적인&amp;nbsp;최소 신장 트리 알고리즘&amp;nbsp;이다..</description>
      <category>Algorithm</category>
      <category>kruskal</category>
      <category>Minimum spanning tree</category>
      <category>MST</category>
      <category>신장 트리</category>
      <category>최소 신장 트리</category>
      <category>크루스칼 알고리즘</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/803</guid>
      <comments>https://mgyo.tistory.com/803#entry803comment</comments>
      <pubDate>Mon, 27 Mar 2023 17:49:13 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 4195번 친구 네트워크(feat. 유니온 파인드, 문자열 입력, 딕셔너리)</title>
      <link>https://mgyo.tistory.com/802</link>
      <description>https://www.acmicpc.net/problem/4195

&amp;nbsp;
&amp;nbsp;
문제 분석

첫 번째 단계 (문제 요약 및 조건 파악)

어떤&amp;nbsp;사이트의&amp;nbsp;친구&amp;nbsp;관계가&amp;nbsp;생긴&amp;nbsp;순서대로&amp;nbsp;주어졌을&amp;nbsp;때,&amp;nbsp;두&amp;nbsp;사람의&amp;nbsp;친구&amp;nbsp;네트워크에&amp;nbsp;몇&amp;nbsp;명이&amp;nbsp;있는지&amp;nbsp;구하는&amp;nbsp;프로그램을&amp;nbsp;작성하시오.이때,&amp;nbsp;친구&amp;nbs..</description>
      <category>Problem Solving</category>
      <category>딕셔너리</category>
      <category>문자열 입력</category>
      <category>백준 4195번</category>
      <category>백준 친구 네트워크</category>
      <category>유니온 파인드</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/802</guid>
      <comments>https://mgyo.tistory.com/802#entry802comment</comments>
      <pubDate>Mon, 27 Mar 2023 16:22:54 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1976번 여행 가자(feat. 유니온 파인드)</title>
      <link>https://mgyo.tistory.com/801</link>
      <description>https://www.acmicpc.net/problem/1976

&amp;nbsp;
문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

N개의&amp;nbsp;도시가&amp;nbsp;있다.임의의&amp;nbsp;두&amp;nbsp;도시&amp;nbsp;사이에&amp;nbsp;길이&amp;nbsp;있을&amp;nbsp;수도&amp;nbsp;있고,&amp;nbsp;없을&amp;nbsp;수도&amp;nbsp;있다.여행일정이&amp;nbsp;주어졌을&amp;nbsp;때,&amp;nbsp;이&amp;nbsp;여행&amp;nbsp;경로가&amp;nbsp;가능한&amp;nbsp;것이지&amp;nbsp;알아..</description>
      <category>Problem Solving</category>
      <category>set</category>
      <category>백준 1976번</category>
      <category>여행 가자</category>
      <category>유니온 파인드</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/801</guid>
      <comments>https://mgyo.tistory.com/801#entry801comment</comments>
      <pubDate>Sun, 26 Mar 2023 16:01:53 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1717번 집합의 표현(feat. 유니온 파인드)</title>
      <link>https://mgyo.tistory.com/800</link>
      <description>https://www.acmicpc.net/problem/1717

문제 분석

첫 번째 단계 (문제 요약 및 조건 파악)

초기화&amp;nbsp;n&amp;nbsp;+&amp;nbsp;1개의&amp;nbsp;집합&amp;nbsp;{0},&amp;nbsp;{1},&amp;nbsp;...,&amp;nbsp;{n}이&amp;nbsp;있다.이&amp;nbsp;집합에&amp;nbsp;합집합&amp;nbsp;연산과,&amp;nbsp;두&amp;nbsp;원소가&amp;nbsp;같은&amp;nbsp;집합에&amp;nbsp;포함되어&amp;nbsp;있는지를&amp;nbsp;확인하는&amp;nbsp;연산을&amp;..</description>
      <category>Problem Solving</category>
      <category>백준 1717번</category>
      <category>유니온 파인드</category>
      <category>집합의 표현</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/800</guid>
      <comments>https://mgyo.tistory.com/800#entry800comment</comments>
      <pubDate>Sun, 26 Mar 2023 14:22:04 +0900</pubDate>
    </item>
    <item>
      <title>9. [Algorithm] Union-Find 알고리즘 (서로소 집합 Disjoint-Set)</title>
      <link>https://mgyo.tistory.com/799</link>
      <description>Union-Find

Disjoint-Set을 구현할 때 사용하는 알고리즘

집합을 구현하는데 비트 벡터, 배열, 연결리스트를 사용할 수 있으나, 가장 효율적인 트리 구조를 이용하여 구현함


크루스칼 알고리즘에서 그래프의 최소 신장 트리(MST: Minimum Spanning Tree)를 찾는데 활용된다. (정점 연결 및 사이클 형성 여부 확인)
초기에 {0}, {1}, {2}, ... {n}이 각각 n + 1 개의 집합을 이루고 있다. 여기에 합집합..</description>
      <category>Algorithm</category>
      <category>Path Compression</category>
      <category>Union by rank</category>
      <category>Union-Find</category>
      <category>Union-Find 알고리즘</category>
      <category>서로소 집합</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/799</guid>
      <comments>https://mgyo.tistory.com/799#entry799comment</comments>
      <pubDate>Fri, 24 Mar 2023 21:02:16 +0900</pubDate>
    </item>
    <item>
      <title>8. [Algorithm] 플로이드 워셜 알고리즘 (최단 경로)</title>
      <link>https://mgyo.tistory.com/798</link>
      <description>플로이드 워셜 알고리즘 (Floyd-Warshall Algorithm)

&amp;nbsp;
지난 시간에 포스팅 했던 다익스트라 알고리즘의 경우, 한 지점에서 다른 특정 지점까지의 최단 경로를 구하는 알고리즘이다.
모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우에는 어떻게 해야할까?
바로&amp;nbsp;플로이드 워셜 알고리즘을 사용하면 된다.

'모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우'에 사용할 수 있는 알고리..</description>
      <category>Algorithm</category>
      <category>Floyd-Warshall</category>
      <category>최단 경로</category>
      <category>플로이드 워셜</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/798</guid>
      <comments>https://mgyo.tistory.com/798#entry798comment</comments>
      <pubDate>Fri, 24 Mar 2023 18:47:46 +0900</pubDate>
    </item>
    <item>
      <title>7. [Algorithm] 다익스트라 알고리즘 (최단 경로)</title>
      <link>https://mgyo.tistory.com/797</link>
      <description>다익스트라 알고리즘

&amp;nbsp;
최단 경로 알고리즘은 말 그대로 가장 짧은 경로를 찾는 알고리즘이다.&amp;nbsp;최단 경로 알고리즘 유형에는 다양한 종류가 있다. 대표적으로&amp;nbsp;

다익스트라 최단 경로 알고리즘
플로이드 워셜
벨만 포드 알고리즘&amp;nbsp;

이렇게 3가지이다.&amp;nbsp;이번 글에서는 다익스트라 알고리즘&amp;nbsp;에 대해서 알아보도록 하겠다.
&amp;nbsp;

다익스트라 알고리즘 (Dijkstra Algorithm)

다익스트라 알고리즘..</description>
      <category>Algorithm</category>
      <category>ElogV</category>
      <category>heapq</category>
      <category>개선된 다익스트라 알고리즘</category>
      <category>다익스트라 알고리즘</category>
      <category>우선순위 큐</category>
      <category>최단 경로</category>
      <category>힙큐</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/797</guid>
      <comments>https://mgyo.tistory.com/797#entry797comment</comments>
      <pubDate>Fri, 24 Mar 2023 17:43:48 +0900</pubDate>
    </item>
    <item>
      <title>6. [Algorithm] 다이나믹 프로그래밍</title>
      <link>https://mgyo.tistory.com/796</link>
      <description>다이나믹 프로그래밍


DP란 '동적 계획법' 이라고도 불리는 알고리즘
큰 문제를 작은 문제로 나누어 푸는 문제를 일컫는 말 / 한 번 계산한 문제는 다시 계산하지 않도록 하는 알고리즘
DP는 다음의 조건을 만족할 때 사용 할 수 있음

1. 최적 부분 구조 (Optimal Substructure)큰 문제를 작은 문제로 나눌 수 있고, 작은 문제의 답을 모아 큰 문제를 해결할 수 있는 경우를 의미
2. 중복되는 부분 문제 (Overlapping Subp..</description>
      <category>Algorithm</category>
      <category>dp table</category>
      <category>dynamic programming</category>
      <category>memoization</category>
      <category>다이나믹 프로그래밍</category>
      <category>바텀업</category>
      <category>상향식</category>
      <category>탑다운</category>
      <category>하향식</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/796</guid>
      <comments>https://mgyo.tistory.com/796#entry796comment</comments>
      <pubDate>Tue, 21 Mar 2023 21:01:42 +0900</pubDate>
    </item>
    <item>
      <title>5. [Algorithm] 이진 탐색</title>
      <link>https://mgyo.tistory.com/795</link>
      <description>이진 탐색 / 이분 탐색 (Binary Search)

&amp;nbsp;

이진 탐색 (이분 탐색)&amp;nbsp;알고리즘은&amp;nbsp;정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다.
이진 탐색&amp;nbsp;은&amp;nbsp;배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘이다.
변수 3개(start, end, mid)를 사용하여 탐색한다. 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터를 찾는..</description>
      <category>Algorithm</category>
      <category>Binary Search</category>
      <category>이분 탐색</category>
      <category>이진 탐색</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/795</guid>
      <comments>https://mgyo.tistory.com/795#entry795comment</comments>
      <pubDate>Mon, 20 Mar 2023 22:07:05 +0900</pubDate>
    </item>
    <item>
      <title>4. [Algorithm] 정렬</title>
      <link>https://mgyo.tistory.com/794</link>
      <description>정렬 알고리즘 (Sorting Algorithm)

정렬(Sorting) 이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 의미한다.
일반적으로 문제 상황에 따라서 적절한 정렬 알고리즘이 공식처럼 사용된다.
정렬 알고리즘으로 데이터를 정렬하면 이진 탐색이 가능해진다. (정렬 알고리즘은 이진 탐색의 전처리 과정이기도 하므로 중요하다.)

다양한 정렬 알고리즘에 대해서 알아보자.
&amp;nbsp;
선택 정렬 (Selection Sort)

&amp;nbsp;
..</description>
      <category>Algorithm</category>
      <category>Counting</category>
      <category>insertion</category>
      <category>merge</category>
      <category>Quick</category>
      <category>Selection</category>
      <category>sort</category>
      <category>정렬</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/794</guid>
      <comments>https://mgyo.tistory.com/794#entry794comment</comments>
      <pubDate>Mon, 20 Mar 2023 03:05:23 +0900</pubDate>
    </item>
    <item>
      <title>3. [Algorithm] DFS / BFS</title>
      <link>https://mgyo.tistory.com/793</link>
      <description>DFS / BFS
&amp;nbsp;

&amp;nbsp;
DFS와 BFS를 알기 위한 그래프 개념
그래프란?

노드(Node)와 간선(Edge)으로 표현되며 이때 노드를 정점이라고 한다.

그래프 탐색이란?

하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말한다.

&amp;nbsp;
먼저 그래프에 대해 알아보자.

두 노드가 엣지로 연결되어 있을 때 &amp;nbsp;ex) 위 그림에서 A-B 가 연결되어있는데, 이때, '두 노드가 인접한다(Adjacent)' 라고 표현한..</description>
      <category>Algorithm</category>
      <category>BFS</category>
      <category>DFS</category>
      <category>알고리즘</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/793</guid>
      <comments>https://mgyo.tistory.com/793#entry793comment</comments>
      <pubDate>Tue, 14 Mar 2023 19:51:30 +0900</pubDate>
    </item>
    <item>
      <title>2. [Algorithm] 구현(시뮬레이션, 완전탐색)</title>
      <link>https://mgyo.tistory.com/792</link>
      <description>구현

나의 생각을 소스코드로 바꾸는 과정이다.
코딩 테스트를 풀기 위해서는 소스코드를 작성하는 과정은 필수 &amp;rarr;&amp;nbsp;구현 문제는 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념.
생각해낸 문제 해결 방법을 내가 원하는 프로그래밍 언어로 정확히 구현했을 때 비로소 정답 처리를 받을 수 있다. 이를 위해서는 해당 언어의 문법과 문제의 요구사항을 정확히 알고있어야 한다.
완전 탐색(Brute Force), 시뮬레이션 유형을 모두 구현 유형으..</description>
      <category>Algorithm</category>
      <category>구현</category>
      <category>알고리즘</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/792</guid>
      <comments>https://mgyo.tistory.com/792#entry792comment</comments>
      <pubDate>Mon, 6 Mar 2023 20:58:23 +0900</pubDate>
    </item>
    <item>
      <title>1. [Algorithm] 그리디</title>
      <link>https://mgyo.tistory.com/791</link>
      <description>그리디 알고리즘(Greedy)

가장 단순하지만 강력한 문제 해결 방법이다.
'탐욕법'이라고 불리기도 한다.
현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미하며 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다.
다익스트라, 플로이드 워셜 알고리즘은 엄밀히 말하자면, 그리디 알고리즘으로 분류된다.

&amp;nbsp;
그리디 알고리즘 유형은 매우 다양하기 때문에, 특이 케이스를 제외하고는 단순 암기를 통해 해결할 수 있는 알고리즘 유형이 아니다..</description>
      <category>Algorithm</category>
      <category>그리디</category>
      <category>알고리즘</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/791</guid>
      <comments>https://mgyo.tistory.com/791#entry791comment</comments>
      <pubDate>Mon, 6 Mar 2023 18:08:38 +0900</pubDate>
    </item>
    <item>
      <title>Algorithm과 Problem Solving</title>
      <link>https://mgyo.tistory.com/790</link>
      <description>Algorithm과 Problem Solving &amp;nbsp;(feat.이코테)
동일한 기능을 구현함에 있어서주어진 조건에 따라서 효율적인 로직이 무엇일까를 고민해 보는 과정은,&quot;나 자신과의 싸움의 연속이었다.&quot;
&amp;nbsp;

&quot;이것이 취업을 위한 코딩&amp;nbsp;테스트다&quot;라는&amp;nbsp;책을 통해 처음 알고리즘 공부에 입문하게 되었고,해당 도서의 필자가 추천한 로드맵을 따라&amp;nbsp;한 걸음씩&amp;nbsp;정진했다.시간이 좀 오래 걸렸지만, 책을 완독했고,이 ..</description>
      <category>Algorithm</category>
      <category>Problem Solving</category>
      <category>PS</category>
      <category>알고리즘</category>
      <category>이코테</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/790</guid>
      <comments>https://mgyo.tistory.com/790#entry790comment</comments>
      <pubDate>Sat, 25 Feb 2023 23:23:10 +0900</pubDate>
    </item>
    <item>
      <title>[이코테] Chapter10-4 / 커리큘럼</title>
      <link>https://mgyo.tistory.com/789</link>
      <description>커리큘럼
민교는 온라인으로 컴퓨터공학 강의를 듣고 있다. 이때 각 온라인 강의는 선수 강의가 있을 수 있는데, 선수 강의가 있는 강의는 선수 강의를 먼저 들어야만 해당 강의를 들을 수 있다. 예를 들어 '알고리즘' 강의의 선수 강의로 '자료구조'와 '컴퓨터 기초'가 존재한다면, '자료구조'와 '컴퓨터 기초'를 모두 들은 이후에 '알고리즘' 강의를 들을 수 있다.
민교는 총 N개의 강의를 듣고자 한다. 모든 강의는 1번부터 N번까지의 번호를 가진다. 또한..</description>
      <category>Algorithm</category>
      <category>위상 정렬</category>
      <category>이코테</category>
      <category>커리큘럼</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/789</guid>
      <comments>https://mgyo.tistory.com/789#entry789comment</comments>
      <pubDate>Wed, 22 Feb 2023 18:31:53 +0900</pubDate>
    </item>
    <item>
      <title>[이코테] Chapter10-3 / 도시 분할 계획</title>
      <link>https://mgyo.tistory.com/788</link>
      <description>도시 분할 계획
동물원에서 막 탈출한 원숭이 한 마리가 세상 구경을 하고 있다. 어느 날 원숭이는 '평화로운 마을'에 잠시 머물렀는데 마침 마을 사람들은 도로 공사 문제로 머리를 맞대고 회의 중이었다.
마을은 N개의 집과 그 집들을 연결하는 M개의 길로 이루어져 있다. 길은 어느 방향으로든지 다닐 수 있는 편리한 길이다. 그리고 길마다 길을 유지하는데 드는 유지비가 있다.
마을의 이장은 마을을 2개의 분리된 마을로 분할할 계획을 세우고 있다. 마을이 너..</description>
      <category>Algorithm</category>
      <category>그래프 이론</category>
      <category>도시 분할 계획</category>
      <category>이코테</category>
      <category>크루스칼 알고리즘</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/788</guid>
      <comments>https://mgyo.tistory.com/788#entry788comment</comments>
      <pubDate>Tue, 21 Feb 2023 22:54:23 +0900</pubDate>
    </item>
    <item>
      <title>[이코테] Chapter10-2 / 팀 결성</title>
      <link>https://mgyo.tistory.com/787</link>
      <description>팀 결성
학교에서 학생들에게 0번부터 N번까지의 번호를 부여했다. 처음에는 모든 학생이 서로 다른 팀으로 구분되어 N + 1 개의 팀이 존재한다.이때 선생님은 '팀 합치기' 연산과 '같은 팀 여부 확인' 연산을 사용할 수 있다.

'팀 합치기' 연산은 두 팀을 합치는 연산이다.
'같은 팀 여부 확인' 연산은 특정한 두 학생이 같은 팀에 속하는지를 확인하는 연산이다.

선생님이 M개의 연산을 수행할 수 있을 때, '같은 팀 여부 확인' 연산에 대한 연산 ..</description>
      <category>Algorithm</category>
      <category>그래프 이론</category>
      <category>서로소 집합 알고리즘</category>
      <category>이코테</category>
      <category>팀 결성</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/787</guid>
      <comments>https://mgyo.tistory.com/787#entry787comment</comments>
      <pubDate>Tue, 21 Feb 2023 16:20:01 +0900</pubDate>
    </item>
    <item>
      <title>[이코테] Chapter10-1 / 다양한 그래프 알고리즘</title>
      <link>https://mgyo.tistory.com/786</link>
      <description>이미 배운 내용을 훑어보자
지금까지 코딩 테스트에서 출제 비중이 높은 알고리즘 유형들을 다루어보았다. 이번 장에서는 지금까지 다루지 않았던 &amp;nbsp;그래프 알고리즘을 추가로 다룰 것이다. 이전 5장 'DFS/BFS'와 9장 '최단 경로'에서 다룬 내용은 모두 그래프 알고리즘의 한 유형으로 볼 수 있다. 이외에도 그래프 알고리즘은 굉장히 다양한데, 코딩 테스트에서 출제 비중이 낮은 편이지만 꼭 제대로 알아야 하는 알고리즘이다.
여기서 다루는 개념들을 바..</description>
      <category>Algorithm</category>
      <category>경로 압축</category>
      <category>그래프 이론</category>
      <category>사이클 판별</category>
      <category>서로소 집합</category>
      <category>신장 트리</category>
      <category>위상 정렬 알고리즘</category>
      <category>이코테</category>
      <category>크루스칼 알고리즘</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/786</guid>
      <comments>https://mgyo.tistory.com/786#entry786comment</comments>
      <pubDate>Mon, 20 Feb 2023 20:57:23 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2565번 전깃줄(feat. 다이나믹 프로그래밍, LIS)</title>
      <link>https://mgyo.tistory.com/785</link>
      <description>https://www.acmicpc.net/problem/2565

&amp;nbsp;
문제 접근

첫 번째 단계(문제 요약 및 조건 파악 하기)

입력으로 첫번쨰 줄에 n이 주어지고,두번째 줄부터 n + 1 번째 줄 까지각각 A to B가 주어진다. (전깃줄의 연결 정보)

&amp;nbsp;이 그림에 대한 입력은 아래와 같다.
8
1 8
3 9
2 2
4 1
6 4
10 10
9 7
7 6
모든 전깃줄이 서로 교차하지 않게 하기 위해 없애야 하는 전깃줄의 최소 개..</description>
      <category>Problem Solving</category>
      <category>DP</category>
      <category>LIS</category>
      <category>다이나믹 프로그래밍</category>
      <category>백준 2565번</category>
      <category>알고리즘</category>
      <category>전깃줄</category>
      <category>코딩 테스트</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/785</guid>
      <comments>https://mgyo.tistory.com/785#entry785comment</comments>
      <pubDate>Sat, 4 Feb 2023 15:32:14 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 17216번 가장 큰 감소 부분 수열(feat. 다이나믹 프로그래밍, LDS)</title>
      <link>https://mgyo.tistory.com/784</link>
      <description>https://www.acmicpc.net/problem/17216

&amp;nbsp;
문제 분석

첫 번째 단계 (문제 요약 및 조건 파악)

가장 큰 감소 부분 수열의 요소 합을 구하는 문제이다.예를 들어
A = {1, 100, 2, 50, 60, 8, 7, 3, 6, 5}
인 경우에 가장 합이 큰 감소 부분 수열은&amp;nbsp;
A = {100, 60, 8, 7, 6, 5}
이다.
입력으로는 수열의 크기 N (1 &amp;lt;= N &amp;lt;= 1000)수열을 이..</description>
      <category>Problem Solving</category>
      <category>DP</category>
      <category>가장 큰 감소 부분 수열</category>
      <category>백준 17216번</category>
      <category>알고리즘</category>
      <category>코딩 테스트</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/784</guid>
      <comments>https://mgyo.tistory.com/784#entry784comment</comments>
      <pubDate>Thu, 2 Feb 2023 15:29:12 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 11054번 가장 긴 바이토닉 부분 수열(feat. 다이나믹 프로그래밍, LIS, LDS)</title>
      <link>https://mgyo.tistory.com/783</link>
      <description>https://www.acmicpc.net/problem/11054


첫 번째 단계(문제 요약 및 조건 파악하기)

문제에서 말하는 바이토닉 수열에 대해서 간단하게 정리하면,어떤 특정 수 X를 기준으로 왼쪽은 X보다 작은 LIS, 오른쪽은 X보다 작은 LDS 인 수열이다.
예를 들어, {10, 20,&amp;nbsp;30, 25, 20}과 {10, 20, 30,&amp;nbsp;40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, &amp;nbsp;{1, 2, ..</description>
      <category>Problem Solving</category>
      <category>LDS</category>
      <category>LIS</category>
      <category>가장 긴 바이토닉 부분 수열</category>
      <category>백준 11054번</category>
      <category>알고리즘</category>
      <category>코딩 테스트</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/783</guid>
      <comments>https://mgyo.tistory.com/783#entry783comment</comments>
      <pubDate>Thu, 2 Feb 2023 15:04:44 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 11053번 가장 긴 증가하는 부분 수열(feat. 다이나믹 프로그래밍, LIS)</title>
      <link>https://mgyo.tistory.com/782</link>
      <description>https://www.acmicpc.net/problem/11053

&amp;nbsp;
문제 접근

첫 번째 단계(문제 요약 및 조건 파악)

수열이 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하는 문제이다.
입력 조건은 수열의 크기 N은 1 &amp;lt;= N &amp;lt;= 1000 이다.수열을 이루는 각 수x는 1 &amp;lt;= x &amp;lt;= 1000 이다.
예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 이 주어졌다고 가..</description>
      <category>Problem Solving</category>
      <category>DP</category>
      <category>LIS</category>
      <category>가장 긴 증가하는 부분 수열</category>
      <category>다이나믹 프로그래밍</category>
      <category>백준 11053번</category>
      <category>알고리즘</category>
      <category>코딩 테스트</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/782</guid>
      <comments>https://mgyo.tistory.com/782#entry782comment</comments>
      <pubDate>Wed, 1 Feb 2023 13:18:07 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 10844번 쉬운 계단 수(feat. 다이나믹 프로그래밍)</title>
      <link>https://mgyo.tistory.com/781</link>
      <description>https://www.acmicpc.net/problem/10844

&amp;nbsp;
문제 접근

첫 번째 단계 (문제 요약 및 조건 파악)

인접한 모든 자리의 차이가 1인 수를 계단 수라고 한다, (0으로 시작하는 수는 계단수가 아니다)
N이 주어지면, 길이가 N인 계단 수가 총 몇개 있는지 구해야 한다.
N은 1&amp;lt;= N &amp;lt;= 100 인 자연수다.
&amp;nbsp;

두 번째 단계 (문제 핵심 파악하기)

예를 들어 N이 1인 경우를 생각해 보자,..</description>
      <category>Problem Solving</category>
      <category>DP</category>
      <category>다이나믹 프로그래밍</category>
      <category>백준 10844번</category>
      <category>쉬운 계단 수</category>
      <category>알고리즘</category>
      <category>코딩 테스트</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/781</guid>
      <comments>https://mgyo.tistory.com/781#entry781comment</comments>
      <pubDate>Wed, 1 Feb 2023 01:49:31 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 1789번 수들의 합(feat. 그리디, 수학)</title>
      <link>https://mgyo.tistory.com/780</link>
      <description>https://www.acmicpc.net/problem/1789

문제 분석

첫 번째 단계(문제 요약 및 조건 파악)

서로 다른 N개의 자연수의 합을 S라고 한다.S가 주어졌을 때, N의 최댓값은 얼마인지 구해야 한다.
입력으로는 자연수 S(1 &amp;lt;= S &amp;lt;= 4,294,967,295)가 주어진다.
&amp;nbsp;

두 번째 단계 (문제 핵심 파악하기)

S를 만드는 서로다른 자연수들의 갯수 N을 크게하려면,&amp;nbsp;가능한 가장 작은수부터 ..</description>
      <category>Problem Solving</category>
      <category>그리디</category>
      <category>백준 1789번</category>
      <category>수들의 합</category>
      <category>수학</category>
      <category>알고리즘</category>
      <category>코딩 테스트</category>
      <author>김민교</author>
      <guid isPermaLink="true">https://mgyo.tistory.com/780</guid>
      <comments>https://mgyo.tistory.com/780#entry780comment</comments>
      <pubDate>Thu, 26 Jan 2023 16:52:17 +0900</pubDate>
    </item>
  </channel>
</rss>