<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>아꼬의 개발 일지</title>
    <link>https://nomad1jin.tistory.com/</link>
    <description>매일 매일의 작은 삽질이 오늘의 실력을 만든다! 드넓은 바다를 볼 줄 아는 개발자가 되자.</description>
    <language>ko</language>
    <pubDate>Thu, 27 Aug 2026 01:43:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>아기꼬래</managingEditor>
    <image>
      <title>아꼬의 개발 일지</title>
      <url>https://tistory1.daumcdn.net/tistory/4871271/attach/81189b39f5d3483eae179e2059417a32</url>
      <link>https://nomad1jin.tistory.com</link>
    </image>
    <item>
      <title>[프로그래머스] LV3. 조건별로 분류하여 주문상태 출력하기 (SQL)</title>
      <link>https://nomad1jin.tistory.com/65</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;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;a id=&quot;user-content-level-3-조건별로-분류하여-주문상태-출력하기---131113&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/131113.%E2%80%85%EC%A1%B0%EA%B1%B4%EB%B3%84%EB%A1%9C%E2%80%85%EB%B6%84%EB%A5%98%ED%95%98%EC%97%AC%E2%80%85%EC%A3%BC%EB%AC%B8%EC%83%81%ED%83%9C%E2%80%85%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0#level-3-%EC%A1%B0%EA%B1%B4%EB%B3%84%EB%A1%9C-%EB%B6%84%EB%A5%98%ED%95%98%EC%97%AC-%EC%A3%BC%EB%AC%B8%EC%83%81%ED%83%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0---131113&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131113&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;a id=&quot;user-content-채점결과&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/131113.%E2%80%85%EC%A1%B0%EA%B1%B4%EB%B3%84%EB%A1%9C%E2%80%85%EB%B6%84%EB%A5%98%ED%95%98%EC%97%AC%E2%80%85%EC%A3%BC%EB%AC%B8%EC%83%81%ED%83%9C%E2%80%85%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0#%EC%B1%84%EC%A0%90%EA%B2%B0%EA%B3%BC&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;a id=&quot;user-content-문제-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/131113.%E2%80%85%EC%A1%B0%EA%B1%B4%EB%B3%84%EB%A1%9C%E2%80%85%EB%B6%84%EB%A5%98%ED%95%98%EC%97%AC%E2%80%85%EC%A3%BC%EB%AC%B8%EC%83%81%ED%83%9C%E2%80%85%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0#%EB%AC%B8%EC%A0%9C-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음은 식품공장의 주문정보를 담은&lt;span&gt;&amp;nbsp;&lt;/span&gt;FOOD_ORDER&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;FOOD_ORDER&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블은 다음과 같으며&lt;span&gt;&amp;nbsp;&lt;/span&gt;ORDER_ID,&lt;span&gt;&amp;nbsp;&lt;/span&gt;PRODUCT_ID,&lt;span&gt;&amp;nbsp;&lt;/span&gt;AMOUNT,&lt;span&gt;&amp;nbsp;&lt;/span&gt;PRODUCE_DATE,&lt;span&gt;&amp;nbsp;&lt;/span&gt;IN_DATE,OUT_DATE,FACTORY_ID,&lt;span&gt;&amp;nbsp;&lt;/span&gt;WAREHOUSE_ID는 각각 주문 ID, 제품 ID, 주문양, 생산일자, 입고일자, 출고일자, 공장 ID, 창고 ID를 의미합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 67.9062%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;&lt;b&gt;Column name&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;&lt;b&gt;Nullable&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;ORDER_ID&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;VARCHAR(10)&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;FALSE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;PRODUCT_ID&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;VARCHAR(5)&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;FALSE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;AMOUNT&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;NUMBER&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;FALSE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;PRODUCE_DATE&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;DATE&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;IN_DATE&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;DATE&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;OUT_DATE&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;DATE&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;FACTORY_ID&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;VARCHAR(10)&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;FALSE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 26.2791%;&quot;&gt;WAREHOUSE_ID&lt;/td&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;VARCHAR(10)&lt;/td&gt;
&lt;td style=&quot;width: 16.1628%;&quot;&gt;FALSE&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;문제&lt;a id=&quot;user-content-문제&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/131113.%E2%80%85%EC%A1%B0%EA%B1%B4%EB%B3%84%EB%A1%9C%E2%80%85%EB%B6%84%EB%A5%98%ED%95%98%EC%97%AC%E2%80%85%EC%A3%BC%EB%AC%B8%EC%83%81%ED%83%9C%E2%80%85%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0#%EB%AC%B8%EC%A0%9C&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;FOOD_ORDER&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 2022년 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;예시&lt;a id=&quot;user-content-예시&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/131113.%E2%80%85%EC%A1%B0%EA%B1%B4%EB%B3%84%EB%A1%9C%E2%80%85%EB%B6%84%EB%A5%98%ED%95%98%EC%97%AC%E2%80%85%EC%A3%BC%EB%AC%B8%EC%83%81%ED%83%9C%E2%80%85%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0#%EC%98%88%EC%8B%9C&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;FOOD_ORDER&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블이 다음과 같을 때&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 101.394%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.6364%;&quot;&gt;&lt;b&gt;ORDER_ID&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 13.4799%;&quot;&gt;&lt;b&gt;PRODUCT_ID&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%;&quot;&gt;&lt;b&gt;AMOUNT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.2326%;&quot;&gt;&lt;b&gt;PRODUCE_DATE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;&lt;b&gt;IN_DATE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.2791%;&quot;&gt;&lt;b&gt;OUT_DATE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;&lt;b&gt;FACTORY_ID&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.7402%;&quot;&gt;&lt;b&gt;WAREHOUSE_ID&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 11.6364%;&quot;&gt;OD00000051&lt;/td&gt;
&lt;td style=&quot;width: 13.4799%;&quot;&gt;P0002&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%;&quot;&gt;4000&lt;/td&gt;
&lt;td style=&quot;width: 15.2326%;&quot;&gt;2022-04-01&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;2022-04-21&lt;/td&gt;
&lt;td style=&quot;width: 11.2791%;&quot;&gt;2022-04-21&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;FT19970003&lt;/td&gt;
&lt;td style=&quot;width: 16.7402%;&quot;&gt;WH0005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 11.6364%;&quot;&gt;OD00000052&lt;/td&gt;
&lt;td style=&quot;width: 13.4799%;&quot;&gt;P0003&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%;&quot;&gt;2500&lt;/td&gt;
&lt;td style=&quot;width: 15.2326%;&quot;&gt;2022-04-10&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;2022-04-27&lt;/td&gt;
&lt;td style=&quot;width: 11.2791%;&quot;&gt;2022-04-27&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;FT19970003&lt;/td&gt;
&lt;td style=&quot;width: 16.7402%;&quot;&gt;WH0006&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 11.6364%;&quot;&gt;OD00000053&lt;/td&gt;
&lt;td style=&quot;width: 13.4799%;&quot;&gt;P0005&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%;&quot;&gt;6200&lt;/td&gt;
&lt;td style=&quot;width: 15.2326%;&quot;&gt;2022-04-15&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;2022-04-30&lt;/td&gt;
&lt;td style=&quot;width: 11.2791%;&quot;&gt;2022-05-01&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;FT19940003&lt;/td&gt;
&lt;td style=&quot;width: 16.7402%;&quot;&gt;WH0003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 11.6364%;&quot;&gt;OD00000054&lt;/td&gt;
&lt;td style=&quot;width: 13.4799%;&quot;&gt;P0006&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%;&quot;&gt;1000&lt;/td&gt;
&lt;td style=&quot;width: 15.2326%;&quot;&gt;2022-04-21&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;2022-04-30&lt;/td&gt;
&lt;td style=&quot;width: 11.2791%;&quot;&gt;NULL&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;FT19940003&lt;/td&gt;
&lt;td style=&quot;width: 16.7402%;&quot;&gt;WH0009&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 11.6364%;&quot;&gt;OD00000055&lt;/td&gt;
&lt;td style=&quot;width: 13.4799%;&quot;&gt;P0008&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%;&quot;&gt;1500&lt;/td&gt;
&lt;td style=&quot;width: 15.2326%;&quot;&gt;2022-04-25&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;2022-05-11&lt;/td&gt;
&lt;td style=&quot;width: 11.2791%;&quot;&gt;2022-05-11&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;FT19980003&lt;/td&gt;
&lt;td style=&quot;width: 16.7402%;&quot;&gt;WH0009&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SQL을 실행하면 다음과 같이 출력되어야 합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 65.2324%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;&lt;b&gt;ORDER_ID&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 13.8372%;&quot;&gt;&lt;b&gt;PRODUCT_ID&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.9303%;&quot;&gt;&lt;b&gt;OUT_DATE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.3953%;&quot;&gt;&lt;b&gt;출고여부&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;OD00000051&lt;/td&gt;
&lt;td style=&quot;width: 13.8372%;&quot;&gt;P0002&lt;/td&gt;
&lt;td style=&quot;width: 15.9303%;&quot;&gt;2022-04-21&lt;/td&gt;
&lt;td style=&quot;width: 16.3953%;&quot;&gt;출고완료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;OD00000052&lt;/td&gt;
&lt;td style=&quot;width: 13.8372%;&quot;&gt;P0003&lt;/td&gt;
&lt;td style=&quot;width: 15.9303%;&quot;&gt;2022-04-27&lt;/td&gt;
&lt;td style=&quot;width: 16.3953%;&quot;&gt;출고완료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;OD00000053&lt;/td&gt;
&lt;td style=&quot;width: 13.8372%;&quot;&gt;P0005&lt;/td&gt;
&lt;td style=&quot;width: 15.9303%;&quot;&gt;2022-05-01&lt;/td&gt;
&lt;td style=&quot;width: 16.3953%;&quot;&gt;출고완료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;OD00000054&lt;/td&gt;
&lt;td style=&quot;width: 13.8372%;&quot;&gt;P0006&lt;/td&gt;
&lt;td style=&quot;width: 15.9303%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.3953%;&quot;&gt;출고미정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;OD00000055&lt;/td&gt;
&lt;td style=&quot;width: 13.8372%;&quot;&gt;P0008&lt;/td&gt;
&lt;td style=&quot;width: 15.9303%;&quot;&gt;2022-05-11&lt;/td&gt;
&lt;td style=&quot;width: 16.3953%;&quot;&gt;출고대기&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 풀이&lt;/h3&gt;
&lt;pre id=&quot;code_1785637988066&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONCAT(&quot;/home/grep/src/&quot;, F.BOARD_ID, &quot;/&quot;, F.FILE_ID, F.FILE_NAME, F.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD B 
JOIN USED_GOODS_FILE F
ON B.BOARD_ID = F.BOARD_ID
WHERE B.VIEWS = (SELECT MAX(VIEWS) 
                 FROM USED_GOODS_BOARD)
ORDER BY F.FILE_ID DESC;&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>SQL</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/65</guid>
      <comments>https://nomad1jin.tistory.com/65#entry65comment</comments>
      <pubDate>Sun, 2 Aug 2026 11:33:15 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] LV2. 롤케이크 자르기 (파이썬, Python)</title>
      <link>https://nomad1jin.tistory.com/62</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;a id=&quot;user-content-level-2-롤케이크-자르기---132265&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/132265.%E2%80%85%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#level-2-%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC-%EC%9E%90%EB%A5%B4%EA%B8%B0---132265&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/132265&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구분&lt;/h3&gt;
