<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>96glory</title>
    <link>https://96glory.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 9 Jul 2026 23:31:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>_영광</managingEditor>
    <image>
      <title>96glory</title>
      <url>https://tistory1.daumcdn.net/tistory/4019982/attach/a77b920bb0714536a1dbe3ea324a63b2</url>
      <link>https://96glory.tistory.com</link>
    </image>
    <item>
      <title>201009 쿠팡 코딩테스트 후기</title>
      <link>https://96glory.tistory.com/73</link>
      <description>&lt;h1&gt;201009 쿠팡 코딩테스트 후기&lt;/h1&gt;
&lt;h3&gt;coding test&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;4문제에 180분.&lt;/li&gt;
&lt;li&gt;수학, 시간, &lt;code&gt;map&lt;/code&gt;, 그래프 순회 등 다양한 분야에서 출제되었다.&lt;/li&gt;
&lt;li&gt;1, 3, 4번 문제는 꽤 쉬웠지만, 2번 문제는 많은 시간을 요했다. 코테 당락은 2번에서 결정날 듯 하다. (개인적인 난이도 : 1 &amp;lt; 3 &amp;lt; 4 &amp;lt; 2)&lt;ul&gt;
&lt;li&gt;보통 난이도 순으로 출제되는 코딩테스트와는 조금 달랐다. 2번 문제를 읽고, &amp;quot;이 문제는 빨리 못풀겠구나.&amp;quot; 하고 바로 뒷문제로 넘어가서 다행이였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;테스트 케이스가 주어지지 않아서 내 코드가 맞는 지 틀린 지 확인할 수 없었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;총평&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2020 하반기에 네이버, 라인, 쿠팡, 카카오 코테를 봤는데, 난이도 순은 &lt;code&gt;카카오 &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 라인 &amp;gt;&amp;gt;&amp;gt; 쿠팡 &amp;gt; 네이버&lt;/code&gt; 이 순서인 것 같다.&lt;/li&gt;
&lt;li&gt;사실 코딩 테스트가 어느 정도 할만 하다는 것은 &amp;quot;피시험자가 어느 정도 알고리즘을 알고있구나.&amp;quot; 를 판단하기 위함인데, 쿠팡 면접이 얼마나 극악일지 상상이 안간다. 쿠팡 면접은 단 한 번 보던데, 라이브 코딩에 인성 면접에 직무 면접에... 마구마구 버무리지 않을까 싶다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/after-test</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/73</guid>
      <comments>https://96glory.tistory.com/73#entry73comment</comments>
      <pubDate>Sat, 10 Oct 2020 10:39:09 +0900</pubDate>
    </item>
    <item>
      <title>200927 네이버 코딩 테스트 후기</title>
      <link>https://96glory.tistory.com/72</link>
      <description>&lt;h1&gt;200927 네이버 코딩 테스트 후기&lt;/h1&gt;
&lt;h3&gt;coding test&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;3문제에 2시간.&lt;/li&gt;
&lt;li&gt;문제는 모두 무난했다. 앞의 두 문제는 40분만에 해결하고 3번째 문제에 1시간 정도 투자한 듯.&lt;/li&gt;
&lt;li&gt;필자는 한 문제는 파이썬, 두 문제는 C++로 풀었다.&lt;/li&gt;
&lt;li&gt;문제가 어려운 편은 아니였고, 그냥 시험 지원자에게 어느 정도 알고리즘 공부를 했구나를 판단하려는 의도였던 것 같다.&lt;/li&gt;
&lt;li&gt;테스트 케이스가 공개되지 않아서 내 코드가 맞는지 확인하는 방법은 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;총평&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;문자열 문제는 파이썬으로 풀자.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/after-test</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/72</guid>
      <comments>https://96glory.tistory.com/72#entry72comment</comments>
      <pubDate>Sun, 27 Sep 2020 22:38:15 +0900</pubDate>
    </item>
    <item>
      <title>200926 카카오 2차 코딩테스트 후기</title>
      <link>https://96glory.tistory.com/71</link>
      <description>&lt;h1&gt;200926 카카오 2차 코딩테스트 후기&lt;/h1&gt;
