<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발 공부 기록</title>
    <link>https://develop-me-z.tistory.com/</link>
    <description>웹개발자</description>
    <language>ko</language>
    <pubDate>Wed, 15 Jul 2026 03:19:23 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>데메즈</managingEditor>
    <image>
      <title>개발 공부 기록</title>
      <url>https://tistory1.daumcdn.net/tistory/4939537/attach/bff5599dd3b84d8f8f62887c0dff92e8</url>
      <link>https://develop-me-z.tistory.com</link>
    </image>
    <item>
      <title>[프로그래머스/Java] K번째수 : Arrays.copyOfRange()</title>
      <link>https://develop-me-z.tistory.com/357</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42748&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42748&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783999059383&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/42748&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bSyQpS/dJMb9kmoGZq/Zenz4bTy0Boge7TVEYsYnK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/hdUPd/dJMb83kFiYR/8YnkEX85GWEuQsnE0RATaK/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/42748&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42748&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bSyQpS/dJMb9kmoGZq/Zenz4bTy0Boge7TVEYsYnK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/hdUPd/dJMb83kFiYR/8YnkEX85GWEuQsnE0RATaK/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;background-color: #f6e199;&quot;&gt;Queue를 초기화&lt;/span&gt;하지 않으면 찌꺼기 데이터가 들어갈 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. for문이 시작하자마자 &lt;b data-index-in-node=&quot;62&quot; data-path-to-node=&quot;8,0&quot;&gt;큐를 매번 새로 만들어주거나(queue = new PriorityQueue&amp;lt;&amp;gt;();)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 루프가 끝날 때 큐를 비워주(queue.clear();)&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;★ 정답의 배열의 크기를 아는 상황에서는 stream() 대신 일반배열 쓰기! (효율성 테스트)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1783999067375&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        ArrayList&amp;lt;Integer&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
        
        for(int cnt=0; cnt&amp;lt;commands.length; cnt++){
            PriorityQueue&amp;lt;Integer&amp;gt; queue = new PriorityQueue&amp;lt;&amp;gt;();
            
            int i = commands[cnt][0]-1;
            int j = commands[cnt][1]-1;
            int k = commands[cnt][2]-1;

            for(int num = i; num&amp;lt;=j; num++){
                queue.offer(array[num]);
            }
            
            while(k&amp;gt;0){
                k--;
                queue.poll();
            }
            list.add(queue.poll());
        }
        
        return list.stream().mapToInt(i-&amp;gt;i).toArray();
    }
}&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;background-color: #f6e199;&quot;&gt;Arrays.copyOfRange()&amp;nbsp;&lt;/span&gt; : 자바가 제공하는 배열 자르기 메서드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 가독성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 압도적인 성능차이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 인덱스 계산의 단순&lt;/p&gt;
&lt;pre id=&quot;code_1783999386421&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        // 1. 정답을 담을 배열을 commands 개수만큼 미리 만듭니다.
        int[] answer = new int[commands.length];
        
        for (int cnt = 0; cnt &amp;lt; commands.length; cnt++) {
            int i = commands[cnt][0];
            int j = commands[cnt][1];
            int k = commands[cnt][2];
            
            // 2. [핵심] array의 i-1번째부터 j번째 직전까지 슥삭 잘라냅니다.
            // (i-1은 포함, j는 미포함이라 딱 문제 조건만큼 잘립니다.)
            int[] slicedArray = Arrays.copyOfRange(array, i - 1, j);
            
            // 3. 잘라낸 배열을 오름차순으로 정렬합니다. (듀얼 피벗 퀵소트라 엄청 빠릅니다.)
            Arrays.sort(slicedArray);
            
            // 4. 정렬된 배열에서 k-1 번째 수를 정답 배열에 바로 꽂아 넣습니다.
            answer[cnt] = slicedArray[k - 1];
        }
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/357</guid>
      <comments>https://develop-me-z.tistory.com/357#entry357comment</comments>
      <pubDate>Tue, 14 Jul 2026 12:26:00 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/Java] 올바른 괄호 Queue ( +charAt() )</title>
      <link>https://develop-me-z.tistory.com/356</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12909&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12909&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783934395175&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/12909&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cJnWeP/dJMb887kXkZ/KdzbAyud1SIMIX1QjcLWJk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bkOpdY/dJMb887kXkY/Pfk4JkZ8qKrPpTypX2bnb1/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/12909&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12909&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cJnWeP/dJMb887kXkZ/KdzbAyud1SIMIX1QjcLWJk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bkOpdY/dJMb887kXkY/Pfk4JkZ8qKrPpTypX2bnb1/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;Queue 사용&lt;/p&gt;