&lt;a id=&quot;user-content-구분&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/132265.%E2%80%85%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EA%B5%AC%EB%B6%84&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코딩테스트 연습 &amp;gt; 연습문제&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;a id=&quot;user-content-문제-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/132265.%E2%80%85%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EB%AC%B8%EC%A0%9C-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;철수는 롤케이크를 두 조각으로 잘라서 동생과 한 조각씩 나눠 먹으려고 합니다. 이 롤케이크에는 여러가지 토핑들이 일렬로 올려져 있습니다. 철수와 동생은 롤케이크를 공평하게 나눠먹으려 하는데, 그들은 롤케이크의 크기보다 롤케이크 위에 올려진 토핑들의 종류에 더 관심이 많습니다. 그래서 잘린 조각들의 크기와 올려진 토핑의 개수에 상관없이 각 조각에 동일한 가짓수의 토핑이 올라가면 공평하게 롤케이크가 나누어진 것으로 생각합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 롤케이크에 4가지 종류의 토핑이 올려져 있다고 합시다. 토핑들을 1, 2, 3, 4와 같이 번호로 표시했을 때, 케이크 위에 토핑들이 [1, 2, 1, 3, 1, 4, 1, 2] 순서로 올려져 있습니다. 만약 세 번째 토핑(1)과 네 번째 토핑(3) 사이를 자르면 롤케이크의 토핑은 [1, 2, 1], [3, 1, 4, 1, 2]로 나뉘게 됩니다. 철수가 [1, 2, 1]이 놓인 조각을, 동생이 [3, 1, 4, 1, 2]가 놓인 조각을 먹게 되면 철수는 두 가지 토핑(1, 2)을 맛볼 수 있지만, 동생은 네 가지 토핑(1, 2, 3, 4)을 맛볼 수 있으므로, 이는 공평하게 나누어진 것이 아닙니다. 만약 롤케이크의 네 번째 토핑(3)과 다섯 번째 토핑(1) 사이를 자르면 [1, 2, 1, 3], [1, 4, 1, 2]로 나뉘게 됩니다. 이 경우 철수는 세 가지 토핑(1, 2, 3)을, 동생도 세 가지 토핑(1, 2, 4)을 맛볼 수 있으므로, 이는 공평하게 나누어진 것입니다. 공평하게 롤케이크를 자르는 방법은 여러가지 일 수 있습니다. 위의 롤케이크를 [1, 2, 1, 3, 1], [4, 1, 2]으로 잘라도 공평하게 나뉩니다. 어떤 경우에는 롤케이크를 공평하게 나누지 못할 수도 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;롤케이크에 올려진 토핑들의 번호를 저장한 정수 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;topping이 매개변수로 주어질 때, 롤케이크를 공평하게 자르는 방법의 수를 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;제한사항&lt;a id=&quot;user-content-제한사항&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/132265.%E2%80%85%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EC%A0%9C%ED%95%9C%EC%82%AC%ED%95%AD&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;topping의 길이 &amp;le; 1,000,000
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;topping의 원소 &amp;le; 10,000&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예&lt;a id=&quot;user-content-입출력-예&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/132265.%E2%80%85%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;table style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px; border-collapse: collapse; width: 47.7904%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.5544%;&quot;&gt;&lt;b&gt;topping&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.1936%;&quot;&gt;&lt;b&gt;result&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 29.5544%;&quot;&gt;[1, 2, 1, 3, 1, 4, 1, 2]&lt;/td&gt;
&lt;td style=&quot;width: 15.1936%;&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 29.5544%;&quot;&gt;[1, 2, 3, 1, 4]&lt;/td&gt;
&lt;td style=&quot;width: 15.1936%;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예 설명&lt;a id=&quot;user-content-입출력-예-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/132265.%E2%80%85%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;롤케이크를 [1, 2, 1, 3], [1, 4, 1, 2] 또는 [1, 2, 1, 3, 1], [4, 1, 2]와 같이 자르면 철수와 동생은 각각 세 가지 토핑을 맛볼 수 있습니다. 이 경우 공평하게 롤케이크를 나누는 방법은 위의 두 가지만 존재합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;롤케이크를 공평하게 나눌 수 없습니다.&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;문제 풀이&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&quot;토핑 종류의 개수&quot;&lt;/b&gt;가 중요하다는 것을 생각해, &lt;b&gt;Set&lt;/b&gt;를 고려하게 되었다.&lt;/li&gt;
&lt;li&gt;동생의 경우에는 전부 롤케이크 토핑을 전부 넣어두고,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;반복문에서 &lt;b&gt;토핑을 하나씩 형에게 추가하고, 동생에게 빼면서&lt;/b&gt; 토핑 종류의 개수가 같으면. answer += 1 로 풀이했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1781871169380&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(topping):
    answer = 0
    
    old = set()
    young = {}
    
    for t in topping:
        if t in young:
            young[t] += 1
        else :
            young[t] = 1 

    for s in topping:            
        old.add(s)
        young[s] -= 1
        
        if s in young:
            if young[s] == 0:
                del young[s]
        
        if len(old) == len(young):
            answer += 1
    
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;size18&quot;&gt;다른 사람의 풀이와 댓글을 보면서 딕셔너리 초기화 부분의 코드를 더욱 간결하게 바꿀 수 있었다.&lt;/p&gt;
&lt;pre id=&quot;code_1781871407844&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for i in topping:
    if i not in dic:
        dic[i] = 1
    else:
        dic[i] += 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1781871393345&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for i in topping:
    dic[i] = dic.get(i, 0) + 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;</description>
      <category>Algorithm Solving</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/62</guid>
      <comments>https://nomad1jin.tistory.com/62#entry62comment</comments>
      <pubDate>Sat, 20 Jun 2026 22:35:10 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] LV2. JadenCase 문자열 만들기 (파이썬, Python)</title>
      <link>https://nomad1jin.tistory.com/61</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;a id=&quot;user-content-level-2-jadencase-문자열-만들기---12951&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12951.%E2%80%85JadenCase%E2%80%85%EB%AC%B8%EC%9E%90%EC%97%B4%E2%80%85%EB%A7%8C%EB%93%A4%EA%B8%B0#level-2-jadencase-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0---12951&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12951&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구분&lt;/h3&gt;