&lt;h3&gt;이전과는 다른 코딩 테스트&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;카카오가 인재 영입에 매우 힘쓴다는 것을 알게 되었다.&lt;/li&gt;
&lt;li&gt;문제가 너무 고급지다. 못 푼 내가 죄를 짓는 느낌.&lt;/li&gt;
&lt;li&gt;문제 형식은 다들 구글링을 통해 알 수 있듯이, REST API로부터 값을 가져와서, 일정한 처리 후 REST API로 값을 던져주는 것이다. 아래 링크는 2019 카카오 블라인드 공채 2차 문제 해설이다. 한 번 읽어보면 다음 코테 때 도움이 될 것이다.
&lt;ul&gt;
&lt;li&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://tech.kakao.com/2018/10/23/kakao-blind-recruitment-round-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tech.kakao.com/2018/10/23/kakao-blind-recruitment-round-2/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1601126727412&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;2019 카카오 블라인드 공채 2차 오프라인 코딩 테스트 문제 해설&quot; data-og-description=&quot;지난 10월 6일(토) 2019 블라인드 공채 오프라인 2차 코딩테스트가 진행되었습니다. 작년에는 8시간 동안 온라인으로 진행한 것과는 달리 오프라인으로 5시간 동안 치러졌는데요, 어떤 의도로 출제&quot; data-og-host=&quot;tech.kakao.com&quot; data-og-source-url=&quot;https://tech.kakao.com/2018/10/23/kakao-blind-recruitment-round-2/&quot; data-og-url=&quot;https://tech.kakao.com/2018/10/23/kakao-blind-recruitment-round-2/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5Fpbw/hyHE3lpECI/h8nKHnuqpcBhW771SMMBx1/img.png?width=1140&amp;amp;height=474&amp;amp;face=0_0_1140_474,https://scrap.kakaocdn.net/dn/bSiyWX/hyHDjKcxHE/lewaGJRRKzWwt2EpqLQxa0/img.png?width=1140&amp;amp;height=474&amp;amp;face=0_0_1140_474,https://scrap.kakaocdn.net/dn/JDMUX/hyHE36MJN5/CoY4iglRJ5xSU3UDQRv8B1/img.jpg?width=1126&amp;amp;height=974&amp;amp;face=0_0_1126_974&quot;&gt;&lt;a href=&quot;https://tech.kakao.com/2018/10/23/kakao-blind-recruitment-round-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://tech.kakao.com/2018/10/23/kakao-blind-recruitment-round-2/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5Fpbw/hyHE3lpECI/h8nKHnuqpcBhW771SMMBx1/img.png?width=1140&amp;amp;height=474&amp;amp;face=0_0_1140_474,https://scrap.kakaocdn.net/dn/bSiyWX/hyHDjKcxHE/lewaGJRRKzWwt2EpqLQxa0/img.png?width=1140&amp;amp;height=474&amp;amp;face=0_0_1140_474,https://scrap.kakaocdn.net/dn/JDMUX/hyHE36MJN5/CoY4iglRJ5xSU3UDQRv8B1/img.jpg?width=1126&amp;amp;height=974&amp;amp;face=0_0_1126_974');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;2019 카카오 블라인드 공채 2차 오프라인 코딩 테스트 문제 해설&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;지난 10월 6일(토) 2019 블라인드 공채 오프라인 2차 코딩테스트가 진행되었습니다. 작년에는 8시간 동안 온라인으로 진행한 것과는 달리 오프라인으로 5시간 동안 치러졌는데요, 어떤 의도로 출제&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;tech.kakao.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;미리 카카오 측에서 안내를 해주지만, JSON Pharser가 필요하다.
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://qgqg264.tistory.com/49?category=797264&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;qjqj264.tistory.com/49?category=797264&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://gosmcom.tistory.com/130&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gosmcom.tistory.com/130&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;아래 두 게시글을 통해 배울 수 있었다. 블로그 주인님들께 감사드립니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1601126987774&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;JSON ? JSON Parsing?&quot; data-og-description=&quot;웹 프로그래밍을 공부하면서 javascript를 처음 접했고, 궁금하게 있어서 구글링 할 때 마다 짝궁 처럼 보이던 JSON들을 무시하면서 살았는데... 공부해야 할 때가 왔다 흑흑 (카카오..) 암튼암튼 #1 JS&quot; data-og-host=&quot;qgqg264.tistory.com&quot; data-og-source-url=&quot;https://qgqg264.tistory.com/49?category=797264&quot; data-og-url=&quot;https://qgqg264.tistory.com/49&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jiXS5/hyHDj4uhAa/twDkr8wO8d7N14770IKKUk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Esozr/hyHDqvMEBB/Wj2QlOmFGSKg6hPTUmj63k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Wt7y6/hyHDm7Yg9P/6aLBRdQwlkxk9gtHB8T8L1/img.png?width=750&amp;amp;height=504&amp;amp;face=0_0_750_504&quot;&gt;&lt;a href=&quot;https://qgqg264.tistory.com/49?category=797264&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://qgqg264.tistory.com/49?category=797264&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jiXS5/hyHDj4uhAa/twDkr8wO8d7N14770IKKUk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Esozr/hyHDqvMEBB/Wj2QlOmFGSKg6hPTUmj63k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Wt7y6/hyHDm7Yg9P/6aLBRdQwlkxk9gtHB8T8L1/img.png?width=750&amp;amp;height=504&amp;amp;face=0_0_750_504');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;JSON ? JSON Parsing?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;웹 프로그래밍을 공부하면서 javascript를 처음 접했고, 궁금하게 있어서 구글링 할 때 마다 짝궁 처럼 보이던 JSON들을 무시하면서 살았는데... 공부해야 할 때가 왔다 흑흑 (카카오..) 암튼암튼 #1 JS&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;qgqg264.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1601126864680&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;6. requests 모듈 - REST API 사용법, curl을 python requests로 변환방법&quot; data-og-description=&quot;개요 파이썬 공식에서도 인정한 인간친화적인 웹 요청 모듈인 requests의 사용법을 터득해, 웹 요청-응답 과정을 이해하고, REST API를 원활하게 사용해보자. requests 모듈 문서 requests 유저 가이드 requ&quot; data-og-host=&quot;gosmcom.tistory.com&quot; data-og-source-url=&quot;https://gosmcom.tistory.com/130&quot; data-og-url=&quot;https://gosmcom.tistory.com/130&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwBu2R/hyHFariODF/iXUNUouv8fhCIquomCcUhk/img.png?width=800&amp;amp;height=223&amp;amp;face=0_0_800_223,https://scrap.kakaocdn.net/dn/d2uC7G/hyHDjDpAj2/X24GV4s9poI6o4B9AjsYK1/img.png?width=800&amp;amp;height=223&amp;amp;face=0_0_800_223,https://scrap.kakaocdn.net/dn/bzbnbB/hyHDsNUBbf/HpPk0CyomuHKbMl7NKoDl1/img.png?width=1490&amp;amp;height=417&amp;amp;face=0_0_1490_417&quot;&gt;&lt;a href=&quot;https://gosmcom.tistory.com/130&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gosmcom.tistory.com/130&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwBu2R/hyHFariODF/iXUNUouv8fhCIquomCcUhk/img.png?width=800&amp;amp;height=223&amp;amp;face=0_0_800_223,https://scrap.kakaocdn.net/dn/d2uC7G/hyHDjDpAj2/X24GV4s9poI6o4B9AjsYK1/img.png?width=800&amp;amp;height=223&amp;amp;face=0_0_800_223,https://scrap.kakaocdn.net/dn/bzbnbB/hyHDsNUBbf/HpPk0CyomuHKbMl7NKoDl1/img.png?width=1490&amp;amp;height=417&amp;amp;face=0_0_1490_417');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;6. requests 모듈 - REST API 사용법, curl을 python requests로 변환방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;개요 파이썬 공식에서도 인정한 인간친화적인 웹 요청 모듈인 requests의 사용법을 터득해, 웹 요청-응답 과정을 이해하고, REST API를 원활하게 사용해보자. requests 모듈 문서 requests 유저 가이드 requ&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;gosmcom.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필자는 원래 C++를 이용해서 알고리즘을 풀었지만, JSON Pharser 때문에 파이썬을 급하게 배웠어야 했다. 구글링을 통해 C++로는 REST API와 JSON Pharsing에 시간을 너무 많이 투자한다는 블로그 글들이 보였다. 점프 투 파이썬에서 6시간 동안 1회독하고, 시험 직전에 리스트, 딕셔너리 등 주요 함수들을 한번 훑어보았다. 아래 기본서로 아마도 2차 코테 합격에는 문제 없었을 것이다.
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://wikidocs.net/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;wikidocs.net/5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1601127143520&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;wikidocs&quot; data-og-title=&quot;위키독스&quot; data-og-description=&quot;온라인 책을 제작 공유하는 플랫폼 서비스&quot; data-og-host=&quot;wikidocs.net&quot; data-og-source-url=&quot;https://wikidocs.net/5&quot; data-og-url=&quot;https://wikidocs.net&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bbETJ2/hyHDx2JnQk/pefDsLgV3s1lWrDxuLZOM1/img.png?width=99&amp;amp;height=129&amp;amp;face=0_0_99_129&quot;&gt;&lt;a href=&quot;https://wikidocs.net/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wikidocs.net/5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bbETJ2/hyHDx2JnQk/pefDsLgV3s1lWrDxuLZOM1/img.png?width=99&amp;amp;height=129&amp;amp;face=0_0_99_129');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;위키독스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;온라인 책을 제작 공유하는 플랫폼 서비스&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;wikidocs.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파이썬에 서툴러서 문제를 못 푼 것이 아니라, 내가 부족해서 문제를 풀지 못했다. 카카오는 정말 대단한 사람들만 입사하나보다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;총평&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;알고리즘 배울 때 파이썬으로 할 껄.&lt;/li&gt;
&lt;li&gt;카카오는 인재 영입에도 힘을 쓴다.&lt;/li&gt;
&lt;li&gt;카카오에는 보통 사람들이 들어가는 것이 아니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/after-test</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/71</guid>
      <comments>https://96glory.tistory.com/71#entry71comment</comments>
      <pubDate>Sat, 26 Sep 2020 22:36:21 +0900</pubDate>
    </item>
    <item>
      <title>200925 엔테크서비스 인턴 코딩테스트 후기</title>
      <link>https://96glory.tistory.com/70</link>
      <description>&lt;h1&gt;200925 엔테크서비스 인턴 코딩테스트 후기&lt;/h1&gt;
