<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>마트철수</title>
    <link>https://martt.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 31 May 2026 19:38:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>마트스</managingEditor>
    <item>
      <title>&amp;lt;1&amp;gt; 뭘 할까 하다가 알고리즘 복습: '프로그래머스 거스름돈'</title>
      <link>https://martt.tistory.com/276</link>
      <description>&lt;p data-end=&quot;95&quot; data-start=&quot;71&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;95&quot; data-start=&quot;71&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;  &lt;b&gt;1일차&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;95&quot; data-start=&quot;71&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;165&quot; data-start=&quot;97&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;시험 대비에 급하게 문제를 풀었었지만,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;한 문제를 며칠씩 잡고서라도 끝까지 고민해보고 싶었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;165&quot; data-start=&quot;97&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;226&quot; data-start=&quot;167&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그리고 새롭게 배운 개념은&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;내가 진짜 이해했을 때 글로 정리해서 포스팅하는 방식도 해보고 싶다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;226&quot; data-start=&quot;167&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;323&quot; data-start=&quot;228&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;내가 [93]까지 정리해둔 알고리즘 문제들을 다시 복습해보고,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예전에 진행했던 프로젝트의 리팩토링도 함께 진행할 예정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;323&quot; data-start=&quot;228&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;394&quot; data-start=&quot;325&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;또, 소장하고 있는 유료 강의들도 다시 천천히 돌려보면서&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;올해 ~2025년 4월까지의 나의 성장 기록을 되돌아보려 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;394&quot; data-start=&quot;325&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;457&quot; data-start=&quot;396&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;나중에 사이드 프로젝트를 진행하게 될 그날을 위해,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;지금의 준비도 소중한 기반이 될 것이라 생각한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;457&quot; data-start=&quot;396&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;457&quot; data-start=&quot;396&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;457&quot; data-start=&quot;396&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3; font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;알고리즘&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;프로그래머스 거스름돈 JAVA 풀이&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이전 포스팅: &lt;a href=&quot;https://martt.tistory.com/275&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://martt.tistory.com/275&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;풀이:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;dp[i] = i원을 만들 수 있는 경우의 수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그렇다면 dp[0] = 1로 시작해야 누적시킬 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;money의 값들로 for문을 돌리자&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;코드:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1746247094658&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int n, int[] money) {
        int[] dp = new int[n+1];
        dp[0] = 1;
        
        for(int i : money) {
            for(int j=i; j&amp;lt;=n; j++) {
                dp[j] = dp[j] + dp[j-i];
            }
        }
        
        return dp[n]%1000000007;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>신입 개발자</category>
      <category>AI</category>
      <category>DP문제</category>
      <category>TIL</category>
      <category>개발TIL</category>
      <category>인공지능</category>
      <category>코딩테스트</category>
      <category>코딩테스트문제추천</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/276</guid>
      <comments>https://martt.tistory.com/276#entry276comment</comments>
      <pubDate>Sat, 3 May 2025 13:46:10 +0900</pubDate>
    </item>
    <item>
      <title>[93] 코딩테스트: 거스름돈 자바 풀이 | DP</title>
      <link>https://martt.tistory.com/275</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;코딩테스트 준비 93일차&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;오늘 풀 문제는 거스름이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;사실 DP를 처음부터 생각하기엔 난 아직 부족하다고 생각한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;DP와 관련된 여러 문제를 풀어보면서 쌓아나가려고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;▼ 주말에 풀어볼 문제 &lt;span style=&quot;font-family: 'Noto Serif KR'; background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;▼&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1744332565191&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/68646&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bNPKh2/hyYEzhABvC/4z72xErm6IY3B2ohs3NRo1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/KEJDW/hyYA4p0lTk/iRzA8qBv2ttpEXmPGYeeNk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/68646&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/68646&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bNPKh2/hyYEzhABvC/4z72xErm6IY3B2ohs3NRo1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/KEJDW/hyYA4p0lTk/iRzA8qBv2ttpEXmPGYeeNk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;거스름돈&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;DP&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;&quot;&gt;가능한 수를 누적&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;&quot;&gt; &lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: start;&quot;&gt;dp[j] += dp[j - i]&lt;/span&gt; &lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;&quot;&gt;j는 현재 인덱스, i는 현재 선택한 money 종류&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lhxld/btsNgpr8M4X/2M0d9R3FR8kM8jnOSkHxg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lhxld/btsNgpr8M4X/2M0d9R3FR8kM8jnOSkHxg0/img.png&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;577&quot; data-is-animation=&quot;false&quot; style=&quot;width: 28.6892%; margin-right: 10px;&quot; data-widthpercent=&quot;29.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lhxld/btsNgpr8M4X/2M0d9R3FR8kM8jnOSkHxg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flhxld%2FbtsNgpr8M4X%2F2M0d9R3FR8kM8jnOSkHxg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FJ3TB/btsNfPdKT5o/qEQx0a2H4R4oSyZuO6H0T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FJ3TB/btsNfPdKT5o/qEQx0a2H4R4oSyZuO6H0T0/img.png&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;235&quot; data-is-animation=&quot;false&quot; style=&quot;width: 70.148%;&quot; data-widthpercent=&quot;70.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FJ3TB/btsNfPdKT5o/qEQx0a2H4R4oSyZuO6H0T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFJ3TB%2FbtsNfPdKT5o%2FqEQx0a2H4R4oSyZuO6H0T0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;718&quot; height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;출처: 프로그래머스 거스름돈 자바 풀이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1744328340817&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12907&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4TSm0/hyYEBNe5sx/Y0WCkNzsWjHInzKeCFSzZ1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/b5csgg/hyYCmReGUq/IDj25uCVuk1k5Bq434SZuK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12907&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12907&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4TSm0/hyYEBNe5sx/Y0WCkNzsWjHInzKeCFSzZ1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/b5csgg/hyYCmReGUq/IDj25uCVuk1k5Bq434SZuK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실패 풀이&lt;br /&gt;&lt;/span&gt;count 메서드가 구현 실패 .. DP로 생각 넓히기가 어려움..&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1744331245305&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int n, int[] money) {
        int answer = 0;
        Arrays.sort(money);
        
        for(int i=1; i&amp;lt;money.length; i++) {
            answer += count(money, i, n)%1000000007;
        }
    }
    
    //돈 종류, 사용할 종류 개수, 목표 돈
    private int count(int[] money, int len, int n) {
        
        
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;1. DP&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;dp[i]는 금액 i를 만들 수 있는 방법의 수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;초기값 dp[0] = 1으로 설정 =&amp;gt; &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;아무 동전도 사용하지 않는 방법&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;2. 점화식 구조&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;각 동전 i에 대해 j = i부터 n까지 반복하면서 dp[j] += dp[j - i] 수행.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;(=이 아닌 +=로 누적해줌)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;3. 이차원 DP vs 일차원 DP&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;dp[동전개수][금액] 형태의 2차원 배열을 생각했으나,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;각 동전별로 순차적으로 누적하는 방식이기 때문에 1차원 DP로도 충분하다고 판단&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; &lt;b&gt;4. for문 순서? 중복 제거를 위해서&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;동전 순서를 바꾼 경우를 동일한 방법으로 간주하기 위해 동전부터 반복&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;정답 코드&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1744331846807&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n, int[] money) {
        int[] dp = new int[n+1];
        dp[0] = 1;
        
        for(int i : money) {
            for(int j=i; j&amp;lt;=n; j++) {
                dp[j] += dp[j-i];
            }
        }
        
        return dp[n];
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;효율성 테스트.. 완전탐색으론 불가&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1b3ie/btsNfZ7wE0U/8votlWPmbyNbRay43Xsss0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1b3ie/btsNfZ7wE0U/8votlWPmbyNbRay43Xsss0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1b3ie/btsNfZ7wE0U/8votlWPmbyNbRay43Xsss0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1b3ie%2FbtsNfZ7wE0U%2F8votlWPmbyNbRay43Xsss0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;310&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>개인공부/알고리즘</category>
      <category>거스름돈dp</category>
      <category>거스름돈자바</category>
      <category>프로그래머스dp문제</category>
      <category>프로그래머스거스름돈</category>
      <category>프로그래머스거스름돈자바</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/275</guid>
      <comments>https://martt.tistory.com/275#entry275comment</comments>
      <pubDate>Fri, 11 Apr 2025 16:10:55 +0900</pubDate>
    </item>
    <item>
      <title>[92] 코딩테스트: [1차] 셔틀버스 자바 풀이 | 카카오 인턴십</title>
      <link>https://martt.tistory.com/274</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;코딩테스트 준비 92일차&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333;&quot;&gt;오늘 풀 문제는 [1차]셔틀 버스이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;해당 문제는 당연히 그리디지만 어려운 그리디..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;[1차] 셔틀 버스&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Greedy&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 셔틀에 타기 위해 도착해야 할 가장 늦은 시간&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;모든 도착 시간을 분 단위로 변환해 오름차순 정렬 =&amp;gt; &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;PriorityQueue&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;셔틀을 1대씩 시뮬레이션 -&amp;gt; &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;마지막 셔틀에 콘이 탈 수 있는지 판단&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;만약 마지막 셔틀이 자리가 남았다면, 콘은 그 시간에 도착&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;만약 자리가 없다면, 마지막으로 탄 사람보다 1분 일찍 도착&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmhS30/btsNfR1RTlk/JKyyn8NX1tcniywWaUXbnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmhS30/btsNfR1RTlk/JKyyn8NX1tcniywWaUXbnK/img.png&quot; data-origin-width=&quot;739&quot; data-origin-height=&quot;457&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.0925%; margin-right: 10px;&quot; data-widthpercent=&quot;50.68&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmhS30/btsNfR1RTlk/JKyyn8NX1tcniywWaUXbnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmhS30%2FbtsNfR1RTlk%2FJKyyn8NX1tcniywWaUXbnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;739&quot; height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfPEF5/btsNdCE5wj5/K1zz4ndi4yJDUKqOrEk3fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfPEF5/btsNdCE5wj5/K1zz4ndi4yJDUKqOrEk3fK/img.png&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;469&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.7447%;&quot; data-widthpercent=&quot;49.32&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfPEF5/btsNdCE5wj5/K1zz4ndi4yJDUKqOrEk3fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfPEF5%2FbtsNdCE5wj5%2FK1zz4ndi4yJDUKqOrEk3fK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;출처: 프로그래머스 셔틀버스 자바 풀이 카카오 인턴십&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1744244165234&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17678&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bBb88r/hyYBboYYam/ykfIsFrie0sjFAWkBUEed0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/b4HU82/hyYBc9dJTN/7ZFoebYphLmYxfwVUo0ft0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17678&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17678&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bBb88r/hyYBboYYam/ykfIsFrie0sjFAWkBUEed0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/b4HU82/hyYBc9dJTN/7ZFoebYphLmYxfwVUo0ft0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1744244994475&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if(i==n-1) {
        if(index == 0) {
            answer += &quot;09:00&quot;;
        } else if(index &amp;lt; m) {
            answer += check2(list.get(index));
        }
    }
    for(int j=0; j&amp;lt;=index; j++) {
        list.remove(j);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;정답 코드&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1744248051001&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    PriorityQueue&amp;lt;Integer&amp;gt; pq = new PriorityQueue&amp;lt;&amp;gt;();
    
    public String solution(int n, int t, int m, String[] timetable) {
        String answer = &quot;&quot;;
        
        for(int i=0; i&amp;lt;timetable.length; i++) {
            pq.add(check(timetable[i]));
        }
        
        int last = 0;
        int index = 0;
        for(int i=0; i&amp;lt;n; i++) {
            int curTime =540 + t*i;
            index = 0;
            
            while(!pq.isEmpty() &amp;amp;&amp;amp; pq.peek()&amp;lt;=curTime &amp;amp;&amp;amp; index&amp;lt;m) {
                last = pq.poll();
                index++;
            }
            
            if(i == n-1) {
                if(index &amp;lt; m) {
                    last = curTime;
                } else {
                    last -= 1;
                }
            }
        }

        return check2(last);
    }
    
    private int check(String t) {
        String[] time = t.split(&quot;:&quot;);
        return Integer.valueOf(time[0])*60+Integer.valueOf(time[1]);
    }
    
    private String check2(int t) {
        String a = String.valueOf(t/60);
        if(a.length() == 1) {
            a = &quot;0&quot;+a;
        }
        
        String b = String.valueOf(t%60);
        if(b.length() == 1) {
            b = &quot;0&quot;+b;
        }
        
        return a+&quot;:&quot;+b;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개인공부/알고리즘</category>
      <category>PriorityQueue</category>
      <category>셔틀버스자바풀이</category>
      <category>우선순위큐</category>
      <category>카카오인턴</category>
      <category>카카오코테</category>
      <category>프로그래머스셔틀버스</category>
      <category>프로그래머스셔틀버스자바</category>
      <category>프로그래머스셔틀버스자바풀이</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/274</guid>
      <comments>https://martt.tistory.com/274#entry274comment</comments>
      <pubDate>Thu, 10 Apr 2025 10:27:44 +0900</pubDate>
    </item>
    <item>
      <title>&amp;lt;JAVA TIL20&amp;gt; 코트타카 모음집 | dfs 문제 3개</title>
      <link>https://martt.tistory.com/273</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;  내일배움캠프 4/8 TIL&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;TIL.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/onTed/btsM6ZHimhz/zJ8nq2uNgyjrjADOL1k9gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/onTed/btsM6ZHimhz/zJ8nq2uNgyjrjADOL1k9gk/img.png&quot; data-alt=&quot;&amp;amp;lt;JAVA TIL20&amp;amp;gt; 코트타카 모음집 ❘ dfs 문제 3개&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/onTed/btsM6ZHimhz/zJ8nq2uNgyjrjADOL1k9gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FonTed%2FbtsM6ZHimhz%2FzJ8nq2uNgyjrjADOL1k9gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;213&quot; data-filename=&quot;TIL.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;&amp;lt;JAVA TIL20&amp;gt; 코트타카 모음집 ❘ dfs 문제 3개&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;코드타카&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;어쩌다 보니 밀린 코트타카 문제들을 모아서 올리게 되었다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;주말 복습 아자아자&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;br /&gt;[행렬 테두리 회전하기]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;DFS&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1743722825642&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    int[][] map;
    ArrayList&amp;lt;Integer&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
    
    public int[] solution(int rows, int columns, int[][] queries) {
        map = new int[rows][columns];
        int index = 1;
        for(int i=0; i&amp;lt;rows; i++) {
            for(int j=0; j&amp;lt;columns; j++) {
                map[i][j] = index++;
            }
        }
        
        for(int i=0; i&amp;lt;queries.length; i++) {
            int sx = queries[i][0]-1;
            int ex = queries[i][2]-1;
            
            int sy = queries[i][1]-1;
            int ey = queries[i][3]-1;
            
            dfs(sx, ex, sy, ey);
        }
        
        int[] answer = new int[list.size()];
        for(int i=0; i&amp;lt;list.size(); i++) {
            answer[i] = list.get(i);
        }

        return answer;
    }
    
    private void dfs(int sx, int ex, int sy, int ey) {
        int cur = map[sx][sy];
        int min = cur;
        
        for(int i=sx; i&amp;lt;ex; i++) {
            map[i][sy] = map[i+1][sy];
            min = Math.min(min, map[i][sy]);
        }
        
        for(int i=sy; i&amp;lt;ey; i++) {
            map[ex][i] = map[ex][i+1];
            min = Math.min(min, map[ex][i]);
        }
        
        for(int i=ex; i&amp;gt;sx; i--) {
            map[i][ey] = map[i-1][ey];
            min = Math.min(min, map[i][ey]);
        }
        
        for(int i=ey; i&amp;gt;sy; i--) {
            map[sx][i] = map[sx][i-1];
            min = Math.min(min, map[sx][i]);
        }
        
        map[sx][sy+1] = cur;
        list.add(min);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;
&lt;figure id=&quot;og_1743750978914&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/77485&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvW3FJ/hyYB8KIfGl/6vD8TrqfhL0LuAx7CKKi01/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/trtIe/hyYxNID954/PcxakaIr3zHNg6eLxK9kz1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/77485&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/77485&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvW3FJ/hyYB8KIfGl/6vD8TrqfhL0LuAx7CKKi01/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/trtIe/hyYxNID954/PcxakaIr3zHNg6eLxK9kz1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;[전력망을 둘로 나누기]&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;완전 탐색&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;1. 좌표를 나눠서 끊어주는 방법&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743991370506&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int[] w : wires) {
    int a = w[0];
    int b = w[1];

    list[a].remove(Integer.valueOf(b)); //좌표를 삭제하되, 인덱스를 지우지 않도록 형태 변환
    list[b].remove(Integer.valueOf(a));

    visited = new boolean[n+1]; //visited 배열 초기화
    int size1 = count(a); //덩어리 하나의 크기를 확인
    int size2 = n-size1;
    answer = Math.min(answer, Math.abs(size1-size2)); //작은 값이면서, 절대값

    list[a].add(b); //원상복귀
    list[b].add(a);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2. 크기 확인 방법&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743991408323&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private int count(int a) { //리턴은 숫자로
    visited[a] = true; //방문 처리
    int c = 1; //하나의 dfs당 1씩 리턴

    for(int i : list[a]) {
        if(!visited[i]) {
            c += count(i); //값들을 누적해줌
        }
    }

    return c;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1743991183440&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/86971&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vGqFK/hyYBiN7zvk/I4fO8XR7ZD5Zk2V1q3oqmK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cEQ4gI/hyYBaQuMHA/GHcBfnlkZl69wQC7oqpYS0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/86971&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/86971&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vGqFK/hyYBiN7zvk/I4fO8XR7ZD5Zk2V1q3oqmK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cEQ4gI/hyYBaQuMHA/GHcBfnlkZl69wQC7oqpYS0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #000000;&quot;&gt;&lt;b&gt;[배달]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Graph + BFS&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Arrays.fill을 사용해서 visited배열에 최대값을 넣어준다&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;BFS를 돌면서, Math.min()을 사용해서 최소값이 들어가도록 해준다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1744074527128&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    ArrayList&amp;lt;int[]&amp;gt;[] graph;
    int[] visited;
    
    public int solution(int N, int[][] road, int K) {
        graph = new ArrayList[N+1];
        visited = new int[N+1];
        int answer = 0;
        Arrays.fill(visited, Integer.MAX_VALUE);
        
        for(int i=1; i&amp;lt;=N; i++) {
            graph[i] = new ArrayList&amp;lt;&amp;gt;();
        }
        
        for(int i=0; i&amp;lt;road.length; i++) {
            int a = road[i][0];
            int b = road[i][1];
            int c = road[i][2];
            
            graph[a].add(new int[]{b, c});
            graph[b].add(new int[]{a, c});
        }
        
        visited[1] = 0;
        Queue&amp;lt;Integer&amp;gt; q = new LinkedList&amp;lt;&amp;gt;();
        for(int[] g : graph[1]) {
            int a = g[0];
            int b = g[1];
            visited[a] = Math.min(visited[a], b);
            q.add(a);
        }
        
        while(!q.isEmpty()) {
            int cur = q.poll();
            for(int[] c : graph[cur]) {
                int a = c[0];
                int b = c[1];
                
                if(visited[a] &amp;gt; visited[cur]+b) {
                    visited[a] = visited[cur]+b;
                    q.add(a);
                }
            }
        }
        
        for(int i=0; i&amp;lt;visited.length; i++) {
            if(visited[i] &amp;lt;= K) {
                answer++;
            }
        }
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1744074534915&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12978&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/GNWD3/hyYBaCNS07/LtaJl0AzUybMokiqkJlyJ0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/1wFT8/hyYA4iJofS/7kY2NRleXgh0lmALFNWWA1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12978&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12978&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/GNWD3/hyYBaCNS07/LtaJl0AzUybMokiqkJlyJ0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/1wFT8/hyYA4iJofS/7kY2NRleXgh0lmALFNWWA1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <category>팀스파르타</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/273</guid>
      <comments>https://martt.tistory.com/273#entry273comment</comments>
      <pubDate>Tue, 8 Apr 2025 10:10:54 +0900</pubDate>
    </item>
    <item>
      <title>[91] 코딩테스트: 가장 긴 팰린드롬 자바 풀이</title>
      <link>https://martt.tistory.com/272</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;코딩테스트 준비 91일차&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오늘 풀 문제는 가장 긴 팰린드이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;우선 모든 경우의 수를 탐색해야한다고 생각했고,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이분탐색을 고민하다가 for문 2개를 사용해서 풀이했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;가장 큰 팰린드롬&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 브루트포스&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 가능한 모든 경우의 수를 전부 탐색해서 정답을 찾는 방식 &lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;307&quot; data-start=&quot;177&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;문자열의 모든 부분 문자열 확인&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;307&quot; data-start=&quot;177&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;for (int i = 0; i &amp;lt; s.length(); i++)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;307&quot; data-start=&quot;177&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;for (int j = i; j &amp;lt; s.length(); j++)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;362&quot; data-start=&quot;308&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;팰린드롬체크&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;362&quot; data-start=&quot;308&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;check(s, i, j)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;362&quot; data-start=&quot;308&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;팰린드롬이면 그 길이를 저장하고 가장 긴 길이를 구함 =&amp;gt; 정답&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GcSCA/btsNbQXlgac/GOwswpi4mc1NNKK5SqXWjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GcSCA/btsNbQXlgac/GOwswpi4mc1NNKK5SqXWjK/img.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;300&quot; data-is-animation=&quot;false&quot; style=&quot;width: 53.4221%; margin-right: 10px;&quot; data-widthpercent=&quot;54.05&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GcSCA/btsNbQXlgac/GOwswpi4mc1NNKK5SqXWjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGcSCA%2FbtsNbQXlgac%2FGOwswpi4mc1NNKK5SqXWjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;768&quot; height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9D2zB/btsNbqSe01k/AR2GLYgCwk0q1tPkZToP01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9D2zB/btsNbqSe01k/AR2GLYgCwk0q1tPkZToP01/img.png&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;346&quot; data-is-animation=&quot;false&quot; style=&quot;width: 45.4151%;&quot; data-widthpercent=&quot;45.95&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9D2zB/btsNbqSe01k/AR2GLYgCwk0q1tPkZToP01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9D2zB%2FbtsNbqSe01k%2FAR2GLYgCwk0q1tPkZToP01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;753&quot; height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;출처: 프로그래머스 가장 큰 팰린드롬 자바 풀이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1744072641466&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12904&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2hDsx/hyYCbnM09d/8EUA8KYpYVdkvhvqUFvrvK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/ArE4j/hyYCb2pkul/YVgdGfK0Ko8v24GX8DnvcK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12904&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12904&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2hDsx/hyYCbnM09d/8EUA8KYpYVdkvhvqUFvrvK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/ArE4j/hyYCb2pkul/YVgdGfK0Ko8v24GX8DnvcK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;정답 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1744074140832&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(String s) {
        int max = 1; //최소값을 1임

        for (int i=0; i&amp;lt;s.length(); i++) { //시작점은 0부터
            for (int j=i; j&amp;lt;s.length(); j++) { //끝점은 i부터
                if (check(s, i, j)) {
                    max = Math.max(max, j - i + 1); //끝점-시작점+1 (4~6 = 3)
                }
            }
        }

        return max;
    }

    private boolean check(String s, int str, int end) {
        while (str &amp;lt;= end) { //같은 위치때까지 확인해야함
            if (s.charAt(str) != s.charAt(end)) {
                return false;
            }
            str++;
            end--;
        }
        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개인공부/알고리즘</category>
      <category>AI</category>
      <category>가장긴팰린드롬</category>
      <category>가장긴팰린드롬자바</category>
      <category>가장긴팰린드폼자바</category>
      <category>먀</category>
      <category>프로그래머스가장긴팰린드롬</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/272</guid>
      <comments>https://martt.tistory.com/272#entry272comment</comments>
      <pubDate>Tue, 8 Apr 2025 10:07:16 +0900</pubDate>
    </item>
    <item>
      <title>[90] 코딩테스트: 부대복귀 자바 풀이 | Graph + visited 배열</title>
      <link>https://martt.tistory.com/271</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;코딩테스트 준비 90일차&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오늘 풀 문제는 부대복귀이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span&gt;그래프로 우선 값을 저장하고,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span&gt;BFS로 길이를 탐색했다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span&gt;제일 마지막에 참고하면 좋을 풀이도 함께 작성해두었다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span&gt;▼ 내일 풀 문제 &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;▼&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span&gt;현재 고민중..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42627&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42627&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1743986390043&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42627&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/y193y/hyYA9jJE5y/Bcw2vM0GsmkimPjcM3zNV1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/mtOVG/hyYCkx080H/sjp72p18NAwVeGeNxqTCQ0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42627&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42627&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/y193y/hyYA9jJE5y/Bcw2vM0GsmkimPjcM3zNV1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/mtOVG/hyYCkx080H/sjp72p18NAwVeGeNxqTCQ0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;부대복귀&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span&gt;Graph, BFS&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s9B35/btsNaLamrcn/cizDXQxTLs8V7pSW53NRoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s9B35/btsNaLamrcn/cizDXQxTLs8V7pSW53NRoK/img.png&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;322&quot; data-is-animation=&quot;false&quot; style=&quot;width: 57.2769%; margin-right: 10px;&quot; data-widthpercent=&quot;57.95&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s9B35/btsNaLamrcn/cizDXQxTLs8V7pSW53NRoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs9B35%2FbtsNaLamrcn%2FcizDXQxTLs8V7pSW53NRoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5FGGy/btsNaKo0elI/Qa0KIMjYNcUdcF60b5MLY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5FGGy/btsNaKo0elI/Qa0KIMjYNcUdcF60b5MLY1/img.png&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;445&quot; data-is-animation=&quot;false&quot; style=&quot;width: 41.5603%;&quot; data-widthpercent=&quot;42.05&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5FGGy/btsNaKo0elI/Qa0KIMjYNcUdcF60b5MLY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5FGGy%2FbtsNaKo0elI%2FQa0KIMjYNcUdcF60b5MLY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;출처: 프로그래머스 부대복귀 자바 풀이 그래프&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1743983928678&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/132266&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dbqHWX/hyYyPGrCvQ/ZoKmdbM7F5KhW1fkhBtfBK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/vTcsg/hyYCdr6swW/bKnl4c9YR2KrSNU6JwdfC1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/132266&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/132266&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dbqHWX/hyYyPGrCvQ/ZoKmdbM7F5KhW1fkhBtfBK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/vTcsg/hyYCdr6swW/bKnl4c9YR2KrSNU6JwdfC1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실패&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;475&quot; data-start=&quot;264&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;BFS 도중 목적지를 찾았을 때 루프를 제대로 종료하지 않음&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;475&quot; data-start=&quot;308&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;401&quot; data-start=&quot;308&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;if(i==end)에서 answer[idx] = len+1; 하고 그냥 continue 처리&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;401&quot; data-start=&quot;308&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;최단 거리라고 보장할 수 없음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;642&quot; data-start=&quot;477&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;목적지를 찾지 못한 경우 처리 없음&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;642&quot; data-start=&quot;511&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;585&quot; data-start=&quot;511&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;목적지를 찾지 못한 경우는 answer[idx] = -1 처리&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;585&quot; data-start=&quot;511&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;list[s].size() == 0일 때만 실행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;642&quot; data-start=&quot;589&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;노드가 연결은 돼 있지만, 목적지로 가는 경로가 없을 때 -1 처리를 하지 못함!!&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1743983995659&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private void check(int str, int end, int idx) {
    Queue&amp;lt;int[]&amp;gt; q = new LinkedList&amp;lt;&amp;gt;();
    visited[str] = true;
    q.add(new int[]{str, 0});

    while(!q.isEmpty()) {
        int[] a = q.poll();
        int s = a[0];
        int len = a[1];

        if(list[s].size() == 0) { //해당 조건은 while문 밖으로..
            answer[idx] = -1;
            break;
        }

        for(int i : list[s]) {
            if(!visited[i]) {
                if(i==end) { //for문 들어오기 전 예외 처리로..
                    answer[idx] = len+1;
                    break;
                } else {
                    visited[i] = true;
                    q.add(new int[]{i, len+1});
                }
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;수정 코드 &amp;rarr; 시간 초과&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1743988804773&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private void check(int str, int end, int idx) {
    Queue&amp;lt;int[]&amp;gt; q = new LinkedList&amp;lt;&amp;gt;();
    visited[str] = true;
    q.add(new int[]{str, 0});

    while(!q.isEmpty()) {
        int[] a = q.poll();
        int s = a[0];
        int len = a[1];

        if(s == end) {
            answer[idx] = len;
            return;
        }

        for(int i : list[s]) {
            if(!visited[i]) {
                visited[i] = true;
                q.add(new int[]{i, len+1});
            }
        }
    }

    answer[idx] = -1;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;정답 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;visited 배열을 방문 처리 + 길이 2가지 저장으로 사용&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;단순히 boolean으로 선언한다는 생각은.. 접어두기..&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1743984696162&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    ArrayList&amp;lt;Integer&amp;gt;[] list;

    public int[] solution(int n, int[][] roads, int[] sources, int destination) {
        int[] answer = new int[sources.length];

        list = new ArrayList[n+1];
        for(int i = 1; i &amp;lt;= n; i++) {
            list[i] = new ArrayList&amp;lt;&amp;gt;();
        }
        for(int[] road : roads) {
            list[road[0]].add(road[1]);
            list[road[1]].add(road[0]);
        }

        // destination 기준으로 모든 노드까지의 거리 계산
        int[] distance = new int[n+1];
        Arrays.fill(distance, -1); // -1은 도달할 수 없음을 의미
        bfs(destination, distance);

        // 각 source에 대해 거리 기록
        for(int i = 0; i &amp;lt; sources.length; i++) {
            answer[i] = distance[sources[i]];
        }

        return answer;
    }

    private void bfs(int start, int[] distance) {
        Queue&amp;lt;Integer&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();
        queue.add(start);
        distance[start] = 0;

        while(!queue.isEmpty()) {
            int now = queue.poll();

            for(int next : list[now]) {
                if(distance[next] == -1) {
                    distance[next] = distance[now] + 1;
                    queue.add(next);
                }
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개인공부/알고리즘</category>
      <category>ai지브리</category>
      <category>개발자코테</category>
      <category>부대</category>
      <category>부대복귀자바</category>
      <category>부대복귀하는방법</category>
      <category>부대찾아가는방법</category>
      <category>코딩테스트</category>
      <category>프로그래머스부대복귀</category>
      <category>프로그래머스부대복귀자바</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/271</guid>
      <comments>https://martt.tistory.com/271#entry271comment</comments>
      <pubDate>Mon, 7 Apr 2025 10:26:17 +0900</pubDate>
    </item>
    <item>
      <title>[89] 코딩테스트: 여행경로 자바 풀이 | 백트래킹</title>
      <link>https://martt.tistory.com/270</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;코딩테스트 준비 89일차&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오늘 풀 문제는 여행경로이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;처음에는 HashMap으로 접근해서,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;String과 String 배열을 저장해주는 방식으로 고민했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;근데 풀이의 답이 보이지 않고 &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;가능한 범위라 생각해서&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;백트래킹으로 문제를 풀이하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;여행 경로&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span&gt;백트래킹&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span&gt;출발지와 루트의 정보는 &quot;ICN&quot;으로 시작&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span&gt;Collections.sort로 답 하나를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/psXki/btsM7WiYm7s/s02i3E9dMIIOXKvjUvN7Qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/psXki/btsM7WiYm7s/s02i3E9dMIIOXKvjUvN7Qk/img.png&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;592&quot; data-is-animation=&quot;false&quot; style=&quot;width: 28.2839%; margin-right: 10px;&quot; data-widthpercent=&quot;28.62&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/psXki/btsM7WiYm7s/s02i3E9dMIIOXKvjUvN7Qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpsXki%2FbtsM7WiYm7s%2Fs02i3E9dMIIOXKvjUvN7Qk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;703&quot; height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tAToE/btsM7btDHWe/HNcHkxCK6wY0hHcRWQKh10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tAToE/btsM7btDHWe/HNcHkxCK6wY0hHcRWQKh10/img.png&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;238&quot; data-is-animation=&quot;false&quot; style=&quot;width: 70.5533%;&quot; data-widthpercent=&quot;71.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tAToE/btsM7btDHWe/HNcHkxCK6wY0hHcRWQKh10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtAToE%2FbtsM7btDHWe%2FHNcHkxCK6wY0hHcRWQKh10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;705&quot; height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;출처: 프로그래머스 여행 경로 자바 풀이 백트래킹&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1743725311282&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43164&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cfDjQc/hyYxKd4uRo/L5ZfKddnAxgh1uzM1HiLLk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bxNqZd/hyYyU8mJmH/XHTfw9YeX0oSPXXkm5b7b0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43164&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cfDjQc/hyYxKd4uRo/L5ZfKddnAxgh1uzM1HiLLk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bxNqZd/hyYyU8mJmH/XHTfw9YeX0oSPXXkm5b7b0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743810869037&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[1회독: 풀이완료]
dfs(&quot;ICN&quot;, &quot;ICN&quot;, tickets, 0)
1.시작점 2.경유지를 모두 더한 문자열 3.참고 문자열 4.index 카운트&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-family: 'Noto Serif KR'; background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;백트래킹&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;조건: &lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;방문하는 공항 경로를 배열에 담아서 &lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;return 합니다.&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;▶ 백트래킹으로 str부터 값을 담아서 진행한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743725506952&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=0; i&amp;lt;tickets.length; i++) {
    if(!visited[i] &amp;amp;&amp;amp; tickets[i][0].equals(str)) {
        visited[i] = true;
        dfs(tickets[i][1], cur+&quot; &quot;+tickets[i][1], tickets, idx+1);
        visited[i] = false;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;조건: 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;▶ list를 오름차순으로 정렬해서 첫번째 값을 리턴한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743725421588&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Collections.sort(list);
String[] answer = list.get(0).split(&quot; &quot;);
return answer;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;정답 코드&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1743725380505&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
    boolean[] visited;
    
    public String[] solution(String[][] tickets) {
        
        visited = new boolean[tickets.length];
        dfs(&quot;ICN&quot;, &quot;ICN&quot;, tickets, 0);
        Collections.sort(list);
        String[] answer = list.get(0).split(&quot; &quot;);
        return answer;
        
    }
    
    private void dfs(String str, String cur, String[][] tickets, int idx) {
        
        if(idx == tickets.length) {
            list.add(cur);
            return;
        }
        
        //백트래킹
        for(int i=0; i&amp;lt;tickets.length; i++) {
            if(!visited[i] &amp;amp;&amp;amp; tickets[i][0].equals(str)) {
                visited[i] = true;
                dfs(tickets[i][1], cur+&quot; &quot;+tickets[i][1], tickets, idx+1);
                visited[i] = false;
            }
        }
        
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개인공부/알고리즘</category>
      <category>개발자TIL</category>
      <category>여행경로ai</category>
      <category>여행경로백트래킹</category>
      <category>여행경로자바풀이</category>
      <category>코딩테스트준비</category>
      <category>프로그래머스백트래킹문제</category>
      <category>프로그래머스여행경로</category>
      <category>프로그래머스여행경로자바</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/270</guid>
      <comments>https://martt.tistory.com/270#entry270comment</comments>
      <pubDate>Fri, 4 Apr 2025 09:14:41 +0900</pubDate>
    </item>
    <item>
      <title>&amp;lt;JAVA TIL19&amp;gt; 마지막 MSA 프로젝트 시작! | dfs 문제 참고 + 클래스로더</title>
      <link>https://martt.tistory.com/269</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;  내일배움캠프 4/3 TIL&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;TIL.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZaLMe/btsM6vrE3xG/0YrVxFZHaXmfEjS5AKpkRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZaLMe/btsM6vrE3xG/0YrVxFZHaXmfEjS5AKpkRk/img.png&quot; data-alt=&quot;&amp;amp;lt;JAVA TIL19&amp;amp;gt; 마지막 MSA 프로젝트 시작! ❘ dfs 문제 참고 + 클래스로더&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZaLMe/btsM6vrE3xG/0YrVxFZHaXmfEjS5AKpkRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZaLMe%2FbtsM6vrE3xG%2F0YrVxFZHaXmfEjS5AKpkRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;213&quot; data-filename=&quot;TIL.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;&amp;lt;JAVA TIL19&amp;gt; 마지막 MSA 프로젝트 시작! ❘ dfs 문제 참고 + 클래스로더&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;코드타카&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;br /&gt;[무인도 여행]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;DFS&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;X가 아니면서, 방문하지 않은 좌표로 dfs 시작&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;cur에는 누적으로 더해줄 것임 (숫자로 변환: box[a][b] -'0')&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;전역변수&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;answer의 크기는 정해지지 않아서 List로 선언&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;String 배열을 char 배열로 바꿔주기 위한 box&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방문했는지 여부 visited&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방향키 dx, dy&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;누적값 cur&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1743651218229&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ArrayList&amp;lt;Integer&amp;gt; answer = new ArrayList&amp;lt;&amp;gt;();
char[][] box;
boolean[][] visited;
int[] dx = {-1, 1, 0, 0};
int[] dy = {0, 0, -1, 1};
int cur = 0;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;DFS&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743641080037&quot; class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;private void dfs(int a, int b) {
    visited[a][b] = true;
    cur += box[a][b] - '0';

    for (int i = 0; i &amp;lt; 4; i++) {
        int na = a + dx[i];
        int nb = b + dy[i];
        if (na &amp;gt;= 0 &amp;amp;&amp;amp; na &amp;lt; box.length &amp;amp;&amp;amp; nb &amp;gt;= 0 &amp;amp;&amp;amp; nb &amp;lt; box[0].length) {
            if (!visited[na][nb] &amp;amp;&amp;amp; box[na][nb] != 'X') {
                dfs(na, nb);
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1743651099032&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/154540&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/EI3UW/hyYxSptCyS/EOtpfOckqKXIm8lzupuNb1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/qHvOf/hyYxDFSxIx/FCIblaatmDsQioJCj3uaB0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/154540&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/154540&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/EI3UW/hyYxSptCyS/EOtpfOckqKXIm8lzupuNb1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/qHvOf/hyYxDFSxIx/FCIblaatmDsQioJCj3uaB0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;질문 정리&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;클래스 로더&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;질문:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;자바 어플리케이션 실행 과정은?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;답변:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;먼저 javac를 통해 자바 소스 파일(.java) 을 바이트코드(.class) 로 컴파일합니다.&lt;br /&gt;&lt;br /&gt;이후 java 명령어를 통해 JVM이 실행되며,&lt;br /&gt;클래스 로더가 클래스를 메모리에 로딩하고,&lt;br /&gt;바이트코드 검증 및 링킹 과정을 거친 후 main 메서드를 포함한 클래스의 static 초기화가 실행됩니다.&lt;br /&gt;&lt;br /&gt;마지막으로 JVM은 main() 메서드를 호출하면서 애플리케이션 실행이 시작됩니다. &lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;질문:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;클래스 로더 과정은?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;답변:&lt;br /&gt;로딩 &amp;rarr; 링킹(검증, 준비, 분석) &amp;rarr; 초기화&lt;br /&gt;클래스 로딩 과정은 &lt;b&gt;로딩, 링킹, 초기화 세 단계&lt;/b&gt;로 구성됩니다.&lt;br /&gt;&lt;br /&gt;먼저 .class 파일을 JVM 메모리에 로딩합니다.&lt;br /&gt;&lt;br /&gt;이어서 링킹 단계에서 바이트코드의 유효성을 검증하고,&lt;br /&gt;static 변수 메모리를 준비하며 참조를 실제 메모리 주소로 분석합니다.&lt;br /&gt;&lt;br /&gt;마지막으로 초기화 단계에서 static 변수들을 명시된 값으로 초기화하고&lt;br /&gt;static 블록이 실행되며 클래스가 본격적으로 동작할 준비를 마칩니다.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 질문:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;클래스 로더 과정은?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;답변:&lt;br /&gt;캐시 &amp;rarr; 상위 클래스 &amp;rarr; 본인 클래스(하위)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;우선 &lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;해당 클래스가 이미 로드되어 있는지&amp;nbsp;&lt;/span&gt;캐시를 확인&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;합니다.&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그 다음 상위 클래스, 하위 클래스, 본인 클래스 순으로 확인합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;아래 사진과 같이 클래스로더는 4가지의 위계 순서가 있습니다.&lt;br /&gt;부트스트랩 &amp;rarr; 확장 &amp;rarr; 애플리케이션 클래스 로더 순서로 올라가며,&lt;br /&gt;각 단계에서 클래스를 찾을 수 없을 경우 하위 로더가 로딩을 시도합니다.&lt;br /&gt;&lt;br /&gt;이를 통해 클래스 중복 로딩을 방지하고 보안성을 높입니다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GSslE/btsM6qKFvl7/lGqRVl9v10vqvTveTOfBV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GSslE/btsM6qKFvl7/lGqRVl9v10vqvTveTOfBV0/img.png&quot; data-alt=&quot;출처: 위키백과 클래스 로더&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GSslE/btsM6qKFvl7/lGqRVl9v10vqvTveTOfBV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGSslE%2FbtsM6qKFvl7%2FlGqRVl9v10vqvTveTOfBV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;400&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처: 위키백과 클래스 로더&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>팀스파르타</category>
      <category>TIL</category>
      <category>개발자TIL</category>
      <category>개발자면접</category>
      <category>면접질문</category>
      <category>클래스로더</category>
      <category>팀스파르타</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/269</guid>
      <comments>https://martt.tistory.com/269#entry269comment</comments>
      <pubDate>Thu, 3 Apr 2025 20:24:53 +0900</pubDate>
    </item>
    <item>
      <title>[88] 코딩테스트: 가장 먼 노드 graph 자바 풀이</title>
      <link>https://martt.tistory.com/268</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;코딩테스트 준비 88일차&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오늘 풀 문제는 가장 먼 노드이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그래프로 푸는 문제는 초기 세팅은 거의 다 유사한데,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그 이후로 조건에 따로 작성해야 한다.&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1743641041360&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ArrayList&amp;lt;Integer&amp;gt;[] list = new ArrayList[n+1];&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;가장 먼 노드&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;graph&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;bfs() 함수에 각 노드까지의 거리를 저장&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;492&quot; data-start=&quot;428&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;최댓값 거리를 구한 후, 그 거리와 같은 노드의 개수를 세어서 answer++&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;492&quot; data-start=&quot;428&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;distance라는 int 배열을 통해 거리를 따로 저장해준다는 생각 필요&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;492&quot; data-start=&quot;428&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;distance의 인덱스가 바로 노드의 값&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lEofj/btsM66SdPhK/KfKyJ3QKrNwWDQWb8BO8K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lEofj/btsM66SdPhK/KfKyJ3QKrNwWDQWb8BO8K1/img.png&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;580&quot; data-is-animation=&quot;false&quot; style=&quot;width: 42.5334%; margin-right: 10px;&quot; data-widthpercent=&quot;43.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lEofj/btsM66SdPhK/KfKyJ3QKrNwWDQWb8BO8K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlEofj%2FbtsM66SdPhK%2FKfKyJ3QKrNwWDQWb8BO8K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;741&quot; height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kCfki/btsM6CD0WgC/KrNyHQ6YKWYZaeYFBZLmlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kCfki/btsM6CD0WgC/KrNyHQ6YKWYZaeYFBZLmlK/img.png&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;421&quot; data-is-animation=&quot;false&quot; style=&quot;width: 56.3038%;&quot; data-widthpercent=&quot;56.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kCfki/btsM6CD0WgC/KrNyHQ6YKWYZaeYFBZLmlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkCfki%2FbtsM6CD0WgC%2FKrNyHQ6YKWYZaeYFBZLmlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;712&quot; height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;출처: 프로그래머스 가장 먼 노드 자바 풀이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Graph&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; &lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;1. graph로 저장할 list&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;2. 방문 visited / 거리 distance&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;3. bfs를 돌려서 방문하지 않았다면 q에 넣고 &amp;rarr; visited 처리 &amp;rarr; distance 이전 거리+1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;=&amp;gt; 최종적으로 distance에서 max 거리값 찾아서, &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;같으면 answer++&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;=&amp;gt; 그래프하면 &lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;ArrayList&amp;lt;Integer&amp;gt;[] list&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;최종 코드&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1743640812521&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    ArrayList&amp;lt;Integer&amp;gt;[] list;
    boolean[] visited;
    int[] distance;
    
    public int solution(int n, int[][] edge) {
        int answer = 0;
        list = new ArrayList[n+1];
        visited = new boolean[n+1];
        distance = new int[n+1];
        
        for(int i=1; i&amp;lt;=n; i++) {
            list[i] = new ArrayList&amp;lt;&amp;gt;();
        }
        
        for(int i=0; i&amp;lt;edge.length; i++) {
            list[edge[i][0]].add(edge[i][1]);
            list[edge[i][1]].add(edge[i][0]);
        }
        
        bfs();
        
        int max = 0;
        for(int i : distance) {
            max = Math.max(max, i);
        }
        
        for(int i: distance) {
            if(i == max) answer++; 
        }
        
        return answer;
    }
    
    private void bfs() {
        Queue&amp;lt;Integer&amp;gt; q = new ArrayDeque&amp;lt;&amp;gt;();
        q.add(1);
        visited[1] = true;
        distance[1] = 0;
        
        while(!q.isEmpty()) {
            int cur = q.poll();
            
            for(int i : list[cur]) {
                if(!visited[i]) {
                    visited[i] = true;
                    q.add(i);
                    distance[i] = distance[cur]+1;
                }
            }
        } 
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개인공부/알고리즘</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/268</guid>
      <comments>https://martt.tistory.com/268#entry268comment</comments>
      <pubDate>Thu, 3 Apr 2025 09:44:11 +0900</pubDate>
    </item>
    <item>
      <title>&amp;lt;JAVA TIL18&amp;gt; 게시판 만들기 | 자바 제네릭 질문</title>
      <link>https://martt.tistory.com/267</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;  내일배움캠프 4/2 TIL&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;TIL.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyYzZU/btsM5pkraeZ/XgzO6urlZ1oGQhl6wMA1a1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyYzZU/btsM5pkraeZ/XgzO6urlZ1oGQhl6wMA1a1/img.png&quot; data-alt=&quot;&amp;amp;lt;JAVA TIL18&amp;amp;gt; 게시판 만들기 ❘ 자바 제네릭 질문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyYzZU/btsM5pkraeZ/XgzO6urlZ1oGQhl6wMA1a1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyYzZU%2FbtsM5pkraeZ%2FXgzO6urlZ1oGQhl6wMA1a1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;213&quot; data-filename=&quot;TIL.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;&amp;lt;JAVA TIL18&amp;gt; 게시판 만들기 ❘ 자바 제네릭 질문&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;코드타카&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;br /&gt;[두 큐 합 같게 만들기]&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;ArrayDeque 다 똑같&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;Queue&amp;lt;Integer&amp;gt;&amp;nbsp;q1&amp;nbsp;=&amp;nbsp;new&amp;nbsp;LinkedList&amp;lt;&amp;gt;();&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;Deque&amp;lt;Integer&amp;gt;&amp;nbsp;q1&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ArrayDeque&amp;lt;&amp;gt;();&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;Queue&amp;lt;Integer&amp;gt;&amp;nbsp;q1&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ArrayDeque&amp;lt;&amp;gt;();&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;큐의 길이만큼 3배 돌려줌&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;합의 크기가 작은 쪽에 가장 앞의 숫자를 넘겨줌&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1743549637409&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while(count &amp;lt;= queue1.length*3) {
    if(s1 &amp;gt; s2) {
        int cur = q1.pop();
        s1 -= cur;
        s2 += cur;
        q2.add(cur);
        count++;
    } else if(s2 &amp;gt; s1) {
        int cur = q2.pop();
        s2 -= cur;
        s1 += cur;
        q1.add(cur);
        count++;
    } else {
        break;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;질문 정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;font-family: 'Noto Serif KR'; background-color: #ffffff; color: #333333; text-align: center;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;JAVA&lt;br /&gt;&lt;br /&gt;제네릭 + 레퍼 클래스&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;질문:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;제네릭이란?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;답변:&lt;br /&gt;클래스 내부에서 사용할 데이터 타입을&lt;br /&gt;직접 사용할 때 설정하는 것이다.&lt;br /&gt;&lt;br /&gt;내가 원하는 타입으로 만들어서 클래스를 사용할 수 있다!&lt;br /&gt;&lt;br /&gt;※ 자료형은 기본형과 참조형이 있다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 질문:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;wrapper 클래스란?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;답변:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;기본형을 객체로 다뤄야할 때가 있는데, 이때 사용된다.&lt;br /&gt;(primary &amp;rarr; reference / 감싸서 Object로 사용하기 위함)&lt;br /&gt;&lt;br /&gt;2가지의 특징이 있다.&lt;br /&gt;1. == 연산이 불가하다. &amp;rarr; reference는 참조 주소를 비교하기 때문&lt;br /&gt;2. Immutable으로 변경 불가하다. &amp;rarr; 기존값 변경이 아닌 새로운 값이 활당됨&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 질문:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;String 클래스란?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;답변:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;&quot;&gt;String 클래스 reference다.&lt;br /&gt;== 연산이 불가할까 싶지만 가능하다.&lt;br /&gt;&lt;br /&gt;리터럴로 생성하면, &lt;span style=&quot;font-family: 'Noto Serif KR'; color: #666666; text-align: left;&quot;&gt;Heap 안의&lt;/span&gt; String Pool에 저장해서 비교할 수 있다.&lt;br /&gt;근데 new String으로 생성하면 Heap에 새로 생성하기에 == 연산자로 비교할 수 없다.&lt;/span&gt;&lt;/blockquote&gt;</description>
      <category>팀스파르타</category>
      <category>TIL</category>
      <category>개발자</category>
      <category>개발자TIL</category>
      <category>래퍼클래스</category>
      <category>제네릭</category>
      <author>마트스</author>
      <guid isPermaLink="true">https://martt.tistory.com/267</guid>
      <comments>https://martt.tistory.com/267#entry267comment</comments>
      <pubDate>Wed, 2 Apr 2025 14:24:06 +0900</pubDate>
    </item>
  </channel>
</rss>