&lt;a id=&quot;user-content-구분&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12951.%E2%80%85JadenCase%E2%80%85%EB%AC%B8%EC%9E%90%EC%97%B4%E2%80%85%EB%A7%8C%EB%93%A4%EA%B8%B0#%EA%B5%AC%EB%B6%84&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코딩테스트 연습 &amp;gt; 연습문제&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;a id=&quot;user-content-문제-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12951.%E2%80%85JadenCase%E2%80%85%EB%AC%B8%EC%9E%90%EC%97%B4%E2%80%85%EB%A7%8C%EB%93%A4%EA%B8%B0#%EB%AC%B8%EC%A0%9C-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)&lt;br /&gt;문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;제한 조건&lt;a id=&quot;user-content-제한-조건&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12951.%E2%80%85JadenCase%E2%80%85%EB%AC%B8%EC%9E%90%EC%97%B4%E2%80%85%EB%A7%8C%EB%93%A4%EA%B8%B0#%EC%A0%9C%ED%95%9C-%EC%A1%B0%EA%B1%B4&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;s는 길이 1 이상 200 이하인 문자열입니다.&lt;/li&gt;
&lt;li&gt;s는 알파벳과 숫자, 공백문자(&quot; &quot;)로 이루어져 있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자는 단어의 첫 문자로만 나옵니다.&lt;/li&gt;
&lt;li&gt;숫자로만 이루어진 단어는 없습니다.&lt;/li&gt;
&lt;li&gt;공백문자가 연속해서 나올 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예&lt;a id=&quot;user-content-입출력-예&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/12951.%E2%80%85JadenCase%E2%80%85%EB%AC%B8%EC%9E%90%EC%97%B4%E2%80%85%EB%A7%8C%EB%93%A4%EA%B8%B0#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 67.674%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 34.5349%;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;width: 33.0232%;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 34.5349%;&quot;&gt;&quot;3people unFollowed me&quot;&lt;/td&gt;
&lt;td style=&quot;width: 33.0232%;&quot;&gt;&quot;3people Unfollowed Me&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 34.5349%;&quot;&gt;&quot;for the last week&quot;&lt;/td&gt;
&lt;td style=&quot;width: 33.0232%;&quot;&gt;&quot;For The Last Week&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;첫 문제 풀이 (정답률 16%)&amp;nbsp;&lt;/h3&gt;
&lt;pre id=&quot;code_1781868184909&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    answer = []
    
    string = list(map(str, s.split(&quot; &quot;)))
    sentence = ''
    
    for st in string:
        for i in range(len(st)):
            
            if i == 0:
                if st[i].isalpha():
                    if st[i].islower():
                        sentence = st[i].upper()
                else :
                    sentence = st[i]
                    
            else :
                if st[i].isupper():
                    sentence += st[i].lower()
                else :
                    sentence += st[i].lower()
        
        # print(sentence)
        answer.append(sentence)  
    
    return &quot; &quot;.join(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;h3 data-ke-size=&quot;size23&quot;&gt;문제 풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. sentence를 반복문 내부에서 더하므로. &lt;b&gt;반복문 내부에서 초기화&lt;/b&gt;하는 것을 추가했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 초기에는 if 문을 여러개 사용했는데, 첫 글자가 문자면 대문자로 바꾸고, 문자가 아니면(숫자면) 그대로. 하는 과정에서 &lt;b&gt;굳이 첫 글자가 소문자인지를 확인할 필요가 없었다&lt;/b&gt;. 이러면 else 구문을 추가해야했다. 그런데, 위 코드에서는 이 부분을 작성하지 않아서 테스트케이스를 통과하지 못한 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;3. else 구문 내부에도 조건문이 있었는데, &lt;b&gt;같은 내용이므로 통일했다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1781868213341&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    answer = []
    string = list(map(str, s.split(&quot; &quot;)))
    
    for st in string:
        sentence = ''
            
        for i in range(len(st)):
            
            if i == 0:
                if st[i].isalpha():
                    sentence = st[i].upper()
                else :
                    sentence = st[i]
                    
            else :
                sentence += st[i].lower()
        
        # print(sentence)
        answer.append(sentence)  
    
    return &quot; &quot;.join(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&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;h3 data-ke-size=&quot;size23&quot;&gt;다른 사람 풀이&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사실 조건문으로 일일이 확인할 필요가 없었던 듯 하다.&lt;/li&gt;
&lt;li&gt;3의 경우에는 upper, lower을 하던 3이기에 그대로다. 그래서 굳이 isalpha() 검사를 할 필요가 없었음을 깨달았다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1781868411722&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    return &quot; &quot;.join([word[0].upper() + word[1:].lower() if word else word for word in s.split(&quot; &quot;)])
    
#----------------------------------------------------
def solution(s):
    answer = []
    s = s.split(&quot; &quot;)
    for word in s:
        if word:
            answer.append(word[0].upper() + word[1:].lower())
        else:
            answer.append(word)
    return &quot; &quot;.join(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Algorithm Solving</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/61</guid>
      <comments>https://nomad1jin.tistory.com/61#entry61comment</comments>
      <pubDate>Fri, 19 Jun 2026 20:28:47 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] LV2. 프로세스 (파이썬, Python)</title>
      <link>https://nomad1jin.tistory.com/60</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42587&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구분&lt;/h3&gt;
&lt;a id=&quot;user-content-구분&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/42587.%E2%80%85%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4#%EA%B5%AC%EB%B6%84&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코딩테스트 연습 &amp;gt; 스택／큐&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;a id=&quot;user-content-문제-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/42587.%E2%80%85%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4#%EB%AC%B8%EC%A0%9C-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;div style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #f6f8fa; color: #1f2328;&quot;&gt;&lt;code&gt;1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다.
2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다.
3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다.
  3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다.
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현재 실행 대기 큐(Queue)에 있는 프로세스의 중요도가 순서대로 담긴 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;priorities와, 몇 번째로 실행되는지 알고싶은 프로세스의 위치를 알려주는&lt;span&gt;&amp;nbsp;&lt;/span&gt;location이 매개변수로 주어질 때, 해당 프로세스가 몇 번째로 실행되는지 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;제한사항&lt;a id=&quot;user-content-제한사항&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/42587.%E2%80%85%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4#%EC%A0%9C%ED%95%9C%EC%82%AC%ED%95%AD&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;priorities의 길이는 1 이상 100 이하입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;priorities의 원소는 1 이상 9 이하의 정수입니다.&lt;/li&gt;
&lt;li&gt;priorities의 원소는 우선순위를 나타내며 숫자가 클 수록 우선순위가 높습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;location은 0 이상 (대기 큐에 있는 프로세스 수 - 1) 이하의 값을 가집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;priorities의 가장 앞에 있으면 0, 두 번째에 있으면 1 &amp;hellip; 과 같이 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예&lt;a id=&quot;user-content-입출력-예&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/42587.%E2%80%85%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 49.6497%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;priorities&lt;/td&gt;
&lt;td style=&quot;width: 12.4419%;&quot;&gt;location&lt;/td&gt;
&lt;td style=&quot;width: 12.2246%;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;[2, 1, 3, 2]&lt;/td&gt;
&lt;td style=&quot;width: 12.4419%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 12.2246%;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 25.3488%;&quot;&gt;[1, 1, 9, 1, 1, 1]&lt;/td&gt;
&lt;td style=&quot;width: 12.4419%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 12.2246%;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예 설명&lt;a id=&quot;user-content-입출력-예-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/42587.%E2%80%85%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예제 #1&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;문제에 나온 예와 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예제 #2&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;6개의 프로세스 [A, B, C, D, E, F]가 대기 큐에 있고 중요도가 [1, 1, 9, 1, 1, 1] 이므로 [C, D, E, F, A, B] 순으로 실행됩니다. 따라서 A는 5번째로 실행됩니다.&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 풀이&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;처음에는 우선순위가 큰 프로세스를 먼저 출력하는 줄 알고 Priority Qeueu를 사용하려 했다.&lt;/li&gt;
&lt;li&gt;문제를 다시 읽어보니 우선순위가 큰 순은 맞지만, 그 과정에서 출력할 순서를 계산해야했다.&lt;/li&gt;
&lt;li&gt;1. 프로세스에 큰 수가 남아있으면 pop한 수를 다시 append하기&lt;/li&gt;
&lt;li&gt;2. 프로세스에 큰 수가 남아있지 않으면 실행하기 =&amp;gt; 출력 순서 계산하기&lt;/li&gt;
&lt;li&gt;출력 순서 계산 시에 예제 2를 생각하면 location이 처음부터 -1이 되어버린다. 이 경우에는 이 프로세스가 바로 실행된 것이었으므로 answer을 더하고 리턴하면 됐다. (location 코드가 어려웠다)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1781865486407&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import deque

def solution(priorities, location):
    answer = 0      # 인쇄 순서
    q = deque(priorities)
    
    while q:
        max_n = max(q)
        pop_n = q.popleft()
        location -= 1  # 하나 꺼냈으니 위치 - 1
        
        # 뒤로 보내기
        if pop_n &amp;lt; max_n:
            q.append(pop_n)
            
            # 만약 꺼내기 전 문서가 인덱스 0이라면 -1이 됨. 
            # 추가되었으니 이제 마지막 인덱스가 됨
            if location &amp;lt; 0:
                location = len(q) - 1
        
        # 출력 및 순서 
        else :
            # 없으면 프로세스 실행, 그런데 location이 음수가 되면. 
            # 해당 location의 프로세스가 답이므로 리턴
            answer += 1
            if location &amp;lt; 0:
                return answer
    
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Algorithm Solving</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/60</guid>
      <comments>https://nomad1jin.tistory.com/60#entry60comment</comments>
      <pubDate>Fri, 19 Jun 2026 19:42:27 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot] 간단하게 AWS Bedrock Claude 시작하기</title>
      <link>https://nomad1jin.tistory.com/59</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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;목표&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;회사의 입장에서 도움이 되는 AI 챗봇을 사용해서 반복적으로 들어오는 &lt;b&gt;CS 업무를 챗봇&lt;/b&gt;으로 자동화해보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;일단 테스트용으로 Cluade Sonnet 3.5를 사용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;초기 Bedrock 설정이 궁금하다면? 이전 글을 참고해주면 좋겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://nomad1jin.tistory.com/58&quot;&gt;2026.06.18 - [AWS] - [AWS] Bedrock 사용하기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1781790093316&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[AWS] Bedrock 사용하기&quot; data-og-description=&quot;최근 백엔드 개발자로서 해커톤을 새롭게 시작했다. K-POP을 좋아하는 외국인을 대상으로 한 기업의 AI 챗봇 서비스를 만들기로 했다. Bedrock 구성 요소의 내용을 간단하게 살펴보자.Converse: 모델에&quot; data-og-host=&quot;nomad1jin.tistory.com&quot; data-og-source-url=&quot;https://nomad1jin.tistory.com/58&quot; data-og-url=&quot;https://nomad1jin.tistory.com/58&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2mswG/dJMb88e9Vze/k5ARACo9iMlJcES3NZkxDK/img.png?width=800&amp;amp;height=461&amp;amp;face=0_0_800_461,https://scrap.kakaocdn.net/dn/bQhPDb/dJMb83kCcut/0ymjSBezBuXAK2Gjj0PRvK/img.png?width=800&amp;amp;height=461&amp;amp;face=0_0_800_461,https://scrap.kakaocdn.net/dn/j3hHK/dJMb82MMmXa/xCl1FJ79a2jvJcBYQd8aDk/img.png?width=1732&amp;amp;height=1356&amp;amp;face=0_0_1732_1356&quot;&gt;&lt;a href=&quot;https://nomad1jin.tistory.com/58&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nomad1jin.tistory.com/58&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2mswG/dJMb88e9Vze/k5ARACo9iMlJcES3NZkxDK/img.png?width=800&amp;amp;height=461&amp;amp;face=0_0_800_461,https://scrap.kakaocdn.net/dn/bQhPDb/dJMb83kCcut/0ymjSBezBuXAK2Gjj0PRvK/img.png?width=800&amp;amp;height=461&amp;amp;face=0_0_800_461,https://scrap.kakaocdn.net/dn/j3hHK/dJMb82MMmXa/xCl1FJ79a2jvJcBYQd8aDk/img.png?width=1732&amp;amp;height=1356&amp;amp;face=0_0_1732_1356');&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;[AWS] Bedrock 사용하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;최근 백엔드 개발자로서 해커톤을 새롭게 시작했다. K-POP을 좋아하는 외국인을 대상으로 한 기업의 AI 챗봇 서비스를 만들기로 했다. Bedrock 구성 요소의 내용을 간단하게 살펴보자.Converse: 모델에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nomad1jin.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;DTO&lt;/b&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;K-pop을 좋아하는 외국인이 주요 대상이기 때문에, &lt;b&gt;&quot;국적, 언어, 채팅 내용&quot;&lt;/b&gt;을 일단 파라미터로 생각했다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1781675234369&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ai.chatbot.domain.dto;

public record ChatRequest(
        String country,
        String language,
        String message
) {}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1781675247502&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ai.chatbot.domain.dto;

import java.time.LocalDateTime;

public record ChatResponse (
        String answer,
        LocalDateTime answerAt
) {}&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Service&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일단 초기 구현에서는 프롬프트와 데이터베이스에 적재될 내용을 하드코딩했다.&lt;/li&gt;
&lt;li&gt;사용할 모델은 추후 쉽게 교체하기 위해 application.yml에 빼두었다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;- buildSystemPrompt) 당신은 [기업]의 고객 서비스 챗봇입니다. [기업]은 K-POP 굿즈와 팬 서비스를 판매하는 플랫폼입니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;- getProductInfo) 예시로 코르티스 첫번째 앨범 가격과 재고, 버전 2개를 작성함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1781675324618&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Service
@RequiredArgsConstructor
public class ChatService {

    private final BedrockRuntimeClient bedrockClient;

    // Value는 final 필드랑 다른 방식으로 주입되므로 적지 않을 것
    @Value(&quot;${bedrock.model-id}&quot;)
    private String modelId;

