<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>꾸준한 연습장</title>
    <link>https://my-coding-notes.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 7 Jul 2026 07:12:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>김세진</managingEditor>
    <item>
      <title>[Lv.2 / 프로그래머스 / 파이썬] 교점에 별 만들기</title>
      <link>https://my-coding-notes.tistory.com/804</link>
      <description>&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;figure id=&quot;og_1751328344025&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/87377&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fBQHi/hyZf3ClD4i/UQ3YdYTNoHuW0kKHo0Bqf0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/eEnXlQ/hyZf6lxQQH/2qsKUko2YQvGPdvCovwCjk/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/87377&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87377&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fBQHi/hyZf3ClD4i/UQ3YdYTNoHuW0kKHo0Bqf0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/eEnXlQ/hyZf6lxQQH/2qsKUko2YQvGPdvCovwCjk/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;1716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzaf7v/btsOZhkl01y/PgcyRCHsuTyJDaBG2eN551/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzaf7v/btsOZhkl01y/PgcyRCHsuTyJDaBG2eN551/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzaf7v/btsOZhkl01y/PgcyRCHsuTyJDaBG2eN551/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzaf7v%2FbtsOZhkl01y%2FPgcyRCHsuTyJDaBG2eN551%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;1228&quot; height=&quot;1716&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;1716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;1548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EQXfp/btsOYP2THn5/fsKcOFDSFu8MHR3Q6rpfC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EQXfp/btsOYP2THn5/fsKcOFDSFu8MHR3Q6rpfC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EQXfp/btsOYP2THn5/fsKcOFDSFu8MHR3Q6rpfC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEQXfp%2FbtsOYP2THn5%2FfsKcOFDSFu8MHR3Q6rpfC1%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;1216&quot; height=&quot;1548&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;1548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;1684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c81MyC/btsOXiEZcDH/1EVL7ZKlywu4dP6KYe2mg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c81MyC/btsOXiEZcDH/1EVL7ZKlywu4dP6KYe2mg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c81MyC/btsOXiEZcDH/1EVL7ZKlywu4dP6KYe2mg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc81MyC%2FbtsOXiEZcDH%2F1EVL7ZKlywu4dP6KYe2mg1%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;1212&quot; height=&quot;1684&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;1684&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biSHlQ/btsOZgzamSO/FZmQxLWQic2rieG05nU6k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biSHlQ/btsOZgzamSO/FZmQxLWQic2rieG05nU6k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biSHlQ/btsOZgzamSO/FZmQxLWQic2rieG05nU6k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiSHlQ%2FbtsOZgzamSO%2FFZmQxLWQic2rieG05nU6k1%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;1226&quot; height=&quot;506&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLheeu/btsOZQNlki6/MeFLDVXzEwyTkm8OtKfZh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLheeu/btsOZQNlki6/MeFLDVXzEwyTkm8OtKfZh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLheeu/btsOZQNlki6/MeFLDVXzEwyTkm8OtKfZh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLheeu%2FbtsOZQNlki6%2FMeFLDVXzEwyTkm8OtKfZh1%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;1214&quot; height=&quot;384&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;384&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진 직선들의 교점을 구해, 그 자리에 별을 찍어 출력해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;참고 사항을 확인하여 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;교점을 구하는 방법을 알 수 있다.&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 Sans Light';&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;우선 모든 교점을 다 구한 다음, 교점 좌표의 x,y별 min, max값을 구해 그 크기만큼의 배열을 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이제 구한 교점들을 순회하며 좌표를 배열의 인덱스에 맞게끔 민맥싱하여 별을 찍어주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1751328922336&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(line):
    N = len(line)
    cand = set()
    
    min_x = min_y = float('inf')
    max_x = max_y = -float('inf')
    
    # 모든 직선을 서로 비교
    for i in range(N):
        for j in range(i+1, N):
            point = get_xy(line[i], line[j])
            if not point:
                continue
            
            x, y = point
            min_x = min(min_x, x); max_x = max(max_x, x)
            min_y = min(min_y, y); max_y = max(max_y, y)
            
            cand.add(point)
    
    # 필요한 넓이만큼 좌표 평면 생성
    board = [[&quot;.&quot;] * (max_x - min_x+ 1) for _ in range(max_y - min_y  + 1)]
    
    # 별 찍기
    for x, y in cand:
        board[max_y - y][x - min_x] = '*'
    
    return [''.join(row) for row in board]
            