&lt;h3&gt;coding test&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;120분에 알고리즘 4문제, SQL 1문제가 출제되었다.&lt;/li&gt;
&lt;li&gt;SQL&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://programmers.co.kr/learn/challenges?tab=sql_practice_kit&quot;&gt;프로그래머스 SQL 고득점 KIT&lt;/a&gt; 를 풀어보았다면 무난히 풀 수 있었다.&lt;/li&gt;
&lt;li&gt;요즘 SQL을 물어보는 코테도 늘어나고 있는데, 대비를 해두면 좋을 것 같다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;프로그래밍&lt;ul&gt;
&lt;li&gt;앞 3문제는 쉽고, 뒤 1문제가 어려웠는데, 어려운 문제는 트리 관련 문제였다.&lt;/li&gt;
&lt;li&gt;아쉽게도 어려운 문제는 풀지 못했다. 트리 탐색에 관한 문제는 풀어보지 않았기 때문.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;총평&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;트리 문제에 도전하자&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/after-test</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/70</guid>
      <comments>https://96glory.tistory.com/70#entry70comment</comments>
      <pubDate>Fri, 25 Sep 2020 12:16:38 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 SQL 고득점 KIT 답 모음</title>
      <link>https://96glory.tistory.com/69</link>
      <description>&lt;h1&gt;프로그래머스 SQL 고득점 KIT&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.naver.com/good_ray/221731876211&quot;&gt;출처&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;SELECT&lt;/h2&gt;