    public ChatResponse chat(ChatRequest request) {
        // 1. 시스템 프롬프트 구성 (국가/언어 + 상품정보 주입)
        String systemPrompt = buildSystemPrompt(request);

        // 2. 사용자 메시지 구성
        Message userMessage = Message.builder()
                .role(ConversationRole.USER)
                .content(ContentBlock.fromText(request.message()))
                .build();

        // 3. Bedrock 호출
        ConverseResponse response = bedrockClient.converse(req -&amp;gt; req
                .modelId(modelId)
                .system(SystemContentBlock.fromText(systemPrompt))  // &amp;larr; 시스템 프롬프트
                .messages(userMessage)
                .inferenceConfig(c -&amp;gt; c
                        .maxTokens(1024)
                        .temperature(0.5F))
        );

        // 4. 답변 추출
        String answer = response.output().message().content().getFirst().text();

        return new ChatResponse(answer, LocalDateTime.now());
    }

    private String buildSystemPrompt(ChatRequest request) {
        // 상품 정보 (지금은 임시 하드코딩, 나중에 DB 조회로 교체)
        String productInfo = getProductInfo();

        return &quot;&quot;&quot;
                당신은 K-POP을 좋아하는 외국인 고객 서비스 챗봇입니다.
                [기업]은 K-POP 굿즈와 팬 서비스를 판매하는 플랫폼입니다.

                [응답 규칙]
                - 사용자는 %s에 거주하며, %s로 질문합니다. 반드시 %s로 답변하세요.
                - 아래 상품 목록에 있는 정보만으로 답하세요.
                - 목록에 없는 상품을 묻거나 모르는 정보는 &quot;해당 정보는 확인이 어렵습니다&quot;라고 솔직히 답하세요.
                - 추측하거나 없는 정보를 지어내지 마세요.

                [상품 목록]
                %s
                &quot;&quot;&quot;.formatted(
                request.country(),
                request.language(),
                request.language(),
                productInfo
        );
    }

    private String getProductInfo() {
        // TODO: 나중에 DB에서 조회하도록 변경
        return &quot;&quot;&quot;
                - 코르티스(CORTIS) 1st 앨범 [COLOR OUTSIDE THE LINES]: 가격 25,000원, 재고 120개
                  &amp;middot; Standard 버전: 포토북 + 포토카드 2종 + CD
                  &amp;middot; Limited 버전: 포토북(양장) + 포토카드 5종 + 포스터 + CD
                &quot;&quot;&quot;;
    }
}&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Controller&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1781675777449&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@RestController
@RequestMapping(&quot;/api/chat&quot;)
@RequiredArgsConstructor
public class ChatController {

    private final ChatService chatService;

    @PostMapping
    public ChatResponse chat(@RequestBody ChatRequest request) {
        return chatService.chat(request);
    }
}&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;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;API 테스트&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.&amp;nbsp; 외국인을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;일본인&lt;/span&gt;이라고 가정하고, 코르티스의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;앨범 버전&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;스탠다드와 리미티드를 예시로 질문했다.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;파파고 번역기를 통해 번역해본 결과, 클로드 소넷이 정상적으로 작동함을 알 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wEFMe/dJMcahY5sa3/u4YAQSbE6zzzvIbaEKANu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wEFMe/dJMcahY5sa3/u4YAQSbE6zzzvIbaEKANu1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1824&quot; data-filename=&quot;스크린샷 2026-06-17 오후 2.37.15.png&quot; width=&quot;719&quot; height=&quot;677&quot; style=&quot;width: 50.9305%; margin-right: 10px;&quot; data-widthpercent=&quot;51.53&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wEFMe/dJMcahY5sa3/u4YAQSbE6zzzvIbaEKANu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwEFMe%2FdJMcahY5sa3%2Fu4YAQSbE6zzzvIbaEKANu1%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;1936&quot; height=&quot;1824&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QsdR4/dJMcajijpMz/gLrU9dF0ky9uVIPV7znN01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QsdR4/dJMcajijpMz/gLrU9dF0ky9uVIPV7znN01/img.png&quot; data-filename=&quot;스크린샷 2026-06-17 오후 2.38.25.png&quot; data-origin-height=&quot;1240&quot; data-origin-width=&quot;1238&quot; data-is-animation=&quot;false&quot; width=&quot;611&quot; height=&quot;612&quot; style=&quot;width: 47.9067%;&quot; data-widthpercent=&quot;48.47&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QsdR4/dJMcajijpMz/gLrU9dF0ky9uVIPV7znN01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQsdR4%2FdJMcajijpMz%2FgLrU9dF0ky9uVIPV7znN01%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;1238&quot; height=&quot;1240&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 데이터베이스에 있다고 가정한 데이터가 아닌 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;다른 내용&lt;/span&gt;을 질문한다면?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;외국인을 중국인으로 가정하고, &lt;b&gt;코르티스가 아닌 방탄소년단&lt;/b&gt;에 대한 질문을 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;BTS 앨범이 없다고&lt;/b&gt; 올바르게 답변하는 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NRFET/dJMcabYV1aK/kWUwRLj1knvYIiCrRPX42K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NRFET/dJMcabYV1aK/kWUwRLj1knvYIiCrRPX42K/img.png&quot; data-filename=&quot;스크린샷 2026-06-17 오후 2.40.37.png&quot; data-origin-height=&quot;1908&quot; data-origin-width=&quot;1936&quot; data-is-animation=&quot;false&quot; width=&quot;623&quot; height=&quot;614&quot; data-widthpercent=&quot;42.01&quot; style=&quot;width: 41.5248%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NRFET/dJMcabYV1aK/kWUwRLj1knvYIiCrRPX42K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNRFET%2FdJMcabYV1aK%2FkWUwRLj1knvYIiCrRPX42K%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;1936&quot; height=&quot;1908&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3HmdM/dJMcac4x1nV/tpoMkzjNXp4FvIFQuTWmr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3HmdM/dJMcac4x1nV/tpoMkzjNXp4FvIFQuTWmr0/img.png&quot; data-filename=&quot;스크린샷 2026-06-17 오후 2.40.59.png&quot; data-origin-height=&quot;884&quot; data-origin-width=&quot;1238&quot; data-is-animation=&quot;false&quot; width=&quot;630&quot; height=&quot;450&quot; style=&quot;width: 57.3124%;&quot; data-widthpercent=&quot;57.99&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3HmdM/dJMcac4x1nV/tpoMkzjNXp4FvIFQuTWmr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3HmdM%2FdJMcac4x1nV%2FtpoMkzjNXp4FvIFQuTWmr0%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;1238&quot; height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;추후에 데이터베이스에 &lt;b&gt;기업의 데이터를 가정하고 Mock 데이터를 넣고 테스트&lt;/b&gt;해볼 생각이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;참고 공식 자료&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1781789973727&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;Java 2.x용 SDK를 사용하는 Amazon Bedrock 런타임 예제 - AWS SDK for Java 2.x&quot; data-og-description=&quot;이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.&quot; data-og-host=&quot;docs.aws.amazon.com&quot; data-og-source-url=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot; data-og-url=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Java 2.x용 SDK를 사용하는 Amazon Bedrock 런타임 예제 - AWS SDK for Java 2.x&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Spring Boot</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/59</guid>
      <comments>https://nomad1jin.tistory.com/59#entry59comment</comments>
      <pubDate>Thu, 18 Jun 2026 22:41:51 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] Bedrock 사용하기</title>
      <link>https://nomad1jin.tistory.com/58</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;최근 &lt;b&gt;백엔드&lt;/b&gt; 개발자로서 해커톤을 새롭게 시작했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K-POP을 좋아하는 외국인을 대상으로 한 &lt;b&gt;기업의 AI 챗봇 서비스&lt;/b&gt;를 만들기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Bedrock 구성 요소의 내용을 간단하게 살펴보자.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Converse: 모델에 메시지 보내고 답을 받는 기본 방식. 모델 종류와 상관없이 호출 형식이 통일됨. modelId만 바꾸면 되서 편리하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ConverseStream 응답을 한 글자식 타이핑되듯이 나오는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Document Understanding 문서이해: 문서 파일을 같이 던져서 &amp;ldquo;이 문서 내용 요약해줘&amp;rdquo;같은 유형&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시나리오 Converse API에서 도구 사용: 모델이 DB에서 주문 조회하게 하고 싶으면 이걸 쓰기&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;
&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;h3 data-ke-size=&quot;size23&quot;&gt;1. AWS에서 모델 선택하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필자의 경우 클로드 소넷 4.6을 사용&lt;/li&gt;
&lt;li&gt;클로드의 경우 유저 정보를 작성해서 제출해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;간단하게 어떤 회사인지, 어느 분야인지, 회사 홈페이지 정도&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-17 오전 11.28.19.png&quot; data-origin-width=&quot;2314&quot; data-origin-height=&quot;1324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QCiyK/dJMcaa6OS8K/T4TlPPYb70B8MFzSE2R0k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QCiyK/dJMcaa6OS8K/T4TlPPYb70B8MFzSE2R0k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QCiyK/dJMcaa6OS8K/T4TlPPYb70B8MFzSE2R0k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQCiyK%2FdJMcaa6OS8K%2FT4TlPPYb70B8MFzSE2R0k0%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;698&quot; height=&quot;399&quot; data-filename=&quot;스크린샷 2026-06-17 오전 11.28.19.png&quot; data-origin-width=&quot;2314&quot; data-origin-height=&quot;1324&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클로드 비용은 다음과 같다. 개발 단계에서는 일단 Sonnet을 사용하기로 했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-17 오전 11.13.27.png&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1lGqO/dJMcaiwXoMm/SKe05dAllrTfQlifiMFE2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1lGqO/dJMcaiwXoMm/SKe05dAllrTfQlifiMFE2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1lGqO/dJMcaiwXoMm/SKe05dAllrTfQlifiMFE2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1lGqO%2FdJMcaiwXoMm%2FSKe05dAllrTfQlifiMFE2k%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;687&quot; height=&quot;397&quot; data-filename=&quot;스크린샷 2026-06-17 오전 11.13.27.png&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;1036&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;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;h3 data-ke-size=&quot;size23&quot;&gt;2. AWS CLI 설치하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;나는 콘솔에서 설치했는데. 맥북인 경우 Brew로 더 쉽게 설치될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이를 입력하고 나면 패스워드를 물어보는데, 맥북 비밀번호를 입력하면 된다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;curl &quot;&amp;lt;https://awscli.amazonaws.com/AWSCLIV2.pkg&amp;gt;&quot; -o &quot;AWSCLIV2.pkg&quot;
sudo installer -pkg AWSCLIV2.pkg -target /
&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;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;MacBookAir Chatbot % curl &quot;&amp;lt;https://awscli.amazonaws.com/AWSCLIV2.pkg&amp;gt;&quot; -o &quot;AWSCLIV2.pkg&quot;
sudo installer -pkg AWSCLIV2.pkg -target /
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 53.0M  100 53.0M    0     0  16.8M      0  0:00:03  0:00:03 --:--:-- 16.8M
Password:
installer: Package name is AWS Command Line Interface
installer: Installing at base path /
installer: The install was successful.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. AWS 콘솔에서 액세스 키 발급하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;IAM &amp;gt; 보안자격증명 &amp;gt; 액세스 키 발급&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 페이지는 한 번밖에 안 보여주므로 &lt;b&gt;액세스 키&lt;/b&gt;와 &lt;b&gt;비밀 액세스 키&lt;/b&gt;를 반드시 잘 적어두거나, CSV를 다운해둘것.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-17 오후 12.18.52.png&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;1356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RkNF8/dJMcahSjtx8/eycp96dK6CNRvgqOfozsx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RkNF8/dJMcahSjtx8/eycp96dK6CNRvgqOfozsx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RkNF8/dJMcahSjtx8/eycp96dK6CNRvgqOfozsx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRkNF8%2FdJMcahSjtx8%2Feycp96dK6CNRvgqOfozsx1%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;664&quot; height=&quot;520&quot; data-filename=&quot;스크린샷 2026-06-17 오후 12.18.52.png&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;1356&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;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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 키 등록&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위에서 받아둔 액세스키와 비밀 액세스키, 지역, 결과 포맷 형식을 입력한다.&lt;/li&gt;
&lt;li&gt;지역을 특히 seoul 이 아닌 ap-northeast-2로 할 것&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;dsconfig&quot;&gt;&lt;code&gt;// 잘못 입력했다면 수정 가능
aws configure