def get_xy(l1, l2):
    a, b, e = l1
    c, d, f = l2
    
    # 두 직선이 평행 또는 일치인 경우
    if a*d - b*c == 0:
        return None
    
    x = (b*f - e*d) / (a*d - b*c)
    y = (e*c - a*f) / (a*d - b*c)
    
    # 나누어 떨어지지 않는 경우
    if x != int(x) or y != int(y):
        return None
    
    return (int(x), int(y))&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 연습/구현, 문자열</category>
      <category>구현</category>
      <category>문자열</category>
      <category>알고리즘</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/804</guid>
      <comments>https://my-coding-notes.tistory.com/804#entry804comment</comments>
      <pubDate>Tue, 1 Jul 2025 09:15:44 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.2 / 프로그래머스 / 파이썬] 모음사전</title>
      <link>https://my-coding-notes.tistory.com/803</link>
      <description>&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;figure id=&quot;og_1749798194538&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/84512&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xqcIN/hyY4cA89tn/rdkpsfvKHQ0J2KyjyPmCu0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cbRxQO/hyY72czecg/fWYXYrM34eC6vUZ26Oyu71/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/84512&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/84512&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xqcIN/hyY4cA89tn/rdkpsfvKHQ0J2KyjyPmCu0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cbRxQO/hyY72czecg/fWYXYrM34eC6vUZ26Oyu71/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;1510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/etZLos/btsOBzenatC/IpJ0thPxgNuRFcSbqQuqV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/etZLos/btsOBzenatC/IpJ0thPxgNuRFcSbqQuqV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/etZLos/btsOBzenatC/IpJ0thPxgNuRFcSbqQuqV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FetZLos%2FbtsOBzenatC%2FIpJ0thPxgNuRFcSbqQuqV1%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;1366&quot; height=&quot;1510&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;1510&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&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 Sans Light';&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 Sans Light';&quot;&gt;1. 'A'를 붙인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 끝 글자를 다음 순서의 모음으로 교체한다.&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 Sans Light';&quot;&gt;만약 끝 글자가 U일 경우, 그 다음 순서의 모음을 교체해야 하므로, U를 제거한 뒤 다음 순서로 넘어가면 된다.&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;pre id=&quot;code_1749798998840&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(word):
    alpha = ['A', 'E', 'I', 'O', 'U']
    
    cur_word = 'A'
    cnt = 1
    
    while cur_word != word:
        cnt += 1
        
        # 현재 단어 길이가 5보다 작으면 'A'를 붙임
        if len(cur_word) &amp;lt; 5:
            cur_word += 'A'
            continue
        
        # 끝 글자가 'U' 면 계속 제거
        while cur_word[-1] == 'U':
            cur_word = cur_word[:-1]
        
        # 끝 글자를 다음 순서의 글자로 바꿈
        cur_idx = alpha.index(cur_word[-1])
        cur_word = cur_word[:-1] + alpha[(cur_idx+1)%5]
        
    return cnt&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 연습/브루트 포스</category>
      <category>브루트 포스</category>
      <category>알고리즘</category>
      <category>완전탐색</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/803</guid>
      <comments>https://my-coding-notes.tistory.com/803#entry803comment</comments>
      <pubDate>Fri, 13 Jun 2025 17:31:27 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.2 / 프로그래머스 / 파이썬] 무인도 여행</title>
      <link>https://my-coding-notes.tistory.com/802</link>
      <description>&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;figure id=&quot;og_1748591745126&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/bF2M9D/hyY1ahC9Ct/8hU77cSHZMW4taWzdFRxO1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/DCMzi/hyY1bHB4NI/iBCWzEOPRMKNBXPS0klDK0/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/bF2M9D/hyY1ahC9Ct/8hU77cSHZMW4taWzdFRxO1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/DCMzi/hyY1bHB4NI/iBCWzEOPRMKNBXPS0klDK0/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1626&quot; data-origin-height=&quot;1748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vqkNh/btsOkBY1hiD/6TkOfehtp4RSRy9Ju8kj01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vqkNh/btsOkBY1hiD/6TkOfehtp4RSRy9Ju8kj01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vqkNh/btsOkBY1hiD/6TkOfehtp4RSRy9Ju8kj01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvqkNh%2FbtsOkBY1hiD%2F6TkOfehtp4RSRy9Ju8kj01%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;1626&quot; height=&quot;1748&quot; data-origin-width=&quot;1626&quot; data-origin-height=&quot;1748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;1450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bambD3/btsOjtNV6DZ/8Xjer5kDQSfppmEza3RUPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bambD3/btsOjtNV6DZ/8Xjer5kDQSfppmEza3RUPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bambD3/btsOjtNV6DZ/8Xjer5kDQSfppmEza3RUPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbambD3%2FbtsOjtNV6DZ%2F8Xjer5kDQSfppmEza3RUPK%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;1630&quot; height=&quot;1450&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;1450&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;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;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;연결된 땅들의 크기를 계산하여 각 섬의 크기를 오름차순으로 출력하는 문제이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;DFS 및 BFS를 사용하여 해결할 수 있다.&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 Sans Light';&quot;&gt;작성된 코드의 알고리즘 순서는 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;맵을 탐색하며 X가 아닌 부분(섬의 일부)을 찾는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;섬의 일부를 발견한 경우, BFS로 섬 전체를 탐색한다.&lt;/span&gt;&lt;br /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;섬을 방문한 좌표의 경우 X로 표시로 체크하여 재방문을 막는다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;섬 탐색이 끝나면 현재 섬의 크기를 저장한 다음, 맵을 이어서 탐색하며 다른 섬들을 찾는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;맵 탐색이 전부 끝나면, 저장된 섬의 크기를 오름차순 정렬한 다음 반환한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1748592128474&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(maps):
    board = [list(m) for m in maps]
    move = [(0, 1), (1, 0), (0, -1), (-1, 0)]
    N, M = len(board), len(board[0])
    res = []
    
    # 맵 탐색
    for i in range(N):
        for j in range(M):
            if board[i][j] == 'X':
                continue
            
            # 섬의 일부를 발견했으므로 섬 탐색
            q = [(i, j)]
            size = 0
            while q:
                x, y = q.pop()
                
                # 방문 체크
                if board[x][y] == 'X':
                    continue
                size += int(board[x][y])
                board[x][y] = 'X'
                
                # 4방향 탐색
                for a, b in move:
                    dx, dy = x+a, y+b
                    if dx &amp;lt; 0 or dx &amp;gt;= N or dy &amp;lt; 0 or dy &amp;gt;= M or board[dx][dy] == 'X':
                        continue
                    
                    q.append((dx, dy))
            else:
                res.append(size)
    
    return sorted(res) if res else [-1]&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 연습/DFS와 BFS</category>
      <category>BFS</category>
      <category>dfs</category>
      <category>그래프 탐색</category>
      <category>알고리즘</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/802</guid>
      <comments>https://my-coding-notes.tistory.com/802#entry802comment</comments>
      <pubDate>Fri, 30 May 2025 17:02:18 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.2 / 프로그래머스 / 파이썬] 지게차와 크레인 (2025 프로그래머스 코드챌린지 1차 예선)</title>
      <link>https://my-coding-notes.tistory.com/801</link>
      <description>&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;figure id=&quot;og_1746767481634&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/388353&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nahM6/hyYRzIDgk8/cNk9nEu3dfRB3nGHV8w60k/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bTxUZ2/hyYRzaL3lq/uXrqbyPgH21lXhiiZ1AhV0/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/388353&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/388353&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nahM6/hyYRzIDgk8/cNk9nEu3dfRB3nGHV8w60k/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bTxUZ2/hyYRzaL3lq/uXrqbyPgH21lXhiiZ1AhV0/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1744&quot; data-origin-height=&quot;1662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lhG2G/btsNQgIlWVT/k7AkMe1adyKSVhkFo64lS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lhG2G/btsNQgIlWVT/k7AkMe1adyKSVhkFo64lS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lhG2G/btsNQgIlWVT/k7AkMe1adyKSVhkFo64lS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlhG2G%2FbtsNQgIlWVT%2Fk7AkMe1adyKSVhkFo64lS1%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;1744&quot; height=&quot;1662&quot; data-origin-width=&quot;1744&quot; data-origin-height=&quot;1662&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1740&quot; data-origin-height=&quot;1020&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk3C4q/btsNQxiM3M6/fghkMSdBUd97tEgwf6U7sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk3C4q/btsNQxiM3M6/fghkMSdBUd97tEgwf6U7sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk3C4q/btsNQxiM3M6/fghkMSdBUd97tEgwf6U7sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk3C4q%2FbtsNQxiM3M6%2FfghkMSdBUd97tEgwf6U7sk%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;1740&quot; height=&quot;1020&quot; data-origin-width=&quot;1740&quot; data-origin-height=&quot;1020&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;986&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baEBrf/btsNR40yyWx/zhHwsGiwGCOsX6lnSqhZ0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baEBrf/btsNR40yyWx/zhHwsGiwGCOsX6lnSqhZ0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baEBrf/btsNR40yyWx/zhHwsGiwGCOsX6lnSqhZ0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaEBrf%2FbtsNR40yyWx%2FzhHwsGiwGCOsX6lnSqhZ0K%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;1746&quot; height=&quot;986&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;986&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;requests를 순회하며 처리하는 &lt;b&gt;시뮬레이션&lt;/b&gt;에서 &lt;b&gt;BFS&lt;/b&gt;를 수행하는 문제이다.&amp;nbsp;&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 Sans Light';&quot;&gt;BFS를 가장자리부터 진행하도록 하기 위해 &lt;b&gt;빈 값으로 storage를 래핑&lt;/b&gt;해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그리고 주어진 요청을 순회하며 BFS 혹은 전체 삭제를 진행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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 Sans Light';&quot;&gt;BFS를 진행할 때, 현재 요청 타입에 맞는 블럭과 만났을 때 즉시 삭제하지 않도록 따로 &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;pre id=&quot;code_1746768988306&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(storage, requests):
    # 빈 값으로 storage 래핑
    empty_row = [&quot;-&quot; * len(storage[0])]
    storage = empty_row + storage + empty_row
    storage = [list(&quot;-&quot; + row + &quot;-&quot;) for row in storage]
    
    N, M = len(storage), len(storage[0])
    move = [(1,0), (0,1), (-1,0), (0,-1)]
    
    # 요청 순회
    for req in requests:
        t = req[0]
        
        # 알파벳 2개 요청인 경우 전체 삭제
        if len(req) == 2:
            for i in range(N):
                for j in range(M):
                    if storage[i][j] == t:
                        storage[i][j] = &quot;-&quot;
        else: # 알파벳 1개 요청인 경우, 바깥에서 접근 가능한 부분만 삭제
            visited = [[False] * M for _ in range(N)]
            q = [(0, 0)]
            # BFS
            del_list = []
            while q:
                # 방문 체크
                x, y = q.pop()
                if visited[x][y]:
                    continue
                visited[x][y] = True
                
                # 탐색
                for a, b in move:
                    dx, dy = x+a, y+b
                    # index out of range 방지
                    if dx &amp;gt;= N or dx &amp;lt; 0 or dy &amp;gt;= M or dy &amp;lt; 0:
                        continue
                
                    # 타입 비교 후 제거 목록에 추가
                    if storage[dx][dy] == t:
                        del_list.append((dx, dy))
                    
                    # 다음 탐색 후보지 추가
                    if visited[dx][dy] or storage[dx][dy] != &quot;-&quot;:
                        continue
                    
                    q.append((dx, dy))
            
            # 컨테이너 제거
            for x, y in del_list:
                storage[x][y] = &quot;-&quot;
                
    # 결과 반환
    result = 0
    for i in range(N):
        for j in range(M):
            if storage[i][j] != &quot;-&quot;:
                result += 1
    return result&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>알고리즘 연습/DFS와 BFS</category>
      <category>BFS</category>
      <category>알고리즘</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/801</guid>
      <comments>https://my-coding-notes.tistory.com/801#entry801comment</comments>
      <pubDate>Fri, 9 May 2025 14:46:31 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.2 / 프로그래머스 / 파이썬] 귤 고르기</title>
      <link>https://my-coding-notes.tistory.com/800</link>
      <description>&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;figure id=&quot;og_1746173488386&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/138476?language=python3&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/i8LX6/hyYPlwfYw2/35tqornLdEiHlhj4ZuCKuk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/rCSCp/hyYL5PpoA2/FxMSN9JkpehxsamCgg18D0/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/138476?language=python3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=python3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/i8LX6/hyYPlwfYw2/35tqornLdEiHlhj4ZuCKuk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/rCSCp/hyYL5PpoA2/FxMSN9JkpehxsamCgg18D0/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwpFvU/btsNJFNMJSc/6gPn00y8t4oKpeXJxrJ6zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwpFvU/btsNJFNMJSc/6gPn00y8t4oKpeXJxrJ6zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwpFvU/btsNJFNMJSc/6gPn00y8t4oKpeXJxrJ6zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwpFvU%2FbtsNJFNMJSc%2F6gPn00y8t4oKpeXJxrJ6zk%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;1516&quot; height=&quot;1584&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1584&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;귤의 크기별로 그 개수를 센 딕셔너리를 구성한다.&lt;/li&gt;