&lt;h3&gt;59034 - 모든 레코드 조회하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59034&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59035 - 역순 정렬하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59035&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59036 - 아픈 동물 찾기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59036&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION=&quot;Sick&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59037 - 어린 동물 찾기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59037&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION!=&quot;Aged&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59403 - 동물의 아이디와 이름&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59403&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME FROM ANIMAL_INS&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59404 - 여러 기준으로 정렬하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59404&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59405 - 상위 n개 레코드&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59405&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME ASC LIMIT 1&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;SUM, MAX, MIN&lt;/h2&gt;
&lt;h3&gt;59415 - 최댓값 구하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59415&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59038 - 최솟값 구하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59038&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT MIN(DATETIME) AS 시간 FROM ANIMAL_INS&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59406 - 동물 수 구하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59406&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT COUNT(*) AS 동물수 FROM ANIMAL_INS&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59408 - 중복 제거하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59408&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT COUNT(DISTINCT NAME) AS 동물수 FROM ANIMAL_INS WHERE NAME IS NOT NULL&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;GROUP BY&lt;/h2&gt;
&lt;h3&gt;59040 - 고양이와 개는 몇 마리 있을까&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59040&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;SELECT ANIMAL_TYPE, COUNT(*) AS 'count' FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE ASC &lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59041 - 동명 동물 수 찾기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59041&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT NAME, COUNT(*) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) &amp;gt;= 2 ORDER BY NAME&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59412 - 입양 시각 구하기 (1)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59412&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT HOUR(DATETIME) AS 'HOUR', COUNT(*) AS 'COUNT'
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR &amp;gt;= 9 AND HOUR &amp;lt;= 19
ORDER BY HOUR(DATETIME) ASC&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59413 - 입양 시각 구하기 (2)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59413&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SET @hour := -1;