// 자격증명이 살아있는지 최종 확인
aws sts get-caller-identity
&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-17 오후 12.26.50.png&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lDpSa/dJMcabYXnxU/xKxvKUJrso1CwZtHi9XKCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lDpSa/dJMcabYXnxU/xKxvKUJrso1CwZtHi9XKCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lDpSa/dJMcabYXnxU/xKxvKUJrso1CwZtHi9XKCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlDpSa%2FdJMcabYXnxU%2FxKxvKUJrso1CwZtHi9XKCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;156&quot; data-filename=&quot;스크린샷 2026-06-17 오후 12.26.50.png&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;340&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;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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;모델 ID 사용하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Bedrock &amp;gt; Infer &amp;gt; 추론 프로파일 &amp;gt; 추론 프로파일 ID 선택하기&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;모델별로 ID가 다른데, 만약 여러 모델을 사용하고 싶다면 ID를 손쉽게 바꿔 낄 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-17 오후 1.29.57.png&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;1354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCArwM/dJMcabxOw5i/mroHRwHlzLF7nNhBjW4Ke0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCArwM/dJMcabxOw5i/mroHRwHlzLF7nNhBjW4Ke0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCArwM/dJMcabxOw5i/mroHRwHlzLF7nNhBjW4Ke0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCArwM%2FdJMcabxOw5i%2FmroHRwHlzLF7nNhBjW4Ke0%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;602&quot; height=&quot;471&quot; data-filename=&quot;스크린샷 2026-06-17 오후 1.29.57.png&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;1354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-17 오후 1.31.33.png&quot; data-origin-width=&quot;2916&quot; data-origin-height=&quot;1540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQqMU7/dJMcajoZELz/Wo3Pr7m2jxWoTwpuyC9UMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQqMU7/dJMcajoZELz/Wo3Pr7m2jxWoTwpuyC9UMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQqMU7/dJMcajoZELz/Wo3Pr7m2jxWoTwpuyC9UMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQqMU7%2FdJMcajoZELz%2FWo3Pr7m2jxWoTwpuyC9UMK%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;608&quot; height=&quot;321&quot; data-filename=&quot;스크린샷 2026-06-17 오후 1.31.33.png&quot; data-origin-width=&quot;2916&quot; data-origin-height=&quot;1540&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;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Playground 테스트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;평소에는 자바 17 버전을 사용하나, AWS 공식 문서에서 제공한 코드는 자바 21이어서 새로 다운받고 적용했다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;아래에서 버전 변경은 설정 가능하다.&lt;/b&gt;&lt;br /&gt;build.gradle &amp;gt; languageVersion = JavaLanguageVersion.of(21)&lt;br /&gt;File &amp;gt; Project Structure &amp;gt; SDK &amp;amp; Language level&amp;nbsp;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;모델ID는 위에 추론 프로파일에서 복사한 그 ID 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;var inputText = &lt;b&gt;&quot;코르티스가 누구인지 설명해줘&quot;&lt;/b&gt; 라고 프롬프트를 입력해보았다.&lt;/p&gt;
&lt;pre id=&quot;code_1781676428261&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ai.chatbot.domain;

public class Converse {

