<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>✨나만의 개발일지✨</title>
    <link>https://subin-programming.tistory.com/</link>
    <description> &amp;zwj; 하루하루 조금씩 </description>
    <language>ko</language>
    <pubDate>Tue, 30 Jun 2026 01:07:34 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>빙수빈수</managingEditor>
    <image>
      <title>✨나만의 개발일지✨</title>
      <url>https://tistory1.daumcdn.net/tistory/4783219/attach/59176cedd8174d0d9955d505ab193eb9</url>
      <link>https://subin-programming.tistory.com</link>
    </image>
    <item>
      <title>[프로그래머스_SQL] 대여 기록이 존재하는 자동차 리스트 구하기</title>
      <link>https://subin-programming.tistory.com/477</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157341&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/157341&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696723303104&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157341&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bk2Pv9/hyT9AZqs0o/DuQTWIlXK0Rtju5RQxEYi0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/tu6tZ/hyT5RuYeE5/haSWeZyS4wyxaOhvUbLkZ0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157341&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157341&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bk2Pv9/hyT9AZqs0o/DuQTWIlXK0Rtju5RQxEYi0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/tu6tZ/hyT5RuYeE5/haSWeZyS4wyxaOhvUbLkZ0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&amp;nbsp;다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_RENTAL_COMPANY_CAR&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블과 자동차 대여 기록 정보를 담은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_RENTAL_COMPANY_RENTAL_HISTORY&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CAR_RENTAL_COMPANY_CAR&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블은 아래와 같은 구조로 되어있으며,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_ID&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_TYPE&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;DAILY_FEE&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;OPTIONS&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.&lt;/span&gt; &lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-style=&quot;style4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Column name&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Type&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Nullable&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;CAR_ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;CAR_TYPE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;VARCHAR(255)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DAILY_FEE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;OPTIONS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;VARCHAR(255)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CAR_RENTAL_COMPANY_RENTAL_HISTORY&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;테이블은 아래와 같은 구조로 되어있으며,&amp;nbsp;&lt;/span&gt;HISTORY_ID&lt;span style=&quot;text-align: left;&quot;&gt;,&amp;nbsp;&lt;/span&gt;CAR_ID&lt;span style=&quot;text-align: left;&quot;&gt;,&amp;nbsp;&lt;/span&gt;START_DATE&lt;span style=&quot;text-align: left;&quot;&gt;,&amp;nbsp;&lt;/span&gt;END_DATE&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-style=&quot;style7&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Column name&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Type&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Nullable&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;HISTORY_ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;CAR_ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;START_DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;END_DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CAR_RENTAL_COMPANY_CAR&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_RENTAL_COMPANY_RENTAL_HISTORY&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;[코드]&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696723416625&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT DISTINCT A.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR AS A
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS B
ON A.CAR_ID = B.CAR_ID
WHERE MONTH(B.START_DATE) = 10 AND A.CAR_TYPE = '세단'
ORDER BY A.CAR_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;[코드 2]&lt;/p&gt;
&lt;pre id=&quot;code_1698196312558&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT A.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR AS A
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS B
ON A.CAR_ID = B.CAR_ID
WHERE B.START_DATE LIKE '2022-10%' AND A.CAR_TYPE LIKE '세단'
GROUP BY A.CAR_ID
ORDER BY CAR_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;이번 문제는 큰 어려움 없이 문제에 주어진 조건을 모두 작성하기만 하면 정답이었다. 이때, CAR_ID의 &lt;span style=&quot;color: #ee2323;&quot;&gt;중복을 없애기 위해 DISTINCT 명령어를 속성 앞에 적어&lt;span style=&quot;color: #000000;&quot;&gt;주거나&lt;/span&gt; &lt;/span&gt; CAR_ID 별로 그룹을 묶어 중복을 없애 줄 수도 있었다.&lt;/p&gt;</description>
      <category>SQL 문제</category>
      <category>sql</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/477</guid>
      <comments>https://subin-programming.tistory.com/477#entry477comment</comments>
      <pubDate>Wed, 25 Oct 2023 10:13:03 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_Level3] 베스트앨범</title>
      <link>https://subin-programming.tistory.com/527</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42579&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42579&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697773652930&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42579&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IjZz1/hyUgTyeahR/OQxszd30TScIvBNfRCx1qK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/nUCbs/hyUgNELerK/NE9zykZh5M1szLD5P0VstK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42579&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42579&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IjZz1/hyUgTyeahR/OQxszd30TScIvBNfRCx1qK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/nUCbs/hyUgNELerK/NE9zykZh5M1szLD5P0VstK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;속한 노래가 많이 재생된 장르를 먼저 수록합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;장르 내에서 많이 재생된 노래를 먼저 수록합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요.&lt;/p&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;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;genres[i]는 고유번호가 i인 노래의 장르입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;plays[i]는 고유번호가 i인 노래가 재생된 횟수입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;genres와 plays의 길이는 같으며, 이는 1 이상 10,000 이하입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;장르 종류는 100개 미만입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;장르에 속한 곡이 하나라면, 하나의 곡만 선택합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&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;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1697773677669&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public int[] solution(String[] genres, int[] plays) {
        int[] answer = {};
        
        // 장르별 play 횟수 누적
        HashMap&amp;lt;String, Integer&amp;gt; genre=new HashMap&amp;lt;&amp;gt;();
        for(int i=0;i&amp;lt;genres.length;i++){
            String g=genres[i];
            int count=plays[i];
            
            genre.put(g, genre.getOrDefault(g,0)+count);
        }
        
        // 각 장르 연결리스트에 저장
        ArrayList&amp;lt;String&amp;gt; arr=new ArrayList&amp;lt;&amp;gt;();
        for(String key:genre.keySet())
            arr.add(key);
        
        // 누적된 재생 횟수가 많은 순서대로 장르 연결리스트 정렬
        Collections.sort(arr, new Comparator&amp;lt;String&amp;gt;(){
           public int compare(String o1, String o2){
               return genre.get(o2)-genre.get(o1);
           }
        });
        
        ArrayList&amp;lt;Integer&amp;gt; list=new ArrayList&amp;lt;&amp;gt;();
        
        // 각 장르 별 재생횟수가 1,2 번째로 많은 노래의 고유번호 구하기
        for(int i=0;i&amp;lt;arr.size();i++) {
            String g=arr.get(i); // 장르
            int max=0; // 가장 많은 재생 횟수
            int index_first=-1; // 고유번호
            
            for(int j=0;j&amp;lt;plays.length;j++){
                // 장르
                if(genres[j].equals(g)&amp;amp;&amp;amp;max&amp;lt;plays[j]){
                    max=plays[j];
                    index_first=j;
                }
            }
            
            max=0; // 두번째 많은 재생 횟수
            int index_second=-1;
            for(int j=0;j&amp;lt;plays.length;j++){
                if(genres[j].equals(g)&amp;amp;&amp;amp;max&amp;lt;plays[j]&amp;amp;&amp;amp;j!=index_first){
                    max=plays[j];
                    index_second=j;
                }
            }
            
            list.add(index_first);
            if(index_second&amp;gt;=0) // 두 번째로 재생횟수가 많은 노래가 있는 경우만 삽입 
                list.add(index_second);
        }
        
        answer=new int[list.size()];
        for(int i=0;i&amp;lt;list.size();i++)
            answer[i]=list.get(i);
        
        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;&amp;nbsp;이번 문제는 각 장르별 누적 재생 횟수를 구하는 데 HashMap을 사용하고, 해당 map을 연결리스트에 옮긴 후 재생 횟수가 큰 순서대로 내림차순을 해주어야 한다. 이를 위해서 comparator를 사용하여 compare 함수를 오버라이딩 해주었다. 또한 두 번째로 재생 횟수가 많은 노래를 존재하지 않을 수 있는 경우를 생각해주어야 했다.&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>hashmap</category>
      <category>level3</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/527</guid>
      <comments>https://subin-programming.tistory.com/527#entry527comment</comments>
      <pubDate>Fri, 20 Oct 2023 12:52:22 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_Level2] 타겟 넘버</title>
      <link>https://subin-programming.tistory.com/475</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/43165&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696673567125&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/x5Wgt/hyT5RVW1SV/JUMtDCIDn8dTfRwShyaiiK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/nbnow/hyT9Fzy3NS/gBJG9MNrYbWQ1TQksjZcg0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/x5Wgt/hyT5RVW1SV/JUMtDCIDn8dTfRwShyaiiK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/nbnow/hyT9Fzy3NS/gBJG9MNrYbWQ1TQksjZcg0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;