&lt;pre id=&quot;code_1783934406076&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        char[] arr = s.toCharArray();
        Queue&amp;lt;Character&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();
        
        for(char c : arr){
                    
            if(c == '('){
                queue.offer(c);
            } else {
                if(queue.isEmpty()) return false;
                queue.poll();
            }
        }
        

        return queue.isEmpty();
    }
}&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;charAt() 사용&lt;/p&gt;
&lt;pre id=&quot;code_1783934436239&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    boolean solution(String s) {
        int count = 0;
        int len = s.length(); // 반복문 안에서 매번 호출하지 않도록 미리 변수화
        
        for (int i = 0; i &amp;lt; len; i++) {
            if (s.charAt(i) == '(') {
                count++;
            } else {
                // 닫는 괄호가 나왔는데 열린 괄호가 없다면 바로 false
                if (count == 0) return false; 
                count--;
            }
        }
        
        // 최종적으로 모든 괄호의 짝이 맞아서 0이 되어야 true
        return count == 0;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/356</guid>
      <comments>https://develop-me-z.tistory.com/356#entry356comment</comments>
      <pubDate>Mon, 13 Jul 2026 18:20:43 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/Java] 프로세스 Queue (+PriorityQueue)</title>
      <link>https://develop-me-z.tistory.com/355</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42587&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42587&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783933549145&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/42587&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/69XeO/dJMb9jOyYNB/Sf5QxRzbmzpdYFDAsWbJEK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/zvZ8I/dJMb9c9JX9o/WhnFLHWOX3r5UjKHEMPV5k/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/42587&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42587&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/69XeO/dJMb9jOyYNB/Sf5QxRzbmzpdYFDAsWbJEK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/zvZ8I/dJMb9c9JX9o/WhnFLHWOX3r5UjKHEMPV5k/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;/p&gt;