&lt;li&gt;그리고 개수를 기준으로 내림차순 정렬한다.&lt;/li&gt;
&lt;li&gt;개수가 가장 많은 종류부터 선택하여 k에서 선택한 종류의 개수를 뺀다.&lt;/li&gt;
&lt;li&gt;k가 남았다면 3번을, k가 0이거나 음수가 되면 목표치를 달성한 것이므로 지금까지 선택한 종류의 수를 return 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1746174309426&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(k, tangerine):
    # 딕셔너리 구성
    d = dict()
    for i in tangerine:
        if i in d:
            d[i] += 1
        else:
            d[i] = 1
    
    # 내림차순 정렬
    lst = [i[1] for i in sorted(d.items(), key=lambda x:-x[1])]
    
    # 개수가 많은 귤 부터 상자에 담음
    res = 0
    for i in lst:
        res += 1 # 종류 + 1
        k -= i # 귤의 개수만큼 k를 감소
        if k &amp;lt;= 0: # k를 달성했으므로 res return
            return res&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;</description>
      <category>알고리즘 연습/정렬</category>
      <category>그리디</category>
      <category>알고리즘</category>
      <category>정렬</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/800</guid>
      <comments>https://my-coding-notes.tistory.com/800#entry800comment</comments>
      <pubDate>Fri, 2 May 2025 17:28:58 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.2 / 프로그래머스 / 파이썬] 비밀 코드 해독 (2025 프로그래머스 코드챌린지 1차 예선)</title>
      <link>https://my-coding-notes.tistory.com/799</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&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;figure id=&quot;og_1744361935246&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/388352&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cjWAgT/hyYBiBOTOb/kuX5VTeQXLywm4C3LLNTc1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bZv0Xe/hyYCdz1pqR/fkZsSsnWhlTaNiXoy8QB30/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/388352&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/388352&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cjWAgT/hyYBiBOTOb/kuX5VTeQXLywm4C3LLNTc1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bZv0Xe/hyYCdz1pqR/fkZsSsnWhlTaNiXoy8QB30/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;1578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1fAAv/btsNjE8YGjB/leQj0awgcgk6b1rNioFp5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1fAAv/btsNjE8YGjB/leQj0awgcgk6b1rNioFp5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1fAAv/btsNjE8YGjB/leQj0awgcgk6b1rNioFp5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1fAAv%2FbtsNjE8YGjB%2FleQj0awgcgk6b1rNioFp5k%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;1458&quot; height=&quot;1578&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;1578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1456&quot; data-origin-height=&quot;1422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gra3B/btsNiWop0Jg/lAy7W3L8iCqziZO5CJtkW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gra3B/btsNiWop0Jg/lAy7W3L8iCqziZO5CJtkW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gra3B/btsNiWop0Jg/lAy7W3L8iCqziZO5CJtkW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGra3B%2FbtsNiWop0Jg%2FlAy7W3L8iCqziZO5CJtkW1%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;1456&quot; height=&quot;1422&quot; data-origin-width=&quot;1456&quot; data-origin-height=&quot;1422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;980&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRLXi4/btsNg9I4F12/elPnMK77kE1k1BBVlCmcmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRLXi4/btsNg9I4F12/elPnMK77kE1k1BBVlCmcmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRLXi4/btsNg9I4F12/elPnMK77kE1k1BBVlCmcmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRLXi4%2FbtsNg9I4F12%2FelPnMK77kE1k1BBVlCmcmk%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;1454&quot; height=&quot;980&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;980&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;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;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1부터 n까지 5개의 숫자로 만들 수 있는 &lt;b&gt;정수 조합들을 모두 탐색&lt;/b&gt;하며 해결해야 하는 문제이다.&lt;br /&gt;조합을 만든 뒤, q랑 비교해보며 ans 와 같은 결과가 나오는 조합이면 비밀 코드에 해당된다.&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 Sans Light';&quot;&gt;itertools를 활용하면 조합을 보다 쉽게 생성할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1744363279252&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import itertools