SELECT (@hour := @hour + 1) as HOUR,
    (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour &amp;lt; 23&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;IS NULL&lt;/h2&gt;
&lt;h3&gt;59039 - 이름이 없는 동물의 이야기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59039&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59407 - 이름이 있는 동물의 아이디&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59407&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59410 - NULL 처리하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59410&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_TYPE, IF(NAME IS NULL, 'No name', NAME) AS NAME, SEX_UPON_INTAKE 
FROM ANIMAL_INS&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;JOIN&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BR3Tb/btqJxGKwIYG/zMvXPauZY05XwIoIkDW3h0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BR3Tb/btqJxGKwIYG/zMvXPauZY05XwIoIkDW3h0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BR3Tb/btqJxGKwIYG/zMvXPauZY05XwIoIkDW3h0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBR3Tb%2FbtqJxGKwIYG%2FzMvXPauZY05XwIoIkDW3h0%2Fimg.jpg&quot; width=&quot;100%&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3&gt;59042 - 없어진 기록 찾기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59042&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;SELECT b.ANIMAL_ID, b.NAME
FROM ANIMAL_INS a RIGHT JOIN ANIMAL_OUTS b on a.ANIMAL_ID = b.ANIMAL_ID
WHERE a.ANIMAL_ID IS NULL
ORDER BY b.ANIMAL_ID&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59043 - 있었는데요 없었습니다&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59043&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;SELECT b.ANIMAL_ID, b.NAME
FROM ANIMAL_INS a RIGHT JOIN ANIMAL_OUTS b on a.ANIMAL_ID = b.ANIMAL_ID
WHERE a.ANIMAL_ID IS NOT NULL AND a.DATETIME &amp;gt; b.DATETIME
ORDER BY a.DATETIME&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59044 - 오랜 기간 보호한 동물(1)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59044&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT ANIMAL_INS.NAME, ANIMAL_INS.DATETIME
FROM ANIMAL_INS
    LEFT OUTER JOIN ANIMAL_OUTS 
    ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_OUTS.ANIMAL_ID IS NULL
ORDER BY ANIMAL_INS.DATETIME ASC
LIMIT 3&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59045 - 보호소에서 중성화한 동물&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59045&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.ANIMAL_TYPE, ANIMAL_INS.NAME
FROM ANIMAL_INS
    LEFT OUTER JOIN ANIMAL_OUTS 
    ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_INS.SEX_UPON_INTAKE != ANIMAL_OUTS.SEX_UPON_OUTCOME&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;String, Date&lt;/h2&gt;
&lt;h3&gt;59046 루시와 엘라 찾기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59046&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME = 'Lucy' OR NAME = 'Ella' OR NAME = 'Pickle' OR NAME = 'Rogan' OR NAME = 'Sabrina' OR NAME = 'Mitty'&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS 
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59047 - 이름에 el이 들어가는 동물 찾기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59047&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE UPPER(NAME) LIKE &quot;%EL%&quot; AND ANIMAL_TYPE = &quot;Dog&quot;
ORDER BY NAME ASC&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59409 - 중성화 여부 파악하기&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59409&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME,
    IF(SEX_UPON_INTAKE LIKE &quot;%Neutered%&quot; OR SEX_UPON_INTAKE LIKE &quot;%Spayed%&quot;, 'O', 'X') AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59411 - 오랜 기간 보호한 동물 (2)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59411&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.NAME
FROM ANIMAL_INS, ANIMAL_OUTS
WHERE ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
ORDER BY ANIMAL_OUTS.DATETIME - ANIMAL_INS.DATETIME DESC
LIMIT 2&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;59414 - DATETIME에서 DATE로 형 변환&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/59414&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;기타 유용한 함수들&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DATEDIFF(날짜1, 날짜2)&lt;/code&gt; : 날짜1과 날짜2의 날짜 차이를 구할 수 있음&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ABS(숫자)&lt;/code&gt; : 숫자의 절댓값&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DATE_FORMAT(날짜, '%Y-%m-%d %t')&lt;/code&gt; : 날짜의 형식을 바꿉니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IF(조건, 값1, 값2)&lt;/code&gt; : 조건이 참이면 값1, 거짓이면 값2&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/programmers</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/69</guid>
      <comments>https://96glory.tistory.com/69#entry69comment</comments>
      <pubDate>Thu, 24 Sep 2020 21:32:15 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 42890 - 후보키 (c++)</title>
      <link>https://96glory.tistory.com/68</link>
      <description>&lt;h1&gt;프로그래머스 42890 - 후보키&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/42890&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;생각 및 접근&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DB의 개념인 후보키의 갯수를 구하는 문제였다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;내 수도 코드는 이렇다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;조합(dfs)을 통해서 칼럼의 갯수를 &lt;code&gt;1&lt;/code&gt;부터 &lt;code&gt;칼럼의 갯수&lt;/code&gt;까지 칼럼의 인덱스를 고른다.&lt;/li&gt;
&lt;li&gt;인덱스를 다 골랐다면, 기존에 후보키였던 것을 포함하는지 검사한다.&lt;ul&gt;
&lt;li&gt;기존에 후보키였던 것을 포함한다면, 지금 검사하는 칼럼의 인덱스는 최소성을 만족하지 못하므로 &lt;code&gt;return&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;기존에 후보키였던 것을 포함하지 않는다면,&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; relation&lt;/code&gt;의 모든 레코드에 대해 칼럼의 인덱스의 값들을 추출해서, 한 &lt;code&gt;vector&amp;lt;string&amp;gt;&lt;/code&gt;으로 잡는다. 잡은 &lt;code&gt;vector&amp;lt;string&amp;gt;&lt;/code&gt;을 &lt;code&gt;vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt;&lt;/code&gt;에 넣는다.&lt;/li&gt;
&lt;li&gt;모두 넣고, 일일히 대조해서 처음부터 끝까지 일치하는지 확인한다.&lt;ul&gt;
&lt;li&gt;일치하는게 있다면, 후보키가 되지 못하므로 &lt;code&gt;return&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;일치하는게 없다면, 후보키가 될 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;조금 말이 어려운데, 코드를 보면서 이해해보자.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;아래 코드는 후보키의 가짓수를 토대로 dfs를 돌리는 함수다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;  vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; rel;

  // answer는 후보키의 vector를 저장한다.
  vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; answer;
  int col, row, arr[21];

  int solution(vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; relation) {
      row = relation.size();
      col = relation[0].size();
      rel = relation;

      // i는 후보키의 가짓수
      for(int i = 1; i &amp;lt;= col; i++){
          // arr은 칼럼의 인덱스를 저장할 예정.
          memset(arr, 0, sizeof(arr));
          dfs(i, 0, -1);
      }

      return answer.size();
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;아래 코드는 조합을 시행하는 dfs다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;  // 벡터 a와 벡터 b가 모두 같은 원소를 가지고 있는지 판단하는 함수다.
  bool vector_is_equal(vector&amp;lt;string&amp;gt; a, vector&amp;lt;string&amp;gt; b){
      int vec_size = a.size();
      for(int i = 0; i &amp;lt; vec_size; i++){
          if(a[i] != b[i])    return false;
      }
      return true;
  }

  // goal : 나는 인덱스를 goal개 만큼 집기로 했다.
  // cnt : 나는 인덱스를 cnt개 만큼 집었다.
  // idx : 나는 인덱스를 idx까지 골랐었다.
  void dfs(int goal, int cnt, int idx){
      // 조합을 통해 모두 집었다면,
      if(goal == cnt){

          // 기존에 찾아놓은 후보키를 포함하고 있는 지 검사
          for(auto i : answer){
              int ans_idx = 0;
              for(int j = 0; j &amp;lt; goal; j++){
                  if(i[ans_idx] == arr[j])    ans_idx++;
                  if(ans_idx &amp;gt;= i.size())     break;
              }
              if(ans_idx &amp;gt;= i.size()) return;
          }

          // 후보키가 될 수 있는지 검사할 예정
          // vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; relation에서 골라놓은 인덱스를 저장해놓은 arr에 존재하는 인덱스대로 하나의 tmp 벡터를 만들고, 이를 cmp 벡터에 넣어준다.
          vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; cmp;
          for(int i = 0; i &amp;lt; row; i++){
              vector&amp;lt;string&amp;gt; tmp;
              for(int j = 0; j &amp;lt; goal; j++)
                  tmp.push_back(rel[i][arr[j]]);
              cmp.push_back(tmp);
          }

          // 비교하는 과정
          for(int i = 0; i &amp;lt; row; i++){
              for(int j = i + 1; j &amp;lt; row; j++){
                  // 벡터가 하나라도 같은 게 있으면 후보키가 되지 못함
                  if(vector_is_equal(cmp[i], cmp[j]))  return;
              }
          }

          // 벡터가 모두 다르므로 후보키가 될 수 있다.
          vector&amp;lt;int&amp;gt; answer_temp;
          for(int i = 0; i &amp;lt; goal; i++)
              answer_temp.push_back(arr[i]);
          answer.push_back(answer_temp);
      }

      // 다음 조합 진행
      else {
          for(int i = idx + 1; i &amp;lt; col; i++){
              arr[cnt] = i;
              dfs(goal, cnt + 1, i);
          }
      }
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;코드&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;

vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; rel;
vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; answer;
int col, row, arr[21];

bool vector_is_equal(vector&amp;lt;string&amp;gt; a, vector&amp;lt;string&amp;gt; b){
    int vec_size = a.size();
    for(int i = 0; i &amp;lt; vec_size; i++){
        if(a[i] != b[i])    return false;
    }
    return true;
}

void dfs(int goal, int cnt, int idx){
    if(goal == cnt){
        for(auto i : answer){
            int ans_idx = 0;
            for(int j = 0; j &amp;lt; goal; j++){
                if(i[ans_idx] == arr[j])    ans_idx++;
                if(ans_idx &amp;gt;= i.size())     break;
            }
            if(ans_idx &amp;gt;= i.size()) return;
        }

        vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; cmp;
        for(int i = 0; i &amp;lt; row; i++){
            vector&amp;lt;string&amp;gt; tmp;
            for(int j = 0; j &amp;lt; goal; j++)
                tmp.push_back(rel[i][arr[j]]);
            cmp.push_back(tmp);
        }

        for(int i = 0; i &amp;lt; row; i++){
            for(int j = i + 1; j &amp;lt; row; j++){
                if(vector_is_equal(cmp[i], cmp[j]))  return;
            }
        }

        vector&amp;lt;int&amp;gt; answer_temp;
        for(int i = 0; i &amp;lt; goal; i++)
            answer_temp.push_back(arr[i]);
        answer.push_back(answer_temp);
    }
    else {
        for(int i = idx + 1; i &amp;lt; col; i++){
            arr[cnt] = i;
            dfs(goal, cnt + 1, i);
        }
    }
}

int solution(vector&amp;lt;vector&amp;lt;string&amp;gt;&amp;gt; relation) {
    row = relation.size();
    col = relation[0].size();
    rel = relation;

    for(int i = 1; i &amp;lt;= col; i++){
        memset(arr, 0, sizeof(arr));
        dfs(i, 0, -1);
    }

    return answer.size();
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;채점 결과&lt;/h3&gt;</description>
      <category>Coding Test/programmers</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/68</guid>
      <comments>https://96glory.tistory.com/68#entry68comment</comments>
      <pubDate>Fri, 18 Sep 2020 21:55:35 +0900</pubDate>
    </item>
    <item>
      <title>백준 11060 - 점프 점프 (c++)</title>
      <link>https://96glory.tistory.com/67</link>
      <description>&lt;h1&gt;백준 11060 - 점프 점프&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11060&quot;&gt;문제 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;생각 및 접근&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;각 칸에 오른쪽으로 얼마나 갈 수 있는지 적혀있고, 그 규칙대로 마지막 칸까지 도달했을 때, 최소 몇 번 점프해야 갈 수 있는지 구하는 문제다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;int dp[i]&lt;/code&gt;&lt;ul&gt;
&lt;li&gt;i번째 칸에 왔을 때, 최소 몇 번 점프해서 왔는지 기억하는 배열&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;초기 dp는 int의 최댓값으로 잡는다. 점프 수의 최솟값을 구하기 위함이다.&lt;/li&gt;
&lt;li&gt;dp 과정&lt;pre&gt;&lt;code&gt;  // 맨 첫 칸은 점프를 하지 않았으므로 0
  dp[1] = 0;
  for(int i = 1; i &amp;lt; n; i++){
      // j : i번째 칸에서 점프해서 갈 수 있는 칸(j)에 대해서 최소 점프 수 검사.
      for(int j = i + 1; j &amp;lt;= min(arr[i] + i, n); j++){
          dp[j] = min(dp[i] + 1, dp[j]);
      }
  }&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;코드&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;

int n, arr[1001], dp[1001];

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);  cout.tie(NULL);

    cin &amp;gt;&amp;gt; n;
    for(int i = 1; i &amp;lt;= n; i++){
        cin &amp;gt;&amp;gt; arr[i];
        dp[i] = 2147000000;
    }

    dp[1] = 0;
    for(int i = 1; i &amp;lt; n; i++){
        for(int j = i + 1; j &amp;lt;= min(arr[i] + i, n); j++){
            dp[j] = min(dp[i] + 1, dp[j]);
        }
    }

    if(dp[n] == 2147000000) cout &amp;lt;&amp;lt; -1;
    else cout &amp;lt;&amp;lt; dp[n];
}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;채점&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bjvet/btqIGl25gVj/BNPAVPWrEHKzkKnrOMzZO1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bjvet/btqIGl25gVj/BNPAVPWrEHKzkKnrOMzZO1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bjvet/btqIGl25gVj/BNPAVPWrEHKzkKnrOMzZO1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBjvet%2FbtqIGl25gVj%2FBNPAVPWrEHKzkKnrOMzZO1%2Fimg.jpg&quot; width=&quot;100%&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Coding Test/acmicpc</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/67</guid>
      <comments>https://96glory.tistory.com/67#entry67comment</comments>
      <pubDate>Tue, 15 Sep 2020 22:31:43 +0900</pubDate>
    </item>
    <item>
      <title>200913 LG CNS 코딩테스트 후기</title>
      <link>https://96glory.tistory.com/66</link>
      <description>&lt;h1&gt;200913 LG CNS 코딩테스트 후기&lt;/h1&gt;
&lt;h3&gt;코딩 테스트&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;210분에 3문제.&lt;/li&gt;
&lt;li&gt;시뮬레이션, 그래프 등의 문제가 출제되었다.&lt;/li&gt;
&lt;li&gt;푸는 방식을 캐치하면 풀 수 있다. 문제 코드가 길기는 하지만, 차근히 짜서 함수끼리 잘 연결하면 풀린다.&lt;/li&gt;
&lt;li&gt;부정행위 감시가 심한 시험이였다. 노트북 웹캠에 핸드폰으로 측면 촬영, 신분증까지. 어쩌면 이게 가장 형평성 있는 코딩 테스트인 것 같다. 풍문에 의하면 비교적 오픈되어 있는 카카오나 라인 코테는 단톡방에서 해답을 공유하고 있다곤 하는데..&lt;/li&gt;
&lt;li&gt;지원하는 언어가 C, C#, PYTHON, JAVA였는데, 필자는 C++로만 코테를 준비했어서 C로 푸니 조금 답답했다. 그래도 레퍼런스는 읽을 수 있어서 다행이였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;총평&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;LG의 부정행위 감시 방식은 코테를 시행하는 다른 기업들이 본받아야 할 것 같다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/after-test</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/66</guid>
      <comments>https://96glory.tistory.com/66#entry66comment</comments>
      <pubDate>Sun, 13 Sep 2020 22:42:41 +0900</pubDate>
    </item>
    <item>
      <title>200913 라인 코딩 테스트 후기</title>
      <link>https://96glory.tistory.com/65</link>
      <description>&lt;h1&gt;200913 라인 코딩 테스트 후기&lt;/h1&gt;
&lt;h3&gt;코딩 테스트&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;3시간에 6문제. 앞 4문제는 쉬웠고, 뒤 2문제는 조금 어려웠다.&lt;/li&gt;
&lt;li&gt;역시나 시뮬레이션 및 구현을 좋아한다. 여기에다가 dfs, bfs, dp 등을 섞는 것을 좋아한다.&lt;/li&gt;
&lt;li&gt;프로그래머스 채점 결과에 성공/실패 여부가 뜨는 게 없어서 내 코드가 맞는 지 틀린 지 잘 모르겠다. 사실 그냥 제출했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;총평&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;라인에 입사하기 위해 라인 기출을 잘 보자&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/after-test</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/65</guid>
      <comments>https://96glory.tistory.com/65#entry65comment</comments>
      <pubDate>Sun, 13 Sep 2020 22:35:34 +0900</pubDate>
    </item>
    <item>
      <title>200912 카카오 코딩테스트 후기</title>
      <link>https://96glory.tistory.com/64</link>
      <description>&lt;h1&gt;카카오 코딩테스트 후기&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://programmers.co.kr/competitions/317/2021-kakao-blind-recruitment&quot;&gt;코딩테스트 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;coding test&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;300분에 서버 이상으로 인한 30분 추가. 무려 5시간 30분동안 7문제를 푸는 코테였다.&lt;ul&gt;
&lt;li&gt;알고리즘이 아니라 사실상 지구력 싸움.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;과거의 카카오 코딩테스트 문제들은 모두 프로그래머스에서 만나볼 수 있는데, 이게 많이 도움이 되었다. 기업마다 코테 스타일이 다르므로 카카오에 입사하고 싶다면 프로그래머스에서 카카오 코테 문제들을 풀어보면 좋을 것 같다.&lt;/li&gt;
&lt;li&gt;시뮬레이션을 상당히 좋아한다. 예전 카카오 코테도 그러했다.&lt;/li&gt;
&lt;li&gt;인터넷 커뮤니티에서 4솔 이상이면 합격이라는데, 글쎄.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;총평&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;카카오는 과거 기출을 꼭 풀어보자&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Coding Test/after-test</category>
      <author>_영광</author>
      <guid isPermaLink="true">https://96glory.tistory.com/64</guid>
      <comments>https://96glory.tistory.com/64#entry64comment</comments>
      <pubDate>Sat, 12 Sep 2020 22:27:04 +0900</pubDate>
    </item>
  </channel>
</rss>