&lt;pre id=&quot;code_1783933562469&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0, result = -1;
        Queue&amp;lt;int[]&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();
        
        for(int i=0; i&amp;lt;priorities.length; i++){
            queue.offer(new int[]{i, priorities[i]});
        }
        
        while(result != location){
            
            int[] current = queue.poll();
            boolean flag = false;
            
            for(int[] q : queue){
                if(q[1] &amp;gt; current[1]){
                    flag = true;
                    break;
                }
            }
            
            if(flag){
                queue.offer(current);
            } else {
                result = current[0];
                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;PriorityQueue를 활용한 최적화 코드&lt;/p&gt;
&lt;pre id=&quot;code_1783933606485&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        
        // 1. 일반 큐: [처음 위치, 우선순위] 저장
        Queue&amp;lt;int[]&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();
        // 2. 우선순위 큐: 높은 숫자(우선순위) 순으로 자동 정렬 (내림차순)
        PriorityQueue&amp;lt;Integer&amp;gt; pq = new PriorityQueue&amp;lt;&amp;gt;(Collections.reverseOrder());
        
        for (int i = 0; i &amp;lt; priorities.length; i++) {
            queue.offer(new int[]{i, priorities[i]});
            pq.offer(priorities[i]);
        }
        
        while (!queue.isEmpty()) {
            int[] current = queue.poll();
            
            // pq.peek()은 현재 남아있는 프로세스 중 '가장 높은 우선순위'를 말합니다.
            if (current[1] &amp;lt; pq.peek()) {
                // 더 높은 우선순위가 존재하므로 맨 뒤로 보냅니다.
                queue.offer(current);
            } else {
                // 현재 꺼낸 것이 가장 높은 우선순위이므로 실행(인쇄)합니다.
                pq.poll(); // 실행되었으므로 우선순위 큐에서도 제거
                answer++;  // 차례 카운트
                
                // 실행한 프로세스가 내가 찾던 위치(location)라면 종료!
                if (current[0] == location) {
                    break;
                }
            }
        }
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/355</guid>
      <comments>https://develop-me-z.tistory.com/355#entry355comment</comments>
      <pubDate>Mon, 13 Jul 2026 18:07:13 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/Java] 기능개발</title>
      <link>https://develop-me-z.tistory.com/354</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42586&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42586&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783892116554&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/42586&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fO5v1/dJMb85W5uVl/uyKFYgDQQVmP0hKqn9sqUK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/AUrzK/dJMb87N8XJa/ABsELdErJE23lMkgy5jgnK/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/42586&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42586&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fO5v1/dJMb85W5uVl/uyKFYgDQQVmP0hKqn9sqUK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/AUrzK/dJMb87N8XJa/ABsELdErJE23lMkgy5jgnK/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_1783892121554&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        Queue&amp;lt;Integer&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();
        List&amp;lt;Integer&amp;gt; result = new ArrayList&amp;lt;&amp;gt;();
        
        for(int i=0; i&amp;lt;progresses.length; i++){
            int remain = 100 - progresses[i];
            int day = remain / speeds[i];
            
            if(remain % speeds[i] != 0){
                day++;
            }
            
            queue.offer(day);
        }
        
        while(!queue.isEmpty()){
            int first = queue.poll();
            int count = 1;
            
            while(!queue.isEmpty() &amp;amp;&amp;amp; queue.peek() &amp;lt;= first){
                queue.poll();
                count++;
            }
            
            result.add(count);
        }
        
        int[] answer = new int[result.size()];
        
        for(int i=0; i&amp;lt;result.size(); i++){
            answer[i] = result.get(i);
        }
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/354</guid>
      <comments>https://develop-me-z.tistory.com/354#entry354comment</comments>
      <pubDate>Mon, 13 Jul 2026 06:47:22 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/Java] 게임 맵 최단거리 (BFS)</title>
      <link>https://develop-me-z.tistory.com/353</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/1844&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/1844&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783691197349&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/1844&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ifqZV/dJMb9b33PgY/92JHA5utsdeAbFCXzuH6Pk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/gB6DY/dJMb9cBTMja/r2IuUfHfyygTfQX9PbOlzk/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/1844&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/1844&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ifqZV/dJMb9b33PgY/92JHA5utsdeAbFCXzuH6Pk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/gB6DY/dJMb9cBTMja/r2IuUfHfyygTfQX9PbOlzk/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;★ Queue는 q.add() 대기열에 넣는 순간 visited = true 방문체크 해주기!!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1783691205935&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.LinkedList;
import java.util.Queue;

class Node{
    int x, y, cost;
    
    Node(int x, int y, int cost){
        this.x = x;
        this.y = y;
        this.cost = cost;
    }
}

class Solution {
    Queue&amp;lt;Node&amp;gt; q = new LinkedList&amp;lt;&amp;gt;();
    boolean[][] visited;
    int[] dx = {-1, 1, 0, 0}; //상하좌우
    int[] dy = {0, 0, -1, 1};
    
    public int solution(int[][] maps) { // 0:벽 1:길
        int answer = 0;
        int n = maps.length, m = maps[0].length;
        
        visited = new boolean[n+1][m+1];
                
        q.add(new Node(1,1,1));
        visited[1][1] = true;
        
        return bfs(maps, n, m);
    }
    