def solution(n, q, ans):
    # 배열의 전체 조합
    arrs = itertools.combinations([i for i in range(1, n+1)], 5)
    
    # 배열을 순회하며 탐색
    res = 0
    for arr in arrs:
        # 현재 조합과 q를 비교하며 ans와 일치하는지 판별
        for i in range(len(q)):
            cur_q = q[i]
            cnt = 0
            for num in arr:
                if num in cur_q:
                    cnt += 1
            if ans[i] != cnt:
                break
        else:
            res += 1
    return res&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 연습/백트래킹</category>
      <category>백트래킹</category>
      <category>브루트 포스</category>
      <category>알고리즘</category>
      <category>조합</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/799</guid>
      <comments>https://my-coding-notes.tistory.com/799#entry799comment</comments>
      <pubDate>Fri, 11 Apr 2025 18:22:48 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.1 / 프로그래머스 / 파이썬] 유연근무제 (2025 프로그래머스 코드챌린지 1차 예선)</title>
      <link>https://my-coding-notes.tistory.com/798</link>
      <description>&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_1742749605762&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/388351?language=python3&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cEHptv/hyYxQb8tXN/OqqCmMBsAgDnaVP3wdHAak/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cEHptv/hyYxQb8tXN/OqqCmMBsAgDnaVP3wdHAak/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/388351?language=python3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/388351?language=python3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cEHptv/hyYxQb8tXN/OqqCmMBsAgDnaVP3wdHAak/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cEHptv/hyYxQb8tXN/OqqCmMBsAgDnaVP3wdHAak/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;1308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cv5BmN/btsMTnA3BjP/FYKTnsF5XgJsMFICpkU6ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cv5BmN/btsMTnA3BjP/FYKTnsF5XgJsMFICpkU6ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cv5BmN/btsMTnA3BjP/FYKTnsF5XgJsMFICpkU6ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv5BmN%2FbtsMTnA3BjP%2FFYKTnsF5XgJsMFICpkU6ek%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;1342&quot; height=&quot;1308&quot; data-origin-width=&quot;1342&quot; data-origin-height=&quot;1308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rwXnN/btsMT1Ea2Kz/U7iJM53q4RYTTnpdtu1Xmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rwXnN/btsMT1Ea2Kz/U7iJM53q4RYTTnpdtu1Xmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rwXnN/btsMT1Ea2Kz/U7iJM53q4RYTTnpdtu1Xmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrwXnN%2FbtsMT1Ea2Kz%2FU7iJM53q4RYTTnpdtu1Xmk%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;1344&quot; height=&quot;876&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;1480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWVBuE/btsMTDcHYKg/aCf3rylnA3iCOMaK7qtsY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWVBuE/btsMTDcHYKg/aCf3rylnA3iCOMaK7qtsY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWVBuE/btsMTDcHYKg/aCf3rylnA3iCOMaK7qtsY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWVBuE%2FbtsMTDcHYKg%2FaCf3rylnA3iCOMaK7qtsY0%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;1336&quot; height=&quot;1480&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;1480&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;시간 체크를 쉽게 하기 위해 모든 시간을 분으로 바꿔 계산하도록 한다.&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&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 Sans Light'; color: #333333; text-align: start;&quot;&gt;또한 요일 체크를 쉽게 하기 위해 나머지 연산을 사용하면 좋다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1742754211687&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(schedules, timelogs, startday):
    result = 0
    
    # 직원 순회
    for i in range(len(schedules)):
        schedule = convert(schedules[i]) + 10
        timelog = timelogs[i]
        cur_day = startday - 1
        
        # 출근 기록 순회
        for log in timelog:
            cur_day += 1
            
            # 토, 일은 제외
            if cur_day % 7 in [0, 6]:
                continue
            
            # 지각 체크
            if convert(log) &amp;gt; schedule:
                break
        else:
            result += 1
        
    return result
            