&lt;pre class=&quot;php&quot; style=&quot;background-color: #e9ecf3; color: #44576c;&quot; data-ke-language=&quot;php&quot;&gt;&lt;code&gt;-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.&lt;/p&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;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;주어지는 숫자의 개수는 2개 이상 20개 이하입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;각 숫자는 1 이상 50 이하인 자연수입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;타겟 넘버는 1 이상 1000 이하인 자연수입니다.&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;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1696673643313&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    static int answer=0;
    static boolean[] visited;
    public int solution(int[] numbers, int target) {
       
        visited=new boolean[numbers.length];
        dfs(0,0,numbers,target);
        
        
        return answer;
    }
    
    static void dfs(int depth, int sum, int[] numbers, int target){
        if(depth==numbers.length){
            if(sum==target)
                answer++;
            
            return;
        }
       
        dfs(depth+1,sum+numbers[depth],numbers,target);
        dfs(depth+1,sum+(numbers[depth]*-1),numbers,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;[코드2]&lt;/p&gt;
&lt;pre id=&quot;code_1697771727060&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    static int answer;
    public int solution(int[] numbers, int target) {
        
        dfs(numbers,target,0,0,0);
        
        return answer;
    }
    
    static void dfs(int[] numbers, int target, int sum, int depth, int index){
        if(depth==numbers.length){
            if(sum==target)
                answer++;
            return;
        }
        
        for(int i=index;i&amp;lt;numbers.length;i++) {
            dfs(numbers, target, sum+(numbers[depth]), depth+1, i+1);
            dfs(numbers, target, sum+(-1*numbers[depth]), depth+1, i+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;[고찰]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이번 문제는 DFS 알고리즘을 이용하는 문제였다. 배열의 탐색 깊이를 늘려가면서 +값을 그대로 더해주느냐 -1을 곱한 값을 더해주느냐 이 두 가지 계산 방법으로 깊이 탐색을 해주면 된다.&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>level2</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/475</guid>
      <comments>https://subin-programming.tistory.com/475#entry475comment</comments>
      <pubDate>Fri, 20 Oct 2023 12:15:29 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_Level3] 여행경로</title>
      <link>https://subin-programming.tistory.com/526</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43164&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/43164&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697769536589&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43164&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b0iPIl/hyUgH5Dpzt/ShmgcjptCqI4istpL6RPP1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bt75f7/hyUgQIgvIx/aQXxmVR1DSDYbkaXc5nSRK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43164&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b0iPIl/hyUgH5Dpzt/ShmgcjptCqI4istpL6RPP1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bt75f7/hyUgQIgvIx/aQXxmVR1DSDYbkaXc5nSRK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 &quot;ICN&quot; 공항에서 출발합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.&lt;/p&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;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;모든 공항은 알파벳 대문자 3글자로 이루어집니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;주어진 공항 수는 3개 이상 10,000개 이하입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;주어진 항공권은 모두 사용해야 합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&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;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1697769555472&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    static boolean[] visited;
    static ArrayList&amp;lt;String&amp;gt; route;
    
    public String[] solution(String[][] tickets) {
        String[] answer = {};
        visited=new boolean[tickets.length];
        route=new ArrayList&amp;lt;&amp;gt;();
        
        dfs(&quot;ICN&quot;,&quot;ICN&quot;,0,tickets);
        
        Collections.sort(route); // 알파벳 순으로 경로 정렬
        answer=route.get(0).split(&quot; &quot;); // 알파벳 순서가 앞서는 경로 가져오기
        
        return answer;
    }
    
    // 시작 공항, 여행 경로, 티켓 수, 티켓 배열
    static void dfs(String start, String way, int depth, String[][] tickets){
        if(depth==tickets.length){ // 모든 티켓을 사용한 경우
            route.add(way); // 경로 추가
            return;
        }
        
        for(int i=0;i&amp;lt;tickets.length;i++){
            // 아직 사용하지 않은 티켓이고, 티켓의 출발 공항이 start와 같다면 사용 가능한 티켓
            if(!visited[i]&amp;amp;&amp;amp;start.equals(tickets[i][0])){
                visited[i]=true; // 방문처리
                dfs(tickets[i][1],way+&quot; &quot;+tickets[i][1],depth+1,tickets);
                visited[i]=false;
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[고찰]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이번 문제는 티켓을 사용하여 나올 수 있는 모든 이동 경로를 구한 후 경로를 알파벳 순으로 정렬하여 가장 첫 번째 값을 가져오면 되는 문제였다. DFS 함수는 시작 공항, 여행 경로, 사용한 티켓 수, 티켓 배열을 들고 다니면서 시작 공항과 사용할 티켓의 출발 공항이 같은지 확인하면서 경로에 추가해주어야 한다.&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>dfs</category>
      <category>level3</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/526</guid>
      <comments>https://subin-programming.tistory.com/526#entry526comment</comments>
      <pubDate>Fri, 20 Oct 2023 11:42:39 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기</title>
      <link>https://subin-programming.tistory.com/525</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157339&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/157339&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697763454701&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157339&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eyDFZ/hyUgQVMMZ9/f6C2reA2WtVPlIimRUTsvK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/e18rF/hyUgIi8Vnn/Xk1CLHilKpVDYtOZHNnrv0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157339&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/157339&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eyDFZ/hyUgQVMMZ9/f6C2reA2WtVPlIimRUTsvK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/e18rF/hyUgIi8Vnn/Xk1CLHilKpVDYtOZHNnrv0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은&lt;span&gt;&amp;nbsp;&lt;/span&gt;CAR_RENTAL_COMPANY_CAR&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블과 자동차 대여 기록 정보를 담은&lt;span&gt;&amp;nbsp;&lt;/span&gt;CAR_RENTAL_COMPANY_RENTAL_HISTORY&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블과 자동차 종류 별 대여 기간 종류 별 할인 정책 정보를 담은&lt;span&gt;&amp;nbsp;&lt;/span&gt;CAR_RENTAL_COMPANY_DISCOUNT_PLAN&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블 입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;CAR_RENTAL_COMPANY_CAR&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블은 아래와 같은 구조로 되어있으며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;CAR_ID,&lt;span&gt;&amp;nbsp;&lt;/span&gt;CAR_TYPE,&lt;span&gt;&amp;nbsp;&lt;/span&gt;DAILY_FEE,&lt;span&gt;&amp;nbsp;&lt;/span&gt;OPTIONS&lt;span&gt;&amp;nbsp;&lt;/span&gt;는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Column name&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Type&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Nullable&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;CAR_ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;CAR_TYPE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;VARCHAR(255)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DAILY_FEE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;OPTIONS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;VARCHAR(255)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진' 이 있습니다. 자동차 옵션 리스트는 콤마(',')로 구분된 키워드 리스트(예: ''열선시트,스마트키,주차감지센서'')로 되어있으며, 키워드 종류는 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 가 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;CAR_RENTAL_COMPANY_RENTAL_HISTORY&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블은 아래와 같은 구조로 되어있으며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;HISTORY_ID,&lt;span&gt;&amp;nbsp;&lt;/span&gt;CAR_ID,&lt;span&gt;&amp;nbsp;&lt;/span&gt;START_DATE,&lt;span&gt;&amp;nbsp;&lt;/span&gt;END_DATE&lt;span&gt;&amp;nbsp;&lt;/span&gt;는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style7&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Column name&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Type&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Nullable&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;HISTORY_ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;CAR_ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;START_DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;END_DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CAR_RENTAL_COMPANY_DISCOUNT_PLAN&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블은 아래와 같은 구조로 되어있으며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PLAN_ID&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_TYPE&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;DURATION_TYPE&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;DISCOUNT_RATE&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;는 각각 요금 할인 정책 ID, 자동차 종류, 대여 기간 종류, 할인율(%)을 나타냅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-style=&quot;style4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Column name&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Type&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;Nullable&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;PLAN_ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;CAR_TYPE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;VARCHAR(255)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DURATION_TYPE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;VARCHAR(255)&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;DISCOUNT_RATE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #000000; text-align: left;&quot;&gt;INTEGER&lt;/span&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #000000; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;FALSE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&amp;nbsp;할인율이 적용되는 대여 기간 종류로는 '7일 이상' (대여 기간이 7일 이상 30일 미만인 경우), '30일 이상' (대여 기간이 30일 이상 90일 미만인 경우), '90일 이상' (대여 기간이 90일 이상인 경우) 이 있습니다. 대여 기간이 7일 미만인 경우 할인정책이 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;CAR_RENTAL_COMPANY_CAR&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_RENTAL_COMPANY_RENTAL_HISTORY&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;CAR_RENTAL_COMPANY_DISCOUNT_PLAN&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;FEE&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;[코드]&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697763639685&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT COMPANY.CAR_ID, COMPANY.CAR_TYPE, ROUND(DAILY_FEE*30*(1-PLAN.DISCOUNT_RATE/100)) AS FEE
FROM CAR_RENTAL_COMPANY_CAR AS COMPANY
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS HISTORY ON COMPANY.CAR_ID = HISTORY.CAR_ID	
INNER JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS PLAN ON COMPANY.CAR_TYPE = PLAN.CAR_TYPE
WHERE COMPANY.CAR_ID NOT IN (SELECT CAR_ID  
                             FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
                             WHERE START_DATE &amp;lt; '2022-12-01' AND END_DATE &amp;gt; '2022-11-01')   
                             AND PLAN.DURATION_TYPE = '30일 이상'
                             AND COMPANY.CAR_TYPE IN ('세단', 'SUV')
                             AND ROUND(DAILY_FEE*30*(1-PLAN.DISCOUNT_RATE/100)) BETWEEN 500000 AND 2000000
GROUP BY COMPANY.CAR_ID
ORDER BY FEE DESC, COMPANY.CAR_TYPE, COMPANY.CAR_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;[고찰]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이번 문제는 3개의 테이블을 JOIN 해야 하고, 주어진 조건이 아주 많은 문제였다.&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. &lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;2022년 11월 1일부터 2022년 11월 30일까지 대여 가능 -&amp;gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;서브쿼리를 사용&lt;/span&gt;하여 시작 날짜가 11월 이거나 종료 날짜가 11월 이전이라면 제외&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;30일간의 대여 금액이 50만원 이상 200만원 미만 -&amp;gt; ROUND 함수를 사용하여 소수점 부분을 제거한 값이 &lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;50만원 이상 200만원 사이에 오도록 BETWEEN 명령어 사용&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;3. &lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;자동차 종류가 '세단' 또는 'SUV' 인 자동차 -&amp;gt; CAR_TYPE이 세단 또는 SUV인 것&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;이 세 조건을 빠짐없이 WHERE 문에 작성해주어야 하고, 서브쿼리를 잘 활용해야 하는 문제여서 어려웠다..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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>
      <category>sql</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/525</guid>
      <comments>https://subin-programming.tistory.com/525#entry525comment</comments>
      <pubDate>Fri, 20 Oct 2023 10:08:20 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_Level2] 디펜스 게임</title>
      <link>https://subin-programming.tistory.com/524</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/142085&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/142085&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697723033171&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/142085&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/caUbdV/hyUgJWu7cj/h3YdztoTCi4qDfKqt1rGyK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/J1ccS/hyUgIcefVa/OfjMk8IvpkgUg99Ds0w8J1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/142085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/142085&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/caUbdV/hyUgJWu7cj/h3YdztoTCi4qDfKqt1rGyK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/J1ccS/hyUgIcefVa/OfjMk8IvpkgUg99Ds0w8J1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;준호는 요즘 디펜스 게임에 푹 빠져 있습니다. 디펜스 게임은 준호가 보유한 병사&lt;span&gt;&amp;nbsp;&lt;/span&gt;n명으로 연속되는 적의 공격을 순서대로 막는 게임입니다. 디펜스 게임은 다음과 같은 규칙으로 진행됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;준호는 처음에 병사&lt;span&gt;&amp;nbsp;&lt;/span&gt;n명을 가지고 있습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;매 라운드마다&lt;span&gt;&amp;nbsp;&lt;/span&gt;enemy[i]마리의 적이 등장합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;남은 병사 중&lt;span&gt;&amp;nbsp;&lt;/span&gt;enemy[i]명 만큼 소모하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;enemy[i]마리의 적을 막을 수 있습니다.
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;예를 들어 남은 병사가 7명이고, 적의 수가 2마리인 경우, 현재 라운드를 막으면 7 - 2 = 5명의 병사가 남습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;남은 병사의 수보다 현재 라운드의 적의 수가 더 많으면 게임이 종료됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;게임에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;무적권이라는 스킬이 있으며,&lt;span&gt;&amp;nbsp;&lt;/span&gt;무적권을 사용하면 병사의 소모없이 한 라운드의 공격을 막을 수 있습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;무적권은 최대&lt;span&gt;&amp;nbsp;&lt;/span&gt;k번 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;준호는&lt;span&gt;&amp;nbsp;&lt;/span&gt;무적권을 적절한 시기에 사용하여 최대한 많은 라운드를 진행하고 싶습니다. 준호가 처음 가지고 있는 병사의 수&lt;span&gt;&amp;nbsp;&lt;/span&gt;n, 사용 가능한 무적권의 횟수&lt;span&gt;&amp;nbsp;&lt;/span&gt;k, 매 라운드마다 공격해오는 적의 수가 순서대로 담긴 정수 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;enemy가 매개변수로 주어집니다. 준호가 몇 라운드까지 막을 수 있는지 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;[제한사항]&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 1,000,000,000&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;k&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 500,000&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;enemy의 길이 &amp;le; 1,000,000&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;enemy[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 1,000,000&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;enemy[i]에는 i + 1 라운드에서 공격해오는 적의 수가 담겨있습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;모든 라운드를 막을 수 있는 경우에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;enemy[i]의 길이를 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;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1697723060064&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public int solution(int n, int k, int[] enemy) {
        int answer = 0;
        
        int power=n;
        int card=k;
        
        // 공격력이 높은 순서대로 정렬
        PriorityQueue&amp;lt;Integer&amp;gt; pq=new PriorityQueue&amp;lt;&amp;gt;(Collections.reverseOrder());
        
        for(int i=0;i&amp;lt;enemy.length;i++){
            pq.add(enemy[i]); // 제거한 병사 수 저장
            power-=enemy[i]; // 공격력 감소
            
            // 공격력을 다 잃었다면
            if(power&amp;lt;0){
                if(card&amp;gt;=1) { // 무적권이 남아 있다면 
                    power+=pq.poll(); // 여태까지 제거한 병사 수 중 가장 큰 값을 다시 더해줌
                    card--;
                }
                else // 남은 무적권이 없는 경우
                    return answer; // 결과 값 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;[고찰]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이번 문제는 우선순위 큐에 여태까지 공격한 병사의 수를 내림차순으로 저장 후 공격력을 다 잃은 경우 가장 큰 값을 큐에서 꺼내 다시 병사 수를 증가시켜 주고 공격권의 수를 감소시키면 되는 문제였다. 우선순위 큐를 써야한다는 아이디어가 떠오르지 않아 다른 사람의 포스팅을 참고했는데 자료구조의 시야를 좀 더 넓혀야겠다.&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/524</guid>
      <comments>https://subin-programming.tistory.com/524#entry524comment</comments>
      <pubDate>Thu, 19 Oct 2023 22:48:53 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_Level1] 성격 유형 검사하기</title>
      <link>https://subin-programming.tistory.com/523</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/118666&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/118666&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697719354877&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/118666&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sMLQI/hyUgLUjJOF/1Hg8bodp8vD4gU2coQ5gjk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/iYXKz/hyUgNdvS6F/mfA56FPoJKyteXfeTTm9u0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/118666&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/118666&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sMLQI/hyUgLUjJOF/1Hg8bodp8vD4gU2coQ5gjk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/iYXKz/hyUgNdvS6F/mfA56FPoJKyteXfeTTm9u0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[문제]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나만의 카카오 성격 유형 검사지를 만들려고 합니다. 성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 97px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지표 번호&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;성격 유형&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 1번 지표 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 라이언형(R), 튜브형(T) &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 1번 지표 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 콘형(C), 프로도형(F) &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 1번 지표 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 제이지형(J), 무지형(M) &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 1번 지표 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 어피치형(A), 네오형(N) &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, &quot;RFMN&quot;이나 &quot;TCMA&quot;와 같은 성격 유형이 있습니다. 검사지에는 총&amp;nbsp;n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매우 비동의&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비동의&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 비동의&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모르겠음&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 동의&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동의&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매우 동의&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 질문은 1가지 지표로 성격 유형 점수를 판단합니다. 예를 들어, 어떤 한 질문에서 4번 지표로 아래 표처럼 점수를 매길 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 선택지 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 성격 유형 점수 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매우 비동의&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 네오형 3점 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비동의&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 네오형 2점 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 비동의&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 네오형 1점 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모르겠음&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 어떤 성격 유형도 점수를 얻지 않습니다 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 동의&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 어피치형 1점 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동의&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 어피치형 2점 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 매우 동의 &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt; 어피치형 3점 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;이때 검사자가 질문에서&amp;nbsp;약간 동의&amp;nbsp;선택지를 선택할 경우 어피치형(A) 성격 유형 1점을 받게 됩니다. 만약 검사자가&amp;nbsp;매우 비동의&amp;nbsp;선택지를 선택할 경우 네오형(N) 성격 유형 3점을 받게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;위 예시처럼 네오형이 비동의, 어피치형이 동의인 경우만 주어지지 않고, 질문에 따라 네오형이 동의, 어피치형이 비동의인 경우도 주어질 수 있습니다. &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 각 선택지는 고정적인 크기의 점수를 가지고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매우 동의나&amp;nbsp;매우 비동의&amp;nbsp;선택지를 선택하면 3점을 얻습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동의나&amp;nbsp;비동의&amp;nbsp;선택지를 선택하면 2점을 얻습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 동의나&amp;nbsp;약간 비동의&amp;nbsp;선택지를 선택하면 1점을 얻습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모르겠음&amp;nbsp;선택지를 선택하면 점수를 얻지 않습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;검사 결과는 모든 질문의 성격 유형 점수를 더하여 각 지표에서 더 높은 점수를 받은 성격 유형이 검사자의 성격 유형이라고 판단합니다. 단, 하나의 지표에서 각 성격 유형 점수가 같으면, 두 성격 유형 중 사전 순으로 빠른 성격 유형을 검사자의 성격 유형이라고 판단합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;질문마다 판단하는 지표를 담은 1차원 문자열 배열&amp;nbsp;survey와 검사자가 각 질문마다 선택한 선택지를 담은 1차원 정수 배열&amp;nbsp;choices가 매개변수로 주어집니다. 이때, 검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return 하도록 solution 함수를 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[제한사항]&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1 &amp;le;&amp;nbsp;survey의 길이 ( =&amp;nbsp;n) &amp;le; 1,000&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;survey의 원소는&amp;nbsp;&quot;RT&quot;, &quot;TR&quot;, &quot;FC&quot;, &quot;CF&quot;, &quot;MJ&quot;, &quot;JM&quot;, &quot;AN&quot;, &quot;NA&quot;&amp;nbsp;중 하나입니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;choices[i]는 검사자가 선택한 i+1번째 질문의 선택지를 의미합니다.&lt;/span&gt; &lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;1 &lt;/span&gt;&amp;le;&amp;nbsp;choices의 원소 &amp;le; 7&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;choices의 길이 = survey의 길이&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;choices&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;뜻&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: center;&quot;&gt; 매우 비동의 &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비동의&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 비동의&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모르겠음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약간 동의&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동의&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매우 동의&lt;/span&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;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1697719632601&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = &quot;&quot;;
        HashMap&amp;lt;Character, Integer&amp;gt; map=new HashMap&amp;lt;&amp;gt;();
        
        for(int i=0;i&amp;lt;survey.length;i++){
            char noagree=survey[i].charAt(0);
            char agree=survey[i].charAt(1);
            int score=choices[i];
            
            // 해당 유형이 처음 나온 경우에는 0으로 초기화, 이미 나온 유형이라면 점수 조정하여 더해주기
            if(score&amp;lt;=3){
                map.put(noagree, map.getOrDefault(noagree,0)+4-score);
            }
            else if(score&amp;gt;=5){
                map.put(agree, map.getOrDefault(agree,0)+score-4);
            }
        }
        
        // 각 유형별 값이 더 큰 값 선택하기, 값이 같은 경우를 대비해 알파벳 순서가 더 앞인 유형에 같음 부등호로 처리
        if(map.getOrDefault('R',0)&amp;gt;=map.getOrDefault('T',0))
            answer+='R';
        else if(map.getOrDefault('R',0)&amp;lt;map.getOrDefault('T',0))
            answer+='T';
        
        if(map.getOrDefault('C',0)&amp;gt;=map.getOrDefault('F',0))
            answer+='C';
        else
            answer+='F';
        
        if(map.getOrDefault('J',0)&amp;gt;=map.getOrDefault('M',0))
            answer+='J';
        else
            answer+='M';
        
        if(map.getOrDefault('A',0)&amp;gt;=map.getOrDefault('N',0))
            answer+='A';
        else
            answer+='N';
        
        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;&amp;nbsp;이번 문제는 HashMap을 사용하여 해결하는 문제였다. 점수에 따라 해당 점수가 비동의 or 동의 인지를 구분하고 알맞은 문자를 map에 삽입해 주면 됐다. 이때 choices의 값 그대로 삽입해 주면 안되고 동의인 경우에는 -4한 값을, 비동의인 경우에는 4에서 choices 값을 빼준 값을 삽입해주어야 한다. 문제는 길었지만 많은 구현은 필요 없는 문제였다.&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>level1</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/523</guid>
      <comments>https://subin-programming.tistory.com/523#entry523comment</comments>
      <pubDate>Thu, 19 Oct 2023 21:50:53 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_Level1] 햄버거 만들기</title>
      <link>https://subin-programming.tistory.com/522</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/133502&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/133502&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697508406926&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/133502&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AnAXr/hyUgNYjsYj/SdccvIDkA27kcuAONBegG1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dy864o/hyUdVqby8B/B619AohxKhE0zBBgLsk290/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/133502&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/133502&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AnAXr/hyUgNYjsYj/SdccvIDkA27kcuAONBegG1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dy864o/hyUdVqby8B/B619AohxKhE0zBBgLsk290/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 &amp;ndash; 야채 &amp;ndash; 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]일 때, 상수는 여섯 번째 재료가 쌓였을 때, 세 번째 재료부터 여섯 번째 재료를 이용하여 햄버거를 포장하고, 아홉 번째 재료가 쌓였을 때, 두 번째 재료와 일곱 번째 재료부터 아홉 번째 재료를 이용하여 햄버거를 포장합니다. 즉, 2개의 햄버거를 포장하게 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;상수에게 전해지는 재료의 정보를 나타내는 정수 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;ingredient가 주어졌을 때, 상수가 포장하는 햄버거의 개수를 return 하도록 solution 함수를 완성하시오.&lt;/p&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;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ingredient의 길이 &amp;le; 1,000,000&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;ingredient의 원소는 1, 2, 3 중 하나의 값이며, 순서대로 빵, 야채, 고기를 의미합니다.&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;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1697508444947&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        Stack&amp;lt;Integer&amp;gt; stack=new Stack&amp;lt;&amp;gt;();
        
        for(int i=0;i&amp;lt;ingredient.length;i++){
            stack.push(ingredient[i]);
            
            if(stack.size()&amp;gt;=4) {
                int size=stack.size();
                
                if(stack.get(size-4)==1&amp;amp;&amp;amp;
                   stack.get(size-3)==2&amp;amp;&amp;amp;
                   stack.get(size-2)==3&amp;amp;&amp;amp;
                   stack.get(size-1)==1) {
                    answer++;
                    
                    stack.pop();stack.pop();stack.pop();stack.pop();
                }
            }
        }
        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;&amp;nbsp;처음에는 ingredient 값들을 문자열로 만들어 substring을 사용하여 해결해봤지만 시간초과가 났다. 정답은 stack을 사용하여 4개의 값들을 비교해주는 방법을 사용해야 하는 것이었다.&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>level1</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/522</guid>
      <comments>https://subin-programming.tistory.com/522#entry522comment</comments>
      <pubDate>Tue, 17 Oct 2023 11:10:52 +0900</pubDate>
    </item>
    <item>
      <title>[HackerRack] Placements</title>
      <link>https://subin-programming.tistory.com/521</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.hackerrank.com/challenges/placements/problem?isFullScreen=true&quot;&gt;https://www.hackerrank.com/challenges/placements/problem?isFullScreen=true&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1697502738622&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;Placements | HackerRank&quot; data-og-description=&quot;Write a query to output the names of those students whose best friends got offered a higher salary than them.&quot; data-og-host=&quot;www.hackerrank.com&quot; data-og-source-url=&quot;https://www.hackerrank.com/challenges/placements/problem?isFullScreen=true&quot; data-og-url=&quot;https://www.hackerrank.com/challenges/placements/problem&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fPE9D/hyUgKUN4TZ/7b0eClDpNxXySUEq3ktKr0/img.jpg?width=1200&amp;amp;height=640&amp;amp;face=706_91_833_229&quot;&gt;&lt;a href=&quot;https://www.hackerrank.com/challenges/placements/problem?isFullScreen=true&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.hackerrank.com/challenges/placements/problem?isFullScreen=true&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fPE9D/hyUgKUN4TZ/7b0eClDpNxXySUEq3ktKr0/img.jpg?width=1200&amp;amp;height=640&amp;amp;face=706_91_833_229');&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;Placements | HackerRank&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Write a query to output the names of those students whose best friends got offered a higher salary than them.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.hackerrank.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1697502741550&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select sub.name
from (select s.id, s.name, f.friend_id, p.salary
     from students as s
     inner join friends as f on s.id = f.id
     inner join packages as p on s.id = p.id) as sub
inner join packages as p on sub.friend_id = p.id
where sub.salary &amp;lt; p.salary
order by p.salary;&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;&amp;nbsp;이번 문제는 3개의 테이블을 join하는 문제였다. 2개 테이블 join은 해봤지만 3개 부터는 처음이라 다른 사람의 코드를 참고하였다. 우선 이 문제의 핵심은 (내 id, 내 이름, 친구 id, 내 연봉)으로 이루어진 테이블 sub를 구성하는 것이다. 이 부분이 첫 번째 from 뒤에 3개의 테이블을 join하면 만들어지는 결과물이다. 그리고 sub 테이블과 packages 테이블의 친구 id가 같은 컬럼만 join 하면 각 사람의 절친한 친구의 연봉이 나온다. 이 값은 나의 연봉과 비교해서 큰 컬럼만 출력해주면 되는 문제였다. 너무 어렵다..&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL 문제</category>
      <category>HackerRank</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/521</guid>
      <comments>https://subin-programming.tistory.com/521#entry521comment</comments>
      <pubDate>Tue, 17 Oct 2023 09:36:17 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스_Level3] 입국심사</title>
      <link>https://subin-programming.tistory.com/520</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43238&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/43238&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697448736601&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;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43238&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVsvh9/hyUd0SaBqc/KFEP5Oz6wST0eAOajDzz21/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ZmkZi/hyUdLU1yg8/qtL405ZOQTkqFqbkGPSKYK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43238&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43238&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVsvh9/hyUd0SaBqc/KFEP5Oz6wST0eAOajDzz21/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ZmkZi/hyUdLU1yg8/qtL405ZOQTkqFqbkGPSKYK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[문제]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; 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;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;입국심사를 기다리는 사람은 1명 이상 1,000,000,000명 이하입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;각 심사관이 한 명을 심사하는데 걸리는 시간은 1분 이상 1,000,000,000분 이하입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;심사관은 1명 이상 100,000명 이하입니다.&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;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1697448760725&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public long solution(int n, int[] times) {
        long answer = 0;
        
        Arrays.sort(times); 
        
        long start=0;
        long end=(long)n*(times[times.length-1]); // 최대로 걸리는 시간
        
        while(start&amp;lt;=end){
            long mid=(start+end)/2; // 소요 시간
            long people=0;
            
            // 각 사람마다 처리한 사람의 수 구하기
            for(int i=0;i&amp;lt;times.length;i++)
                people+=mid/times[i];
            
            // 처리해야 하는 n보다 더 많은 사람을 심사했다면 값 저장하고 시간 줄이기
            if(people&amp;gt;=n){
                answer=mid;
                end=mid-1;
            }
            else // n명 심사를 못했다면 시간 늘리기
                start=mid+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;&amp;nbsp;이번 문제는 제한사항의 범위가 너무 커 이분탐색을 사용해야 함을 알 수 있었다. 이때 걸리는 시간을 구해야 하므로 탐색 기준을 시간으로 잡고 가장 적게 걸리는 시가 0을 start로, 최대로 걸릴수 있는 시간(사람수 * 심사가 가장 오래 걸리는 사람의 시간)을 end로 잡고 그 사이를 이분탐색 해주면 된다.&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>level3</category>
      <category>이분탐색</category>
      <category>프로그래머스</category>
      <author>빙수빈수</author>
      <guid isPermaLink="true">https://subin-programming.tistory.com/520</guid>
      <comments>https://subin-programming.tistory.com/520#entry520comment</comments>
      <pubDate>Mon, 16 Oct 2023 18:35:25 +0900</pubDate>
    </item>
  </channel>
</rss>