    public static String converse() {

        // Create a Bedrock Runtime client in the AWS Region you want to use.
        // Replace the DefaultCredentialsProvider with your preferred credentials provider.
        var client = BedrockRuntimeClient.builder()
                .credentialsProvider(DefaultCredentialsProvider.create())
                .region(Region.AP_NORTHEAST_2)
                .build();

        // Set the model ID, e.g., Claude 3 Haiku.
        var modelId = &quot;apac.anthropic.claude-3-5-sonnet-20240620-v1:0&quot;;

        // Create the input text and embed it in a message object with the user role.
        var inputText = &quot;코르티스가 누구인지 설명해줘&quot;;
        var message = Message.builder()
                .content(ContentBlock.fromText(inputText))
                .role(ConversationRole.USER)
                .build();

        try {
            ConverseResponse response = client.converse(request -&amp;gt; request
                    .modelId(modelId)
                    .messages(message)
                    .inferenceConfig(config -&amp;gt; config
                            .maxTokens(512)
                            .temperature(0.5F)
                            .topP(0.9F)));

            var responseText = response.output().message().content().getFirst().text();
            System.out.println(responseText);

            return responseText;

        } catch (SdkClientException e) {
            System.err.printf(&quot;ERROR: Can't invoke '%s'. Reason: %s&quot;, modelId, e.getMessage());
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        converse();
    }
}&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;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Playground 테스트 결과&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;앞뒤 맥락 없이 코르티스가 누구인지 알려줘라고 물은 탓일까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;스페인의 탐험가&lt;/b&gt;에 대해 알려줬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 오후 10.29.44.png&quot; data-origin-width=&quot;2302&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mWsVC/dJMcaaTfbby/1qTrVChr7W6JQ18KSALsC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mWsVC/dJMcaaTfbby/1qTrVChr7W6JQ18KSALsC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mWsVC/dJMcaaTfbby/1qTrVChr7W6JQ18KSALsC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmWsVC%2FdJMcaaTfbby%2F1qTrVChr7W6JQ18KSALsC1%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;748&quot; height=&quot;221&quot; data-filename=&quot;스크린샷 2026-06-18 오후 10.29.44.png&quot; data-origin-width=&quot;2302&quot; data-origin-height=&quot;680&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;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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;var&amp;nbsp;inputText&amp;nbsp;=&amp;nbsp;&lt;b&gt;&quot;케이팝&amp;nbsp;코르티스&amp;nbsp;그룹이&amp;nbsp;뭔지&amp;nbsp;설명해줘&quot;&lt;/b&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;b&gt;케이팝 코르티스 그룹이 존재하지 않는다고 했다. &lt;span style=&quot;background-color: #f6e199;&quot;&gt;클로드에서 환각&lt;/span&gt;을 만난건 처음이라 조금 당황스러웠다. &lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-06-18 오후 10.30.31.png&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TWC3R/dJMcahx4GOx/uLBCDB3Tapb9TqOOtH1kO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TWC3R/dJMcahx4GOx/uLBCDB3Tapb9TqOOtH1kO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TWC3R/dJMcahx4GOx/uLBCDB3Tapb9TqOOtH1kO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTWC3R%2FdJMcahx4GOx%2FuLBCDB3Tapb9TqOOtH1kO0%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;783&quot; height=&quot;277&quot; data-filename=&quot;스크린샷 2026-06-18 오후 10.30.31.png&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;588&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;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;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고 공식 문서&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/service_code_examples_bedrock-runtime_anthropic_claude.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/service_code_examples_bedrock-runtime_anthropic_claude.html&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/bedrock/latest/APIReference/API_runtime_Converse.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/bedrock/latest/APIReference/API_runtime_Converse.html&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot;&gt;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1781676172699&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;Java 2.x용 SDK를 사용하는 Amazon Bedrock 런타임 예제 - AWS SDK for Java 2.x&quot; data-og-description=&quot;이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.&quot; data-og-host=&quot;docs.aws.amazon.com&quot; data-og-source-url=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot; data-og-url=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/java_bedrock-runtime_code_examples.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Java 2.x용 SDK를 사용하는 Amazon Bedrock 런타임 예제 - AWS SDK for Java 2.x&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AWS</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/58</guid>
      <comments>https://nomad1jin.tistory.com/58#entry58comment</comments>
      <pubDate>Thu, 18 Jun 2026 22:36:43 +0900</pubDate>
    </item>
    <item>
      <title>[QGIS] 경사도 tif 와 행정동 shp 데이터 활용하기</title>
      <link>https://nomad1jin.tistory.com/57</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;활용 데이터&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 경사도 데이터를 수집했는데, tif 경남 지역 전체말고 부산의 경사도만 잘라내서 사용하고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.vworld.kr/dtmk/dtmk_ntads_s002.do?dsId=30017&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.vworld.kr/dtmk/dtmk_ntads_s002.do?dsId=30017&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1780056419063&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;공간정보 오픈플랫폼은 국가가 보유하고 있는 공개 가능한 공간정보를 모든 국민이 자유롭게 활용할 수 있도록 다양한 방법을 제공합니다.&quot; data-og-host=&quot;www.vworld.kr&quot; data-og-source-url=&quot;https://www.vworld.kr/dtmk/dtmk_ntads_s002.do?dsId=30017&quot; data-og-url=&quot;https://www.vworld.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hVVA1/dJMb84X5yKd/eCNShjJ6kQiN5H426L4CG1/img.png?width=186&amp;amp;height=40&amp;amp;face=0_0_186_40&quot;&gt;&lt;a href=&quot;https://www.vworld.kr/dtmk/dtmk_ntads_s002.do?dsId=30017&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.vworld.kr/dtmk/dtmk_ntads_s002.do?dsId=30017&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hVVA1/dJMb84X5yKd/eCNShjJ6kQiN5H426L4CG1/img.png?width=186&amp;amp;height=40&amp;amp;face=0_0_186_40');&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;공간정보 오픈플랫폼은 국가가 보유하고 있는 공개 가능한 공간정보를 모든 국민이 자유롭게 활용할 수 있도록 다양한 방법을 제공합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.vworld.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;h2 data-ke-size=&quot;size26&quot;&gt;행정동 SHP에서 부산광역시만 잘라내기&lt;/h2&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 전체 행정동 SHP에서 부산만 선택 - Edit &amp;rarr; Select &amp;rarr; Select Features by Expression&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 부산만 잘라내기&lt;/b&gt; - &lt;b&gt;Raster &amp;rarr; Extraction &amp;rarr; Clip Raster by Mask Layer&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Input layer: &lt;b&gt;slope_gn&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Mask layer: &lt;b&gt;BND_ADM_DONG_PG&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&quot;Selected features only&quot; 체크 켜기&lt;/b&gt; &amp;larr; 필수 (이게 206개만 마스크로 씀)&lt;/li&gt;
&lt;li&gt;Run&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 점으로 변환&lt;/b&gt; Processing Toolbox &amp;rarr; &lt;b&gt;Raster pixels to points&lt;/b&gt; &amp;rarr; Input은 방금 잘라낸 부산 래스터 &amp;rarr; Run&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. 좌표 컬럼 추가&lt;/b&gt; &lt;b&gt;Add geometry attributes&lt;/b&gt; &amp;rarr; Input은 3번 점 레이어 &amp;rarr; Run (xcoord, ycoord 생김)&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5. 행정동 컬럼 추가하기 (조인)&lt;/b&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6. CSV로 내보내기&lt;/b&gt; 4번 결과 레이어 우클릭 &amp;rarr; Export &amp;rarr; Save Features As &amp;rarr; Format을 &lt;b&gt;CSV&lt;/b&gt; &amp;rarr; 저장&lt;/h4&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;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 전체 행정동 SHP에서 부산만 선택 - Edit &amp;rarr; Select &amp;rarr; Select Features by Expression&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부산의 시도 코드는 21!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BND_ADM_DONG_PG CSV에서 &lt;b&gt;ADM_CD 21로 시작한다&lt;/b&gt;는 것을 알 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 7.54.23.png&quot; data-origin-width=&quot;2100&quot; data-origin-height=&quot;1678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5NmmV/dJMcacXAlIX/Ygro5fskQnPOMYUQVK8Wkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5NmmV/dJMcacXAlIX/Ygro5fskQnPOMYUQVK8Wkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5NmmV/dJMcacXAlIX/Ygro5fskQnPOMYUQVK8Wkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5NmmV%2FdJMcacXAlIX%2FYgro5fskQnPOMYUQVK8Wkk%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;734&quot; height=&quot;587&quot; data-filename=&quot;스크린샷 2026-05-29 오후 7.54.23.png&quot; data-origin-width=&quot;2100&quot; data-origin-height=&quot;1678&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;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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;메뉴에서 Edit &amp;gt; Select &amp;gt; Select Features by Expression&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;아래 구문으로 했더니 먹히지 않는다...ADM_CD가 숫자가 아닌 문자열인걸까?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzrf2o/dJMcab5rUKs/gDyjD0kMSEmg6LapfDrgPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzrf2o/dJMcab5rUKs/gDyjD0kMSEmg6LapfDrgPK/img.png&quot; width=&quot;626&quot; height=&quot;444&quot; data-origin-width=&quot;1950&quot; data-origin-height=&quot;1382&quot; data-filename=&quot;스크린샷 2026-05-29 오후 7.56.22.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzrf2o/dJMcab5rUKs/gDyjD0kMSEmg6LapfDrgPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdzrf2o%2FdJMcab5rUKs%2FgDyjD0kMSEmg6LapfDrgPK%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;1950&quot; height=&quot;1382&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV2yrS/dJMb99NhXos/iujMlDJeCMBJNkA4yFkOKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV2yrS/dJMb99NhXos/iujMlDJeCMBJNkA4yFkOKK/img.png&quot; width=&quot;751&quot; height=&quot;532&quot; data-origin-width=&quot;1950&quot; data-origin-height=&quot;1382&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.04.21.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV2yrS/dJMb99NhXos/iujMlDJeCMBJNkA4yFkOKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV2yrS%2FdJMb99NhXos%2FiujMlDJeCMBJNkA4yFkOKK%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;1950&quot; height=&quot;1382&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;left(trim(to_string(&quot;ADM_CD&quot;)), 2) = '21' 을 입력하고 Select Features를 누르면&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;206개가 나온다!&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이 당시엔 QGIS 를 처음 사용해서 몰라서 이렇게 진행했는데.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;애초에 CSV를 불러올 때 컬럼 타입을 수정할 수 있으니 그렇게 진행하는 것이 훨씬 간편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;206개가 잘 선택되었다. 부산의 행정동은 총 206개.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOeAJs/dJMcajvDNzY/4B3VFBJ2A9SQuWL0SVELH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOeAJs/dJMcajvDNzY/4B3VFBJ2A9SQuWL0SVELH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOeAJs/dJMcajvDNzY/4B3VFBJ2A9SQuWL0SVELH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOeAJs%2FdJMcajvDNzY%2F4B3VFBJ2A9SQuWL0SVELH1%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;574&quot; height=&quot;57&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;70&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;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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 부산만 잘라내기&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Raster &amp;rarr; Extraction &amp;rarr; Clip Raster by Mask Layer&lt;/b&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;Raster &amp;gt; Extraction &amp;gt; Clip raster by mask layer&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;경사도에 행정동 SHP로 마스크.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGAS0l/dJMcacDkqkY/S9GFQ8wtnxDcrBl3yIMbB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGAS0l/dJMcacDkqkY/S9GFQ8wtnxDcrBl3yIMbB1/img.png&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;1334&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.16.51.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.2703%; margin-right: 10px;&quot; data-widthpercent=&quot;47.83&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGAS0l/dJMcacDkqkY/S9GFQ8wtnxDcrBl3yIMbB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGAS0l%2FdJMcacDkqkY%2FS9GFQ8wtnxDcrBl3yIMbB1%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;1600&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3eoBy/dJMcafteIZA/rZK8cZYBTTSaoZhFhRSV3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3eoBy/dJMcafteIZA/rZK8cZYBTTSaoZhFhRSV3k/img.png&quot; data-origin-width=&quot;2486&quot; data-origin-height=&quot;1900&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.07.09.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.5669%;&quot; data-widthpercent=&quot;52.17&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3eoBy/dJMcafteIZA/rZK8cZYBTTSaoZhFhRSV3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3eoBy%2FdJMcafteIZA%2FrZK8cZYBTTSaoZhFhRSV3k%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;2486&quot; height=&quot;1900&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 점으로 변환&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Processing Toolbox &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Raster pixels to points&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; Input은 방금 잘라낸 부산 래스터 &amp;rarr; Run&lt;/h4&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. 좌표 컬럼 추가&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Add geometry attributes&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; Input은 3번 점 레이어 &amp;rarr; Run (xcoord, ycoord 생김)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3번 점으로 변환하고 생긴 &lt;b&gt;Vector Points&lt;/b&gt;를&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Add geometry attributes&lt;/b&gt;을 Input layer로 넣을것! Run&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.49.39.png&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRmSu6/dJMcai4vItv/RGZuJPAyMRkoAVKybe13kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRmSu6/dJMcai4vItv/RGZuJPAyMRkoAVKybe13kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRmSu6/dJMcai4vItv/RGZuJPAyMRkoAVKybe13kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRmSu6%2FdJMcai4vItv%2FRGZuJPAyMRkoAVKybe13kk%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;716&quot; height=&quot;590&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.49.39.png&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1246&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;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;Encoding; UTF-8 선택&lt;/b&gt; (이렇게 해야 한글이 있으면 깨지지 않음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Geometry type; No Geometry 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.51.12.png&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSRwnr/dJMcai4vItM/v8pJYWT1EqDlZ7LQrPjgt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSRwnr/dJMcai4vItM/v8pJYWT1EqDlZ7LQrPjgt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSRwnr/dJMcai4vItM/v8pJYWT1EqDlZ7LQrPjgt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSRwnr%2FdJMcai4vItM%2Fv8pJYWT1EqDlZ7LQrPjgt0%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;658&quot; height=&quot;731&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.51.12.png&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;1464&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 컴퓨터 경로를 설정 안 하고 냅다 파일명만 작성하면 아래와 같은 에러가 뜨니 유의하자!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.51.18.png&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;854&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btLdY9/dJMcahq52E2/DN9k1uvtzsPHZaNxewWQT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btLdY9/dJMcahq52E2/DN9k1uvtzsPHZaNxewWQT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btLdY9/dJMcahq52E2/DN9k1uvtzsPHZaNxewWQT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtLdY9%2FdJMcahq52E2%2FDN9k1uvtzsPHZaNxewWQT0%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;541&quot; height=&quot;378&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.51.18.png&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;854&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CSV로 내보내기&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;4번 결과 레이어 우클릭 &amp;rarr; Export &amp;rarr; Save Features As &amp;rarr; Format을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CSV&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; 저장&lt;/h4&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;추출된 경사도 데이터(위도/경도)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결과를 확인해보니, &lt;b&gt;경사도(value)와 좌표&lt;/b&gt;만 나온 것을 알 수 있다. 기존 행정동 데이터에는 &lt;b&gt;시군구 주소&lt;/b&gt;가 있었기에 같이 출력하면 보기 편할 것 같다는 생각을 했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 어떻게 JOIN 하지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.53.03.png&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;1196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciIZtL/dJMcahq52E3/1gmqdHYN7jYPRo2UoS8Ab1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciIZtL/dJMcahq52E3/1gmqdHYN7jYPRo2UoS8Ab1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciIZtL/dJMcahq52E3/1gmqdHYN7jYPRo2UoS8Ab1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciIZtL%2FdJMcahq52E3%2F1gmqdHYN7jYPRo2UoS8Ab1%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;435&quot; height=&quot;633&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.53.03.png&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;1196&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;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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5. 행정동 컬럼 추가하기 (조인)&lt;/b&gt;&lt;/h4&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;점 레이어와 행정동 경계를 결합하여 CSV 추출하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클로드를 많이 참고했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMwVdn/dJMcacQNJF5/nrYjBPbRU5x1yX4iE2g6k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMwVdn/dJMcacQNJF5/nrYjBPbRU5x1yX4iE2g6k1/img.png&quot; width=&quot;566&quot; height=&quot;632&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;1094&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.55.46.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 37.6057%; margin-right: 10px;&quot; data-widthpercent=&quot;38.05&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMwVdn/dJMcacQNJF5/nrYjBPbRU5x1yX4iE2g6k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMwVdn%2FdJMcacQNJF5%2FnrYjBPbRU5x1yX4iE2g6k1%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;980&quot; height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKVfcN/dJMcacQNJGP/yIZIOmCOT5K6RFPsLu1g80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKVfcN/dJMcacQNJGP/yIZIOmCOT5K6RFPsLu1g80/img.png&quot; width=&quot;564&quot; height=&quot;387&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;676&quot; data-filename=&quot;스크린샷 2026-05-29 오후 8.58.06.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 61.2315%;&quot; data-widthpercent=&quot;61.95&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKVfcN/dJMcacQNJGP/yIZIOmCOT5K6RFPsLu1g80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKVfcN%2FdJMcacQNJGP%2FyIZIOmCOT5K6RFPsLu1g80%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;986&quot; height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.25.21.png&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;1704&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5kLB3/dJMcahxQyoH/6WjG5WD3UbtoKyvHUIleTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5kLB3/dJMcahxQyoH/6WjG5WD3UbtoKyvHUIleTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5kLB3/dJMcahxQyoH/6WjG5WD3UbtoKyvHUIleTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5kLB3%2FdJMcahxQyoH%2F6WjG5WD3UbtoKyvHUIleTK%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;724&quot; height=&quot;771&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.25.21.png&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;1704&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.07.16.png&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;1334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ehoOia/dJMcah5HQzo/uy9V9vDPSdjk1kKqbk2Mq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ehoOia/dJMcah5HQzo/uy9V9vDPSdjk1kKqbk2Mq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ehoOia/dJMcah5HQzo/uy9V9vDPSdjk1kKqbk2Mq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FehoOia%2FdJMcah5HQzo%2Fuy9V9vDPSdjk1kKqbk2Mq0%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;728&quot; height=&quot;607&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.07.16.png&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;1334&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;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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6. CSV로 내보내기&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;4번 결과 레이어 우클릭 &amp;rarr; Export &amp;rarr; Save Features As &amp;rarr; Format을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CSV&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; 저장&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.07.56.png&quot; data-origin-width=&quot;2714&quot; data-origin-height=&quot;1900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/532OM/dJMcah5HQzK/5MVNGlgnuKUgeyTPXxhuYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/532OM/dJMcah5HQzK/5MVNGlgnuKUgeyTPXxhuYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/532OM/dJMcah5HQzK/5MVNGlgnuKUgeyTPXxhuYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F532OM%2FdJMcah5HQzK%2F5MVNGlgnuKUgeyTPXxhuYK%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;670&quot; height=&quot;469&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.07.56.png&quot; data-origin-width=&quot;2714&quot; data-origin-height=&quot;1900&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;추출된 경사도 데이터 확인&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;위도, 경도, 행정동 코드인 ADM_CD, 행정동&lt;/span&gt;이 잘 조인되어 추출되었다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.10.29.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MLB1D/dJMcadoAzbf/WS14SKtQahu9QlWuRdtTK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MLB1D/dJMcadoAzbf/WS14SKtQahu9QlWuRdtTK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MLB1D/dJMcadoAzbf/WS14SKtQahu9QlWuRdtTK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMLB1D%2FdJMcadoAzbf%2FWS14SKtQahu9QlWuRdtTK0%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;608&quot; height=&quot;463&quot; data-filename=&quot;스크린샷 2026-05-29 오후 9.10.29.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;818&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;다음 번에는 부산의 경사도를 사용한 &lt;b&gt;부산의 빈집 위험 지수&lt;/b&gt;와 &lt;b&gt;입지 선정&lt;/b&gt;을 분석해보겠다.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Data Analysis</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/57</guid>
      <comments>https://nomad1jin.tistory.com/57#entry57comment</comments>
      <pubDate>Tue, 9 Jun 2026 23:24:40 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] LV2. 피로도 (파이썬, Python)</title>
      <link>https://nomad1jin.tistory.com/56</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;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87946&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구분&lt;/h3&gt;
&lt;a id=&quot;user-content-구분&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87946.%E2%80%85%ED%94%BC%EB%A1%9C%EB%8F%84#%EA%B5%AC%EB%B6%84&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코딩테스트 연습 &amp;gt; 완전탐색&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;a id=&quot;user-content-문제-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87946.%E2%80%85%ED%94%BC%EB%A1%9C%EB%8F%84#%EB%AC%B8%EC%A0%9C-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 &quot;최소 필요 피로도&quot;와 던전 탐험을 마쳤을 때 소모되는 &quot;소모 피로도&quot;가 있습니다. &quot;최소 필요 피로도&quot;는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, &quot;소모 피로도&quot;는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 &quot;최소 필요 피로도&quot;가 80, &quot;소모 피로도&quot;가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러 개 있는데, 한 유저가 오늘 이 던전들을 최대한 많이 탐험하려 합니다. 유저의 현재 피로도 k와 각 던전별 &quot;최소 필요 피로도&quot;, &quot;소모 피로도&quot;가 담긴 2차원 배열 dungeons 가 매개변수로 주어질 때, 유저가 탐험할 수 있는 최대 던전 수를 return 하도록 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;제한사항&lt;a id=&quot;user-content-제한사항&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87946.%E2%80%85%ED%94%BC%EB%A1%9C%EB%8F%84#%EC%A0%9C%ED%95%9C%EC%82%AC%ED%95%AD&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;k는 1 이상 5,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;dungeons의 세로(행) 길이(즉, 던전의 개수)는 1 이상 8 이하입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;dungeons의 가로(열) 길이는 2입니다.&lt;/li&gt;
&lt;li&gt;dungeons의 각 행은 각 던전의 [&quot;최소 필요 피로도&quot;, &quot;소모 피로도&quot;] 입니다.&lt;/li&gt;
&lt;li&gt;&quot;최소 필요 피로도&quot;는 항상 &quot;소모 피로도&quot;보다 크거나 같습니다.&lt;/li&gt;
&lt;li&gt;&quot;최소 필요 피로도&quot;와 &quot;소모 피로도&quot;는 1 이상 1,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;서로 다른 던전의 [&quot;최소 필요 피로도&quot;, &quot;소모 피로도&quot;]가 서로 같을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예&lt;a id=&quot;user-content-입출력-예&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87946.%E2%80%85%ED%94%BC%EB%A1%9C%EB%8F%84#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 50.8125%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;&lt;b&gt;k&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;&lt;b&gt;dungeons&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 8.53053%;&quot;&gt;&lt;b&gt;result&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 8.02326%;&quot;&gt;80&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;[[80,20],[50,40],[30,10]]&lt;/td&gt;
&lt;td style=&quot;width: 8.53053%;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예 설명&lt;a id=&quot;user-content-입출력-예-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87946.%E2%80%85%ED%94%BC%EB%A1%9C%EB%8F%84#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현재 피로도는 80입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;만약, 첫 번째 &amp;rarr; 두 번째 &amp;rarr; 세 번째 던전 순서로 탐험한다면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 피로도는 80이며, 첫 번째 던전을 돌기 위해 필요한 &quot;최소 필요 피로도&quot; 또한 80이므로, 첫 번째 던전을 탐험할 수 있습니다. 첫 번째 던전의 &quot;소모 피로도&quot;는 20이므로, 던전을 탐험한 후 남은 피로도는 60입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 60이며, 두 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 50이므로, 두 번째 던전을 탐험할 수 있습니다. 두 번째 던전의 &quot;소모 피로도&quot;는 40이므로, 던전을 탐험한 후 남은 피로도는 20입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 20이며, 세 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 30입니다. 따라서 세 번째 던전은 탐험할 수 없습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;만약, 첫 번째 &amp;rarr; 세 번째 &amp;rarr; 두 번째 던전 순서로 탐험한다면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 피로도는 80이며, 첫 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot; 또한 80이므로, 첫 번째 던전을 탐험할 수 있습니다. 첫 번째 던전의 &quot;소모 피로도&quot;는 20이므로, 던전을 탐험한 후 남은 피로도는 60입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 60이며, 세 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 30이므로, 세 번째 던전을 탐험할 수 있습니다. 세 번째 던전의 &quot;소모 피로도&quot;는 10이므로, 던전을 탐험한 후 남은 피로도는 50입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 50이며, 두 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 50이므로, 두 번째 던전을 탐험할 수 있습니다. 두 번째 던전의 &quot;소모 피로도&quot;는 40이므로, 던전을 탐험한 후 남은 피로도는 10입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 이 경우 세 던전을 모두 탐험할 수 있으며, 유저가 탐험할 수 있는 최대 던전 수는 3입니다.&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 풀이&lt;/h3&gt;
&lt;pre id=&quot;code_1781014847839&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;answer = 0

def solution(k, dungeons):
    global answer
    count = 0
    visited = [False] * len(dungeons)

    dfs(k, count, visited, dungeons)
    
    return answer 

def dfs(k, count, visited, dungeons):
    global answer
    answer = max(answer, count)
    
    for i in range(len(dungeons)):
        if visited[i] == False and k &amp;gt;= dungeons[i][0]:
            visited[i] = True
            dfs(k - dungeons[i][1], count+1, visited, dungeons)
            visited[i] = False&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;- 초기에는 매개변수에 바로 던지지 않고 k -= dungeons[i][1] 로 현재 피로도를 직접 변경했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 하지만 이렇게 하면 재귀 호출이 끝난 뒤에도 변경된 k가 유지되어 다른 경우의 수를 탐색할 때 영향을 준다.&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Algorithm Solving</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/56</guid>
      <comments>https://nomad1jin.tistory.com/56#entry56comment</comments>
      <pubDate>Tue, 9 Jun 2026 23:23:43 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] LV2. n^2 배열 자르기 (파이썬, Python)</title>
      <link>https://nomad1jin.tistory.com/55</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구분&lt;/h3&gt;
&lt;a id=&quot;user-content-구분&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87390.%E2%80%85n%EF%BC%BE2%E2%80%85%EB%B0%B0%EC%97%B4%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EA%B5%AC%EB%B6%84&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코딩테스트 연습 &amp;gt; 월간 코드 챌린지 시즌3&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;a id=&quot;user-content-문제-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87390.%E2%80%85n%EF%BC%BE2%E2%80%85%EB%B0%B0%EC%97%B4%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EB%AC%B8%EC%A0%9C-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정수&lt;span&gt;&amp;nbsp;&lt;/span&gt;n,&lt;span&gt;&amp;nbsp;&lt;/span&gt;left,&lt;span&gt;&amp;nbsp;&lt;/span&gt;right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;n행&lt;span&gt;&amp;nbsp;&lt;/span&gt;n열 크기의 비어있는 2차원 배열을 만듭니다.&lt;/li&gt;
&lt;li&gt;i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1행 1열부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;i행&lt;span&gt;&amp;nbsp;&lt;/span&gt;i열까지의 영역 내의 모든 빈 칸을 숫자&lt;span&gt;&amp;nbsp;&lt;/span&gt;i로 채웁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1행, 2행, ...,&lt;span&gt;&amp;nbsp;&lt;/span&gt;n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다.&lt;/li&gt;
&lt;li&gt;새로운 1차원 배열을&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr이라 할 때,&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr[left],&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr[left+1], ...,&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr[right]만 남기고 나머지는 지웁니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정수&lt;span&gt;&amp;nbsp;&lt;/span&gt;n,&lt;span&gt;&amp;nbsp;&lt;/span&gt;left,&lt;span&gt;&amp;nbsp;&lt;/span&gt;right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;제한사항&lt;a id=&quot;user-content-제한사항&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87390.%E2%80%85n%EF%BC%BE2%E2%80%85%EB%B0%B0%EC%97%B4%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EC%A0%9C%ED%95%9C%EC%82%AC%ED%95%AD&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 107&lt;/li&gt;
&lt;li&gt;0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;left&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;right&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt; n2&lt;/li&gt;
&lt;li&gt;right&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;left&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt; 105&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예&lt;a id=&quot;user-content-입출력-예&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/87390.%E2%80%85n%EF%BC%BE2%E2%80%85%EB%B0%B0%EC%97%B4%E2%80%85%EC%9E%90%EB%A5%B4%EA%B8%B0#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 57.9064%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 8.48838%;&quot;&gt;&lt;b&gt;n&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.7441%;&quot;&gt;&lt;b&gt;left&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;&lt;b&gt;right&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25.3489%;&quot;&gt;&lt;b&gt;result&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 8.48838%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 11.7441%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 25.3489%;&quot;&gt;[3,2,2,3]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 8.48838%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 11.7441%;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;width: 25.3489%;&quot;&gt;[4,3,3,3,4,4,4,4]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;h3 data-ke-size=&quot;size23&quot;&gt;문제 풀이&lt;/h3&gt;
&lt;pre id=&quot;code_1780494071583&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n, left, right)
	answer = []
    
    for i in range(left, right + 1):
    	r = i // n
        c = i % n
        answer.append(max(r + 1, c + 1))
        
    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;계속 인덱스랑 어떤 숫자를 //, % 해서 구하는 문제가 자주 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;행인 경우에 //을 한다는 점을 잘 기억하자.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특히 max(r+1, c+1)이 이 문제의 포인트였다.&lt;/b&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;나도 처음엔 코드를 짜면서 이중 반복문으로 2차원 배열을 만들어야 하는 줄 알았는데.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;arr[r][c] = r+1 로 할지 c+1이 맞는건지 어떻게 해야되는지를 오래 고민했었다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_1434.jpg&quot; data-origin-width=&quot;1692&quot; data-origin-height=&quot;919&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ycc1N/dJMcajh8GRJ/H2FOIaqbd5MfMkhb41jDF0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ycc1N/dJMcajh8GRJ/H2FOIaqbd5MfMkhb41jDF0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ycc1N/dJMcajh8GRJ/H2FOIaqbd5MfMkhb41jDF0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fycc1N%2FdJMcajh8GRJ%2FH2FOIaqbd5MfMkhb41jDF0%2Fimg.jpg&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;724&quot; height=&quot;393&quot; data-filename=&quot;IMG_1434.jpg&quot; data-origin-width=&quot;1692&quot; data-origin-height=&quot;919&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;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>Algorithm Solving</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/55</guid>
      <comments>https://nomad1jin.tistory.com/55#entry55comment</comments>
      <pubDate>Wed, 3 Jun 2026 22:42:09 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] LV2. 할인 행사 (파이썬, Python)</title>
      <link>https://nomad1jin.tistory.com/54</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;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0969da;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구분&lt;/h3&gt;