def convert(time):
    time = str(time)
    h, m = time[:-2], time[-2:]
    return int(h)*60 + int(m)&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>
      <category>구현</category>
      <category>문자열</category>
      <category>시간</category>
      <category>알고리즘</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/798</guid>
      <comments>https://my-coding-notes.tistory.com/798#entry798comment</comments>
      <pubDate>Mon, 24 Mar 2025 14:13:39 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.1 / 프로그래머스 / 파이썬] 택배 상자 꺼내기 (2025 프로그래머스 코드챌린지 2차 예선)</title>
      <link>https://my-coding-notes.tistory.com/797</link>
      <description>&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;figure id=&quot;og_1739711230050&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/389478?language=python3&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPtFNS/hyYfJMdItI/nEKb1iijBZqJo5JodMeCWK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cpx6tW/hyYfKqPNi0/nXZoe8pFrpo6FKyoTBpMYk/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/389478?language=python3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/389478?language=python3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPtFNS/hyYfJMdItI/nEKb1iijBZqJo5JodMeCWK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/cpx6tW/hyYfKqPNi0/nXZoe8pFrpo6FKyoTBpMYk/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1610&quot; data-origin-height=&quot;1380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LUOBh/btsMk0TgSgL/XUfXNvExctt3iRbwAKnrX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LUOBh/btsMk0TgSgL/XUfXNvExctt3iRbwAKnrX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LUOBh/btsMk0TgSgL/XUfXNvExctt3iRbwAKnrX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLUOBh%2FbtsMk0TgSgL%2FXUfXNvExctt3iRbwAKnrX1%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;1610&quot; height=&quot;1380&quot; data-origin-width=&quot;1610&quot; data-origin-height=&quot;1380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;1626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9q1v9/btsMkr4V0AV/u3kzqxKHQEv2O2sJepJYR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9q1v9/btsMkr4V0AV/u3kzqxKHQEv2O2sJepJYR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9q1v9/btsMkr4V0AV/u3kzqxKHQEv2O2sJepJYR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9q1v9%2FbtsMkr4V0AV%2Fu3kzqxKHQEv2O2sJepJYR1%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;1602&quot; height=&quot;1626&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;1626&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;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;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진 조건대로 상자를 쌓은 뒤, 해당 지점에서부터 몇 층의 박스가 쌓여있는지 확인하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1739712092714&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n, w, num):
    # 박스 정리
    MAX_ROW = n//w+1
    boxes = []
    for row in range(MAX_ROW):
        boxes.append([row*w + i if row*w + i &amp;lt;= n else 0 for i in range(1, w+1)][::-1 if row%2==1 else 1])
    
    # 박스 탐색
    for r in range(MAX_ROW):
        for c in range(w):
            if boxes[r][c] != num:
                continue
            
            # 박스 발견
            res = 0
            for i in range(MAX_ROW):
                res += 1
                r+=1
                if r &amp;gt;= MAX_ROW:
                    return res
                if boxes[r][c] == 0:
                    return res&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>
      <category>구현</category>
      <category>알고리즘</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/797</guid>
      <comments>https://my-coding-notes.tistory.com/797#entry797comment</comments>
      <pubDate>Mon, 17 Feb 2025 01:23:36 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.2 / 프로그래머스 / 파이썬] 충돌위험 찾기 (PCCP 기출문제 3번)</title>
      <link>https://my-coding-notes.tistory.com/796</link>
      <description>&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;figure id=&quot;og_1739203709426&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/340211&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/8IM6U/hyYfVkBu0S/UaU3TN0HcapBDTTY2UXYw1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/KS9LE/hyYcc9oVa2/wvVRc1d8iL0DkTyYHUFFkK/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/340211&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/340211&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/8IM6U/hyYfVkBu0S/UaU3TN0HcapBDTTY2UXYw1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/KS9LE/hyYcc9oVa2/wvVRc1d8iL0DkTyYHUFFkK/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;936&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blrtE4/btsMdrjF0nY/KTTjekBGhMg02SsuoKiV7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blrtE4/btsMdrjF0nY/KTTjekBGhMg02SsuoKiV7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blrtE4/btsMdrjF0nY/KTTjekBGhMg02SsuoKiV7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblrtE4%2FbtsMdrjF0nY%2FKTTjekBGhMg02SsuoKiV7K%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;1002&quot; height=&quot;936&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;936&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;989&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfZDSB/btsMezgHT7h/omzKSgkNZgDExkF4EZstN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfZDSB/btsMezgHT7h/omzKSgkNZgDExkF4EZstN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfZDSB/btsMezgHT7h/omzKSgkNZgDExkF4EZstN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfZDSB%2FbtsMezgHT7h%2FomzKSgkNZgDExkF4EZstN1%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;989&quot; height=&quot;238&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;989&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IyuY8/btsMd58fMqR/qWKaRWULBkGrkPZUnVBSPk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IyuY8/btsMd58fMqR/qWKaRWULBkGrkPZUnVBSPk/img.gif&quot; data-alt=&quot;입출력 예 #1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IyuY8/btsMd58fMqR/qWKaRWULBkGrkPZUnVBSPk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/IyuY8/btsMd58fMqR/qWKaRWULBkGrkPZUnVBSPk/img.gif&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;720&quot; height=&quot;720&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입출력 예 #1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs1CzO/btsMeULHJlS/WkBEZJLUXRfvn6r5HbS9e1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs1CzO/btsMeULHJlS/WkBEZJLUXRfvn6r5HbS9e1/img.gif&quot; data-alt=&quot;입출력 예 #2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs1CzO/btsMeULHJlS/WkBEZJLUXRfvn6r5HbS9e1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bs1CzO/btsMeULHJlS/WkBEZJLUXRfvn6r5HbS9e1/img.gif&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;720&quot; height=&quot;720&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입출력 예 #2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhqNKV/btsMengydHJ/WnnnKCOvowIdDL7RFBhaPk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhqNKV/btsMengydHJ/WnnnKCOvowIdDL7RFBhaPk/img.gif&quot; data-alt=&quot;입출력 예 #3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhqNKV/btsMengydHJ/WnnnKCOvowIdDL7RFBhaPk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bhqNKV/btsMengydHJ/WnnnKCOvowIdDL7RFBhaPk/img.gif&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;720&quot; height=&quot;720&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입출력 예 #3&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;딕셔너리를 이용하여 해결 가능한 시뮬레이션 구현 문제이다. &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제 풀이 시 특별하게 필요한 알고리즘은 존재하지 않으나, 주어진 조건에 맞게 정확하게 구현해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1739204045210&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(points, routes):
    # 번호별로 좌표를 map에 담음
    point_map = dict()
    for i in range(len(points)):
        point_map[i+1] = points[i]
    
    robots = []
    for route in routes:
        start_x, start_y = point_map.get(route[0])
        robots.append((start_x, start_y, route[::-1]))
    
    cnt = 0
    while robots:
        tmp_robots = []
        robots_pos = dict()
        for robot in robots:
            x, y, route = robot
            # 로봇 충돌 계산을 위해 현재 위치의 로봇 count 추가
            if (x, y) in robots_pos:
                robots_pos[(x, y)] += 1
            else:
                robots_pos[(x, y)] = 1
            
            # 현재 위치가 목표에 도달한 경우, 목표 경로 제거
            if [x, y] == point_map.get(route[-1]):
                route.pop()
            
            # 다음 경로가 남은 경우
            if route:
                to_x, to_y = point_map.get(route[-1])
                x, y = move(x, y, to_x, to_y)
                tmp_robots.append((x, y, route))
        
        # 충돌 위험 계산
        cnt += sum([1 if i &amp;gt;= 2 else 0 for i in robots_pos.values()])
        robots = tmp_robots
    
    return cnt
    
    