    private int bfs(int[][] maps, int n, int m){
        while(!q.isEmpty()){
            Node current = q.poll();
            
            
            if(current.x == n &amp;amp;&amp;amp; current.y == m){
                return current.cost;
            }
            
            for(int i=0; i&amp;lt;4; i++){
                int x = current.x + dx[i];
                int y = current.y + dy[i];
                
                if(x&amp;gt;=1 &amp;amp;&amp;amp; x&amp;lt;=n &amp;amp;&amp;amp; y&amp;gt;=1 &amp;amp;&amp;amp; y&amp;lt;=m &amp;amp;&amp;amp; maps[x-1][y-1]==1 &amp;amp;&amp;amp; !visited[x][y]){
                    Node item = new Node(x,y,current.cost+1);
                    q.add(item);
                    visited[x][y]=true;
                }
            }
        }
        return -1;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/353</guid>
      <comments>https://develop-me-z.tistory.com/353#entry353comment</comments>
      <pubDate>Fri, 10 Jul 2026 22:48:29 +0900</pubDate>
    </item>
    <item>
      <title>BFS 공부 - 최단 거리 (최소 시간)</title>
      <link>https://develop-me-z.tistory.com/352</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;★BFS는 Queue 자료구조 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 먼저 온 사람이 먼저 나간다 (First In, First Out)&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;★BFS 실전 뼈대 코드&lt;/p&gt;
&lt;pre id=&quot;code_1783684737051&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.LinkedList;
import java.util.Queue;

class Solution{
	static boolean[] visited;
    
    public void bfs(int startNode, int[][] graph, int n){
    	// 대기 명단을 준비한다
        Queue&amp;lt;Integer&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();
        
        // 시작점을 큐에 넣고 방문 도장을 찍는다
        queue.add(startNode);
        visited[startNode] = true;
        
        // 대기명단이 텅 빌 때까지 무한 반복
        while(!queue.isEmpty()){
        	// 대기 명단 맨 앞줄에 있는 사람을 꺼낸다
            int current = queue.poll();
            
            // 꺼낸 사람의 이웃들을 전부 살펴본다
            for(int nextNode = 1; nextNode &amp;lt;= n; nextNode++){
            	// 연결되어있고 한번도 방문 안한 친구라면?
                if(graph[current][nextNode]==1 &amp;amp;&amp;amp; !visited[nextNode]){
                	// 대기 명단 맨 뒤에 줄을 세우고 방문 도장 찍는다
                    queue.add(nextNode);
                    visited[nextNode] = true;
                }
            }
        }
    }
}&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;★ 2차원 배열 격자판에서의 상하좌우&lt;/p&gt;
&lt;pre id=&quot;code_1783686658071&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 상하좌우 순서대로 x와 y의 변화량
int[] dx = {-1, 1, 0, 0};
int[] dy = {0, 0, -1, 1};

// for문을 4번 돌리면서 현재 좌표 (x,y)에 더해주면 사방 찔러보기 가능
for(int i=0; i&amp;lt;4; i++){
	int nx = currentX + dx[i];
    int ny = currentY + dy[i];
}&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;★ Queue에 좌표 두개(x,y)를 같이 넣는 법&lt;/p&gt;
&lt;pre id=&quot;code_1783686838177&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Node{
	int x, y, cost;
    
    Node(int x, int y, int cost){
    	this.x = x;
        this.y = y;
        this.cost = cost;
    }
}

Queue&amp;lt;Node&amp;gt; q = new LinkedList&amp;lt;&amp;gt;();
q.add(new Node(0, 0, 1)); // 0,0 좌표에서 시작 거리 1로 출발&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/352</guid>
      <comments>https://develop-me-z.tistory.com/352#entry352comment</comments>
      <pubDate>Fri, 10 Jul 2026 21:34:10 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/Java] 네트워크 (DFS)</title>
      <link>https://develop-me-z.tistory.com/351</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43162&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/43162&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783683667637&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/43162&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bLBIfw/dJMb8Rkd30q/a1qKKGncKj7F3HWeYthcTk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/lQswL/dJMb8Rkd30r/kPyAzl9Sp3pk8IrkLrrDGk/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/43162&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43162&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bLBIfw/dJMb8Rkd30q/a1qKKGncKj7F3HWeYthcTk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/lQswL/dJMb8Rkd30r/kPyAzl9Sp3pk8IrkLrrDGk/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_1783683673810&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Stack;

class Solution {
    boolean[] visited;
    Stack&amp;lt;Integer&amp;gt; stack = new Stack&amp;lt;&amp;gt;();
    public int solution(int n, int[][] computers) {
        int answer = 0;
        visited = new boolean[n];
        
        for(int i=0; i&amp;lt;n; i++){
            if(!visited[i]){
                answer += 1;
                stack.push(i);
                dfs(n, computers);
            }
        }
        
        
        return answer;
    }
    