&lt;a id=&quot;user-content-구분&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/131127.%E2%80%85%ED%95%A0%EC%9D%B8%E2%80%85%ED%96%89%EC%82%AC#%EA%B5%AC%EB%B6%84&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;코딩테스트 연습 &amp;gt; 연습문제&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;a id=&quot;user-content-문제-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/131127.%E2%80%85%ED%95%A0%EC%9D%B8%E2%80%85%ED%96%89%EC%82%AC#%EB%AC%B8%EC%A0%9C-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 정현이가 원하는 제품이 바나나 3개, 사과 2개, 쌀 2개, 돼지고기 2개, 냄비 1개이며, XYZ 마트에서 14일간 회원을 대상으로 할인하는 제품이 날짜 순서대로 치킨, 사과, 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나, 사과, 바나나인 경우에 대해 알아봅시다. 첫째 날부터 열흘 간에는 냄비가 할인하지 않기 때문에 첫째 날에는 회원가입을 하지 않습니다. 둘째 날부터 열흘 간에는 바나나를 원하는 만큼 할인구매할 수 없기 때문에 둘째 날에도 회원가입을 하지 않습니다. 셋째 날, 넷째 날, 다섯째 날부터 각각 열흘은 원하는 제품과 수량이 일치하기 때문에 셋 중 하루에 회원가입을 하려 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정현이가 원하는 제품을 나타내는 문자열 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;want와 정현이가 원하는 제품의 수량을 나타내는 정수 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;number, XYZ 마트에서 할인하는 제품을 나타내는 문자열 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;discount가 주어졌을 때, 회원등록시 정현이가 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 일수를 return 하는 solution 함수를 완성하시오. 가능한 날이 없으면 0을 return 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;제한사항&lt;a id=&quot;user-content-제한사항&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/131127.%E2%80%85%ED%95%A0%EC%9D%B8%E2%80%85%ED%96%89%EC%82%AC#%EC%A0%9C%ED%95%9C%EC%82%AC%ED%95%AD&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;want의 길이 =&lt;span&gt;&amp;nbsp;&lt;/span&gt;number의 길이 &amp;le; 10
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;number의 원소 &amp;le; 10&lt;/li&gt;
&lt;li&gt;number[i]는&lt;span&gt;&amp;nbsp;&lt;/span&gt;want[i]의 수량을 의미하며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;number의 원소의 합은 10입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;10 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;discount의 길이 &amp;le; 100,000&lt;/li&gt;
&lt;li&gt;want와&lt;span&gt;&amp;nbsp;&lt;/span&gt;discount의 원소들은 알파벳 소문자로 이루어진 문자열입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;want의 원소의 길이,&lt;span&gt;&amp;nbsp;&lt;/span&gt;discount의 원소의 길이 &amp;le; 12&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예&lt;a id=&quot;user-content-입출력-예&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/131127.%E2%80%85%ED%95%A0%EC%9D%B8%E2%80%85%ED%96%89%EC%82%AC#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 94.8835%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.8691%;&quot;&gt;&lt;b&gt;want&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 12.7588%;&quot;&gt;&lt;b&gt;number&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.7442%;&quot;&gt;&lt;b&gt;discount&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;&lt;b&gt;result&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;width: 18.8691%;&quot;&gt;[&quot;banana&quot;, &quot;apple&quot;, &quot;rice&quot;, &quot;pork&quot;, &quot;pot&quot;]&lt;/td&gt;
&lt;td style=&quot;width: 12.7588%;&quot;&gt;[3, 2, 2, 2, 1]&lt;/td&gt;
&lt;td style=&quot;width: 51.7442%;&quot;&gt;[&quot;chicken&quot;, &quot;apple&quot;, &quot;apple&quot;, &quot;banana&quot;, &quot;rice&quot;, &quot;apple&quot;, &quot;pork&quot;, &quot;banana&quot;, &quot;pork&quot;, &quot;rice&quot;, &quot;pot&quot;, &quot;banana&quot;, &quot;apple&quot;, &quot;banana&quot;]&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f6f8fa;&quot;&gt;
&lt;td style=&quot;width: 18.8691%;&quot;&gt;[&quot;apple&quot;]&lt;/td&gt;
&lt;td style=&quot;width: 12.7588%;&quot;&gt;[10]&lt;/td&gt;
&lt;td style=&quot;width: 51.7442%;&quot;&gt;[&quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;]&lt;/td&gt;
&lt;td style=&quot;width: 11.3953%;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;입출력 예 설명&lt;a id=&quot;user-content-입출력-예-설명&quot; style=&quot;background-color: #000000; color: #0969da;&quot; href=&quot;https://github.com/nomad1jin/Studying_Algorithm/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/131127.%E2%80%85%ED%95%A0%EC%9D%B8%E2%80%85%ED%96%89%EC%82%AC#%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%98%88-%EC%84%A4%EB%AA%85&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제 예시와 같습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사과가 할인하는 날이 없으므로 0을 return 합니다.&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;초기 접근&amp;nbsp; - 무엇이 틀렸을까?&lt;/h3&gt;
&lt;pre id=&quot;code_1780222645110&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(want, number, discount):
    answer = 0
    dic = {}
    dic2 = {}
    
    for w, n in zip(want, number):
        dic[w] = n
        dic2[w] = 0
    
    for i in range(len(discount) - 9):

        
        for j in range(i, len(discount) - 4 + i):
            if discount[j] in dic2:
                dic2[discount[j]] += 1
            else :
                # 전부터 생각못하는 포인트:
                # 딕셔너리에 없는 거면 1을 해줘야함 (등록)
                dic2[discount[j]] = 1
                
        if dic == dic2:
            answer += 1
            
    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;이 문제는 &lt;b&gt;이중 반복문의 범위&lt;/b&gt;를 생각해내는 것이 어려웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. i 범위를 이렇게 했기 때문에 내부 j 범위는 이렇게 할 필요 없이, 단 10일이 되게끔 &lt;b&gt;j + 10&lt;/b&gt;로 수정하면 되는 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. i 한번 순회 후 &lt;b&gt;딕셔너리 초기화&lt;/b&gt;가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 풀이&lt;/h3&gt;
&lt;pre id=&quot;code_1780222877575&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(want, number, discount):
    answer = 0
    dic = {}
    count = {}
    
    for w, n in zip(want, number):
        dic[w] = n
    
    for i in range(len(discount) - 9):
        dic2 = {}
        
        for j in range(i, len(discount) - 4 + i):
            if discount[j] in dic2:
                dic2[discount[j]] += 1
            else :
                # 전부터 생각못하는 포인트:
                # 딕셔너리에 없는 거면 1을 해줘야함 (등록)
                dic2[discount[j]] = 1
                
        if dic == dic2:
            answer += 1
            
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리를 통해 어떤 물건의 수량을 생각해야하는 문제가 종종 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 만약 딕셔너리에 없으면, 1로 등록은 해주는 else 문을 잊지 말자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 또한, 딕셔너리가 아닌 거 같으면 set를 떠올려보자.&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>Algorithm Solving</category>
      <author>아기꼬래</author>
      <guid isPermaLink="true">https://nomad1jin.tistory.com/54</guid>
      <comments>https://nomad1jin.tistory.com/54#entry54comment</comments>
      <pubDate>Sun, 31 May 2026 19:22:17 +0900</pubDate>
    </item>
  </channel>
</rss>