def move(x, y, to_x, to_y):
    if x &amp;gt; to_x:
        return (x-1, y)
    elif x &amp;lt; to_x:
        return (x+1, y)
    
    if y &amp;gt; to_y:
        return (x, y-1)
    elif y &amp;lt; to_y:
        return (x, y+1)
    
    return (x, y)&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>
      <category>구현</category>
      <category>자료구조</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/796</guid>
      <comments>https://my-coding-notes.tistory.com/796#entry796comment</comments>
      <pubDate>Tue, 11 Feb 2025 01:14:32 +0900</pubDate>
    </item>
    <item>
      <title>[Lv.1 / 프로그래머스 / 파이썬] 데이터 분석 (PCCE 기출문제 10번)</title>
      <link>https://my-coding-notes.tistory.com/795</link>
      <description>&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;figure id=&quot;og_1738236165906&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/250121&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cRhKGm/hyX72Sv5bL/kRN3OCLQrCLoJW5tMx1Cx1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/OC4cf/hyX7VTpe74/OdkK3kyD9qYbqT999FQcMK/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/250121&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/250121&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cRhKGm/hyX72Sv5bL/kRN3OCLQrCLoJW5tMx1Cx1/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/OC4cf/hyX7VTpe74/OdkK3kyD9qYbqT999FQcMK/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;1051&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ueMXa/btsL3YA42Dv/zxsIwH3uXZmV3H89PThnp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ueMXa/btsL3YA42Dv/zxsIwH3uXZmV3H89PThnp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ueMXa/btsL3YA42Dv/zxsIwH3uXZmV3H89PThnp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FueMXa%2FbtsL3YA42Dv%2FzxsIwH3uXZmV3H89PThnp1%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;998&quot; height=&quot;1051&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;1051&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xv63V/btsL3XoBOF1/wpsAf9EOYTESLLeI7f4H01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xv63V/btsL3XoBOF1/wpsAf9EOYTESLLeI7f4H01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xv63V/btsL3XoBOF1/wpsAf9EOYTESLLeI7f4H01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxv63V%2FbtsL3XoBOF1%2FwpsAf9EOYTESLLeI7f4H01%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;1004&quot; height=&quot;445&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;445&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;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;color: #f89009; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;풀이&lt;/b&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&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 Sans Light';&quot;&gt;sort 함수의 key 파라미터로 람다 함수를 넘겨 보다 쉽게 정렬할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1738236244085&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(data, ext, val_ext, sort_by):
    idx = [&quot;code&quot;, &quot;date&quot;, &quot;maximum&quot;, &quot;remain&quot;]
    data = [d for d in data if d[idx.index(ext)] &amp;lt; val_ext]
    data.sort(key = lambda x: x[idx.index(sort_by)])
    return data&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 연습/구현, 문자열</category>
      <category>구현</category>
      <category>문자열</category>
      <category>알고리즘</category>
      <category>코딩</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>김세진</author>
      <guid isPermaLink="true">https://my-coding-notes.tistory.com/795</guid>
      <comments>https://my-coding-notes.tistory.com/795#entry795comment</comments>
      <pubDate>Thu, 30 Jan 2025 20:25:09 +0900</pubDate>
    </item>
  </channel>
</rss>