    private void dfs(int n, int[][] computers){
        if(stack.isEmpty()){
            return;
        }
        int current = stack.pop();
        visited[current] = true;
        
        for(int i=0; i&amp;lt;n; i++){
            if(computers[current][i]==1 &amp;amp;&amp;amp; !visited[i]){
                stack.push(i);
            }
        }
        dfs(n, computers);
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/351</guid>
      <comments>https://develop-me-z.tistory.com/351#entry351comment</comments>
      <pubDate>Fri, 10 Jul 2026 20:41:21 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/Java] 타겟 넘버 (DFS)</title>
      <link>https://develop-me-z.tistory.com/350</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=java&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783601843753&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/43165?language=java&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/crR5g0/dJMb8RR3LQk/57q07nv5G96lrxoGvzPOl1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bTpuFl/dJMb8RkdXj1/cijNy5uFVuAJkuJKqatJhk/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/43165?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=java&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/crR5g0/dJMb8RR3LQk/57q07nv5G96lrxoGvzPOl1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bTpuFl/dJMb8RkdXj1/cijNy5uFVuAJkuJKqatJhk/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;1. 기저 조건 (탈출 조건)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 숫자를 다 골랐을 때( index == numbers.length ) 바닥에 도착한 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이때 sum == target 이라면 정답 카운트 올린다&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;2. 재귀 단계 (갈래길 탐색)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 현재 숫자를 더하는 경우 : dfs(index+1, sum+현재숫자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 현재 숫자를 빼는 경우 : dfs(index+1, sum-현재숫자)&lt;/p&gt;
&lt;pre id=&quot;code_1783601849005&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    int answer = 0;
    public int solution(int[] numbers, int target) {
        // 0번째 인덱스부터, 시작 총합은 0부터 탐색 시작
        dfs(numbers, target, 0, 0);
        return answer;
    }
    
    public void dfs(int[] numbers, int target, int index, int sum){
        // 기저조건 : 모든 숫자를 다 사용해서 바닥에 도달
        if(index == numbers.length){
            // 지금까지의 총합이 타겟넘버와 같다면 정답 카운트 증가
            if(sum == target){
                answer++;
            }
            return;
        }
        
        // 재귀 단계 : 현재 숫자를 더하거나 빼는 두 갈래길 탐색
        dfs(numbers, target, index+1, sum+numbers[index]); // 더하기 선택
        dfs(numbers, target, index+1, sum-numbers[index]); // 빼기 선택
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/350</guid>
      <comments>https://develop-me-z.tistory.com/350#entry350comment</comments>
      <pubDate>Thu, 9 Jul 2026 22:04:10 +0900</pubDate>
    </item>
    <item>
      <title>DFS 공부</title>
      <link>https://develop-me-z.tistory.com/349</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;★DFS (깊이 우선 탐색) : 한 우물만 파고 끝까지 내려가는 탐색. 스택(Stack)의 원리나 재귀함수 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;★BFS (너비 우선 탐색) : 내 주변부터 가까운 곳을 넓게 퍼져나가며 탐색. 큐(Queue)의 자료구조 사용. 최단거리는 무조건 BFS&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;/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;DFS : 재귀함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BFS : Queue / LinkedList&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;★ 재귀 함수의 필수 2대 조건★&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 기저 조건(Base Case) : &quot;언제 멈출 것인가?&quot; 를 정하는 탈출 조건 (if 문으로 구현)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 재귀 단계 (Recursive Case) : 문제를 더 작은 단위로 쪼개서 자기 자신을 다시 호출&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;background-color: #f6e199;&quot;&gt;&amp;lt;그래프를 코드로 표현하는 방법&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인접 행렬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드가 총 3개 있고, 1-2, 1-3 연결된 그래프 (인덱스를 번호와 맞추기 위해 크기를 N+1로 잡는게 팁)&lt;/p&gt;
&lt;pre id=&quot;code_1783600127641&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int[][] graph = new int[4][4]; // 0번은 안쓰고 1~3번 노드 사용

graph[1][2] = 1; graph[2][1] = 1; // 1번과 2번이 연결됨(양방향)
graph[1][3] = 1; graph[3][1] = 1; // 1번과 3번이 연결됨&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점 : graph[1][3] = 1 인지만 확인하면 되니까 빛의 속도로 확인 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점 : 노드가 1만개인데 연결된 선은 고작 2개라면, 메모리를 엄청나게 낭비&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;2. 인접 리스트 ★실전 빈출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 노드마다 바구니(ArrayList) 를 하나씩 주고, 연결된 이웃 번호를 담아두는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 1번 바구니 : [2,3] (2,3번과 연결)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 2번 바구니 : [1] (1번과 연결)&lt;/p&gt;
&lt;pre id=&quot;code_1783600479506&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayList;

// 노드 개수만큼 ArrayList 공간(바구니 배열)을 만든다
ArrayList&amp;lt;Integer&amp;gt;[] graph = new ArrayList[4];

// 각 방마다 진자 바구니를 채워 초기화한다
for(int i=1; i&amp;lt;=3; i++){
	graph[i] = new ArrayList&amp;lt;&amp;gt;();
}

// 연결 정보 입력하기
graph[1].add(2); graph[2].add(1); // 1번 바구니에 2 넣고, 2번 바구니에 1 넣기
graph[1].add(3); graph[3].add(10; // 1번 바구니에 3 넣고, 3번 바구니에 1 넣기&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점 : 연결된 만큼만 숫자를 저장해서 메모리를 효율적으로 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 바둑판, 미로찾기, 모눈종이 맵 : 고민도 하지말고 1번 인접행렬(2차원 배열)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 트리구조, 컴퓨터 네트워크, 친구 관계 맵 : 2번 인접리스트&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;background-color: #f6e199;&quot;&gt;DFS의 실전 뼈대 코드와 방문(visited) 체크 개념&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;★DFS 실전 뼈대 코드 ★&lt;/p&gt;
&lt;pre id=&quot;code_1783600929345&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayList;

class Solution{
	// 전역 변수로 그래프 도화지와 방문체크 배열 선언
    static ArrayList&amp;lt;Integer&amp;gt;[] graph;
    static boolean[] visited;
    
    public void dfs(int node){
    	// [체크인] 현재 노드에 방문 도장을 찍는다
        visited[node] = true;
        System.out.print(node + &quot;-&amp;gt;&quot;);
        
        // [이웃 탐색] 현재 노드와 연결된 친구(이웃)들을 한놈씩 꺼낸다
        for(int nextNode : graph[node]){
        	// [방어 조건] 만약 방문한적이 없다면?
            if(!visited[nextNode]){
            	dfs(nextNode);
            }
        }
    }
}&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;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/349</guid>
      <comments>https://develop-me-z.tistory.com/349#entry349comment</comments>
      <pubDate>Thu, 9 Jul 2026 21:56:46 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/Java] 의상</title>
      <link>https://develop-me-z.tistory.com/348</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=java&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783597645159&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/42578?language=java&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bzFvTw/dJMb9kmoex0/PNlI8v1gSY2jwcXcgdas4K/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/Hi6lc/dJMb9kmoexZ/hkXNqbKjADHj4idDoDk651/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/42578?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=java&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bzFvTw/dJMb9kmoex0/PNlI8v1gSY2jwcXcgdas4K/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/Hi6lc/dJMb9kmoexZ/hkXNqbKjADHj4idDoDk651/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;조합 까먹음 ㅠㅠ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z1VjG/dJMcabEPNNm/IUopVyXmeeasFUSuwJGE80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z1VjG/dJMcabEPNNm/IUopVyXmeeasFUSuwJGE80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z1VjG/dJMcabEPNNm/IUopVyXmeeasFUSuwJGE80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ1VjG%2FdJMcabEPNNm%2FIUopVyXmeeasFUSuwJGE80%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;587&quot; height=&quot;564&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1783597650289&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashMap;

class Solution {
    public int solution(String[][] clothes) {
        HashMap&amp;lt;String, Integer&amp;gt; map = new HashMap&amp;lt;&amp;gt;();
        
        for(String[] cloth : clothes){
            String kind = cloth[1];
            map.put(kind, map.getOrDefault(kind, 0)+1);
        }
        int answer = 1;
        for(String key : map.keySet()){
            int num = map.get(key);
            answer *= (num+1);
        }
        
        return answer-1;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코딩테스트</category>
      <author>데메즈</author>
      <guid isPermaLink="true">https://develop-me-z.tistory.com/348</guid>
      <comments>https://develop-me-z.tistory.com/348#entry348comment</comments>
      <pubDate>Thu, 9 Jul 2026 20:48:00 +0900</pubDate>
    </item>
  </channel>
</rss>