<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>도각도각 Dev Day</title>
    <link>https://developeryuseon.tistory.com/</link>
    <description>개발자 지망생 입니다. </description>
    <language>ko</language>
    <pubDate>Fri, 3 Jul 2026 06:03:49 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>yuseon-Lim</managingEditor>
    <item>
      <title>윈도우에서 복사해 우분투(ubuntu)로 붙여넣기 안될 때</title>
      <link>https://developeryuseon.tistory.com/126</link>
      <description>&lt;p&gt;왜인지는 모르겠지만 가상머신 접속 후&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Player &amp;gt; Manage &amp;gt; install&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;에서 삭제 후 재설치가 잘 되지 않아서 다른 방법으로 해결했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bWk21e/btq1m6y4FNA/wh5K2n2Riw9Y3zYBa5qUD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWk21e/btq1m6y4FNA/wh5K2n2Riw9Y3zYBa5qUD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWk21e/btq1m6y4FNA/wh5K2n2Riw9Y3zYBa5qUD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWk21e%2Fbtq1m6y4FNA%2Fwh5K2n2Riw9Y3zYBa5qUD0%2Fimg.png&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;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;터미널창에서 다음과 같은 명령을 입력한다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;# 설치된 vm tool 제거
sudo apt-get autoremove open-vm-tools&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;# 도구 재설치
sudo apt-get install open-vm-tools-desktop&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 한 후에&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1617075109745&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;복사 : ctrl + insert
붙여넣기 : shift + insert&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;로 블럭을 지정해서 복사-붙여넣기 하거나,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;윈도우의 파일을 드래그 혹은 복사-붙여넣기 했을때 파일이 잘 옮겨진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;(참고자료: &lt;a href=&quot;https://www.python2.net/questions-785239.htm&quot;&gt;https://www.python2.net/questions-785239.htm&lt;/a&gt;)&lt;/p&gt;</description>
      <category>Dev. etc</category>
      <category>ubuntu</category>
      <category>복사</category>
      <category>붙여넣기</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/126</guid>
      <comments>https://developeryuseon.tistory.com/126#entry126comment</comments>
      <pubDate>Tue, 30 Mar 2021 12:32:58 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 스튜디오] Error running 'app': Gradle project sync failed. Please fix your project and try again. / android studio Error while waiting for device: The emulator process for AVD was killed</title>
      <link>https://developeryuseon.tistory.com/124</link>
      <description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;에러메시지: Error running 'app': Gradle project sync failed. Please fix your project and try again.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;또는&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;android studio Error while waiting for device: The emulator process for AVD was killed&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;432&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj3iVB/btq0u6HIXok/B6XwTNObF8wj0sDJJDilk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj3iVB/btq0u6HIXok/B6XwTNObF8wj0sDJJDilk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj3iVB/btq0u6HIXok/B6XwTNObF8wj0sDJJDilk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj3iVB%2Fbtq0u6HIXok%2FB6XwTNObF8wj0sDJJDilk0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;432&quot; height=&quot;NaN&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;해결 방법&lt;/h2&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;인터넷 연결 되어있는지 확인&lt;/li&gt;
&lt;li&gt;File &amp;gt; Settings &amp;gt; Appearance &amp;amp; Behavior &amp;gt; System Settings &amp;gt; Androind SDK&lt;/li&gt;
&lt;li&gt;SDK Tools 에서 Android Emulator 설치 되어있는지 확인, 업데이트 해야하면 업데이트 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/cf5csw/btq0zdFSWe2/Gjf1pyPrNmDBskNoThZbfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf5csw/btq0zdFSWe2/Gjf1pyPrNmDBskNoThZbfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf5csw/btq0zdFSWe2/Gjf1pyPrNmDBskNoThZbfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf5csw%2Fbtq0zdFSWe2%2FGjf1pyPrNmDBskNoThZbfK%2Fimg.png&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;p&gt;나의 경우에는 이렇게 해서 해결했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;환경변수 설정도 만져보고 무슨 Grandle? 폴더도 지워보고 안드로이드 설치도 다시 해보고 했는데도 해결이 안되었었고, 디스크 용량문제일수도 있다는데 그것도 아니였다. 아주 넉넉하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 게시글을 보는 사람중에는 이렇게해서 해결이 안될수도 있으니&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/36841461/error-android-emulator-gets-killed?page=1&amp;amp;tab=active#tab-top&quot;&gt;ERROR Android emulator gets killed - Stack Overflow&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1616153712141&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;ERROR Android emulator gets killed&quot; data-og-description=&quot;After updating to Android Studio 2 when I try to run my application and choose an emulator, I wait for the emulator to start and it suddenly gets killed. I can see emulator process for some minutes...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/36841461/error-android-emulator-gets-killed?page=1&amp;amp;tab=active#tab-top&quot; data-og-url=&quot;https://stackoverflow.com/questions/36841461/error-android-emulator-gets-killed&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FzzD1/hyJCgwBeYH/L0EZ7yokEbm7zRKuTLClVk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/58Vdl/hyJBl7m0a9/ZYHZ9lkklKc2ZQwZf7oAaK/img.png?width=2006&amp;amp;height=1438&amp;amp;face=0_0_2006_1438,https://scrap.kakaocdn.net/dn/eR9Z6/hyJCrkAJDE/jxVizX7DpgOlvrCdKRGlq0/img.png?width=1065&amp;amp;height=787&amp;amp;face=0_0_1065_787&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/36841461/error-android-emulator-gets-killed?page=1&amp;amp;tab=active#tab-top&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/36841461/error-android-emulator-gets-killed?page=1&amp;amp;tab=active#tab-top&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FzzD1/hyJCgwBeYH/L0EZ7yokEbm7zRKuTLClVk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/58Vdl/hyJBl7m0a9/ZYHZ9lkklKc2ZQwZf7oAaK/img.png?width=2006&amp;amp;height=1438&amp;amp;face=0_0_2006_1438,https://scrap.kakaocdn.net/dn/eR9Z6/hyJCrkAJDE/jxVizX7DpgOlvrCdKRGlq0/img.png?width=1065&amp;amp;height=787&amp;amp;face=0_0_1065_787');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;ERROR Android emulator gets killed&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;After updating to Android Studio 2 when I try to run my application and choose an emulator, I wait for the emulator to start and it suddenly gets killed. I can see emulator process for some minutes...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;이 글에서 추천수 높은 코멘트들을 하나씩 해보는것을 추천한다.&lt;/p&gt;</description>
      <category>Dev. etc</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/124</guid>
      <comments>https://developeryuseon.tistory.com/124#entry124comment</comments>
      <pubDate>Fri, 19 Mar 2021 19:53:14 +0900</pubDate>
    </item>
    <item>
      <title>JSP 스크립트 태그</title>
      <link>https://developeryuseon.tistory.com/123</link>
      <description>&lt;h1&gt;스크립트 태그&lt;/h1&gt;
&lt;table data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;스크립트 태그&lt;/th&gt;
&lt;th&gt;형식&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;선언문(declaration)&lt;/td&gt;
&lt;td&gt;&amp;lt;%! ... %&amp;gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;자바 변수나 메소드 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;스크립틀릿(scriptlet)&lt;/td&gt;
&lt;td&gt;&amp;lt;% ... %&amp;gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;자바 로직 코드를 작성하는 데 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;표현문(expression)&lt;/td&gt;
&lt;td&gt;&amp;lt;%= ... %&amp;gt;&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;변수, 계산식, 메소드 호출 결과를 문자열 형태로 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;선언문&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lt;%! .... %&amp;gt; 를 사용&lt;/li&gt;
&lt;li&gt;JSP 페이지가 서블릿 프로그램에서 서블릿 클래스로 변환할 때
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JSP 컨테이너가 자바 코드가 삽입되어 있는 스크립트 태그를 처리하고 나머지는 HTML 코드나 일반 텍스트로 간주&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예제&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;코드&lt;/h4&gt;
&lt;pre class=&quot;mojolicious&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;%!
int count = 3;
String makeItLower(String data) {
    return data.toLowerCase();
}
%&amp;gt;

&amp;lt;%
for (int i=1; i&amp;lt;=count; i++){
    out.println(&quot;Java Server Pages&quot; + i + &quot;&amp;lt;br&amp;gt;&quot;);
}
%&amp;gt;

&amp;lt;%= makeItLower(&quot;Hello world&quot;) %&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실행 화면&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/67352902/111126943-9a0cbc00-85b6-11eb-8dd2-b4c166e68939.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Run As .. 에서 선택하여 실행해본다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소문자로 잘 바뀌었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;스크립틀릿 태그&lt;/h2&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;out 객체를 사용하지 않고도 쉽게 HTML 응답을 만들어냄&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;height: 81px;&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;th style=&quot;height: 21px; width: 380.087px;&quot;&gt;선언문&lt;/th&gt;
&lt;th style=&quot;height: 21px; width: 472.587px;&quot;&gt;스크립틀릿&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; width: 366.094px;&quot;&gt;변수 뿐만 아니라 메소드도 선언&lt;/td&gt;
&lt;td style=&quot;height: 20px; width: 458.594px;&quot;&gt;메소드 없이 변수만을 선언&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;height: 40px; width: 366.094px;&quot;&gt;서블릿 프로그램으로 변환될 때 _jspService() 메소드 외부에 배치&lt;/td&gt;
&lt;td style=&quot;height: 40px; width: 458.594px;&quot;&gt;서블릿 프로그램으로 변환될 때 _jspService() 메소드 내부에 배치 (지역변수가 됨)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;표현문&lt;/h2&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;code&gt;out.println&lt;/code&gt;을 사용하는 것과 결과는 같음&lt;/li&gt;
&lt;li&gt;&lt;code&gt;;&lt;/code&gt; 사용 안하는것에 주의!!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주석&lt;/h2&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;1. JSP 주석문
&amp;lt;%-- 주석문작성 --%&amp;gt;

2. Java 주석문
// 주석문 작성
/* 주석문 작성 */
/** 주석문 작성 **/

3. HTML 주석문
&amp;lt;!-- 주석문 작성 --&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 사용. html 의 주석을 사용해도 되는데, 공개 범위가 다르다. 추후에 정리 예정.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;참고자료&lt;/h2&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;</description>
      <category>Web/JSP</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/123</guid>
      <comments>https://developeryuseon.tistory.com/123#entry123comment</comments>
      <pubDate>Mon, 15 Mar 2021 18:54:31 +0900</pubDate>
    </item>
    <item>
      <title>Eclipse tomcat error</title>
      <link>https://developeryuseon.tistory.com/122</link>
      <description>&lt;blockquote&gt;
&lt;p&gt;Starting Tomcat v9.0 Server at localhost' has encountered a problem&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;와 같은 오류가 뜬다면 윈도우에서 Tomcat이 실행중인건 아닌지 살펴보아야 한다.&lt;/p&gt;
&lt;p&gt;아래 두가지 방법중 하나를 선택해서 하면 된다.&lt;/p&gt;
&lt;h3&gt;방법 1&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ctrl + alt + del&lt;/code&gt; 작업관리창에서 javaw.exe 종료시킨다.&lt;/p&gt;
&lt;h3&gt;방법 2&lt;/h3&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;윈도우 cmd창으로 간 뒤 &lt;code&gt;netstat -ao&lt;/code&gt; 를 입력한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;C:\Users\lys44&amp;gt;netstat -ao
활성 연결

프로토콜 로컬 주소 외부 주소 상태 PID
TCP 0.0.0.0:135 LAPTOP-62M3L5PD:0 LISTENING 1224
TCP 0.0.0.0:443 LAPTOP-62M3L5PD:0 LISTENING 18840
TCP 0.0.0.0:445 LAPTOP-62M3L5PD:0 LISTENING 4
TCP 0.0.0.0:808 LAPTOP-62M3L5PD:0 LISTENING 6132
TCP 0.0.0.0:902 LAPTOP-62M3L5PD:0 LISTENING 12676
TCP 0.0.0.0:912 LAPTOP-62M3L5PD:0 LISTENING 12676
TCP 0.0.0.0:1883 LAPTOP-62M3L5PD:0 LISTENING 6232
TCP 0.0.0.0:2861 LAPTOP-62M3L5PD:0 LISTENING 4
TCP 0.0.0.0:2871 LAPTOP-62M3L5PD:0 LISTENING 4
TCP 0.0.0.0:2881 LAPTOP-62M3L5PD:0 LISTENING 4
TCP 0.0.0.0:5040 LAPTOP-62M3L5PD:0 LISTENING 9248
TCP 0.0.0.0:7680 LAPTOP-62M3L5PD:0 LISTENING 13244
TCP 0.0.0.0:8080 LAPTOP-62M3L5PD:0 LISTENING 22588
TCP 0.0.0.0:14430 LAPTOP-62M3L5PD:0 LISTENING 12308&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;여기서 :8080 으로 끝나는 것을 찾은 뒤 PID를 알아낸다.&lt;br /&gt;PID가 22588이면, 아래와 같은 명령어를 입력하면 해결된다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;taskkill /f /pid 22588&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;리눅스일 경우&lt;/h4&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;ps -ef | grep tomcat&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;를 통해 PID를 알아낸 후&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;kill -9 [PID]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;해주면 된다.&lt;/p&gt;</description>
      <category>Web/JSP</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/122</guid>
      <comments>https://developeryuseon.tistory.com/122#entry122comment</comments>
      <pubDate>Wed, 10 Mar 2021 21:36:50 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 4153. 직각삼각형 (C)</title>
      <link>https://developeryuseon.tistory.com/121</link>
      <description>&lt;h1&gt;BOJ 4153. 직각삼각형&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/4153&quot;&gt;https://www.acmicpc.net/problem/4153&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main(){

    while(1){
        int x,y,z;
        scanf(&quot;%d %d %d&quot;, &amp;amp;x, &amp;amp;y, &amp;amp;z);

        if(x == 0)
            break;

        int max = 0;
        if(max &amp;lt; x) max = x;
        if(max &amp;lt; y) max = y;
        if(max &amp;lt; z) max = z;

        if(max == x) x = 0;
        if(max == y) y = 0;
        if(max == z) z = 0;

        if(max*max == x*x + y*y + z*z)
            printf(&quot;right\n&quot;);

        else
            printf(&quot;wrong\n&quot;);
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/brF04s/btqZn1m7mC6/BDWZoDYFBQXovQ3c38HPY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brF04s/btqZn1m7mC6/BDWZoDYFBQXovQ3c38HPY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brF04s/btqZn1m7mC6/BDWZoDYFBQXovQ3c38HPY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrF04s%2FbtqZn1m7mC6%2FBDWZoDYFBQXovQ3c38HPY1%2Fimg.png&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;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 4153</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/121</guid>
      <comments>https://developeryuseon.tistory.com/121#entry121comment</comments>
      <pubDate>Sun, 7 Mar 2021 22:57:42 +0900</pubDate>
    </item>
    <item>
      <title>JSP와 Servlet</title>
      <link>https://developeryuseon.tistory.com/120</link>
      <description>&lt;h1&gt;JSP와 Servlet&lt;/h1&gt;
&lt;p&gt;기능의 차이는 없고, 역할의 차이가 있다.&lt;/p&gt;
&lt;p&gt;jsp는 필요시 스크립트 언어로 기능 구현&lt;/p&gt;
&lt;p&gt;servlet은 java코드를 기준으로 화면 구성에 필요한 html 태그를 보완&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;Servlet&lt;/h2&gt;
&lt;h3&gt;Servlet이란?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;웹 기반의 요청에 대한 동적인 처리가 가능한 Server Side에서 돌아가는 Java Program&lt;/li&gt;
&lt;li&gt;동적인 컨텐츠 생성&lt;/li&gt;
&lt;li&gt;Java 코드 안에 HTML 코드&lt;/li&gt;
&lt;li&gt;작업에 대한 분리적인 측면에서 효율성이 떨어짐&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;특징&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;완전한 자바파일&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;data processing(Controller)에 좋음&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DB와의 통신, 데이터를 읽고 확인하는 작업 등에 유리, 즉 백엔드에 유리&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Servlet 수정된 경우 Java코드 컴파일(.class 파일 생성) -&amp;gt; 동적인 페이지 처리,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;전체 코드를 업데이트하고 다시 컴파일 한 후 재배포 하는 작업 필요&lt;/li&gt;
&lt;li&gt;개발 생산성 저하&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;예시&lt;/h3&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public ThreeParams extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType(&quot;text/html&quot;);
        printWriter out = response.getWriter();

        String title = &quot;Reading Three Request Parameters&quot;;
        String docType = &quot;&amp;lt;!DOCTYPE html PUBLIC \&quot;-//W3C//DTD HTML 4.01 Transitional//EN\&quot;&amp;gt;\n&quot;;

        out.println(docType + 
            &quot;&amp;lt;HTML&amp;gt;\n&quot; +
            &quot;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;&quot; + title + &quot;&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;\n&quot; +
            &quot;&amp;lt;BODY BGCOLOR=\&quot;#FDF5E6\&quot;&amp;gt;\n&quot; +  
            &quot;&amp;lt;H1 ALIGN=\&quot;CENTER\&quot;&amp;gt;&quot; + title + &quot;&amp;lt;/H1&amp;gt;\n&quot; + 
            &quot;&amp;lt;UL&amp;gt;\n&quot; + 
            &quot;&amp;lt;LI&amp;gt;&amp;lt;B&amp;gt;param1&amp;lt;/B&amp;gt;: &quot; + request.getParameter(&quot;param1&quot;) + &quot;\n&quot; +
            &quot;&amp;lt;LI&amp;gt;&amp;lt;B&amp;gt;param2&amp;lt;/B&amp;gt;: &quot; + request.getParameter(&quot;param2&quot;) + &quot;\n&quot; +
            &quot;&amp;lt;LI&amp;gt;&amp;lt;B&amp;gt;param3&amp;lt;/B&amp;gt;: &quot; + request.getParameter(&quot;param3&quot;) + &quot;\n&quot; +
            &quot;&amp;lt;/UL&amp;gt;\n&quot; +
            &quot;&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&quot;);
        )
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;JSP&lt;/h2&gt;
&lt;h3&gt;JSP란?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Java언어 기반으로 하는 Server Side 스크립트 언어&lt;/li&gt;
&lt;li&gt;HTML 코드 안에 Java 코드&lt;/li&gt;
&lt;li&gt;Servlet을 보완하고 기술을 확장한 스크립트 방식의 표준&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;특징&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;presentation(View)에 좋음, 즉 프론트에 유리&lt;/li&gt;
&lt;li&gt;즉 요청 결과 나타내는 HTML 작성에 유리&lt;/li&gt;
&lt;li&gt;JSP가 수정된 경우 재배포 할 필요 없이 WAS가 알아서 처리
&lt;ul&gt;
&lt;li&gt;쉬운 배포&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;예시&lt;/h3&gt;
&lt;pre class=&quot;erb&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&amp;gt;
&amp;lt;HTML&amp;gt;
&amp;lt;HEAD&amp;gt;
&amp;lt;TITLE&amp;gt;Reading Three Request Parameters&amp;lt;/TITLE&amp;gt;
&amp;lt;LINK REL=STYLESHEET HREF=&quot;JSP-Styles.css&quot; TYPE=&quot;text/css&quot;&amp;gt;
&amp;lt;/HEAD&amp;gt;

&amp;lt;BODY&amp;gt;
&amp;lt;H1&amp;gt;Reading Three Request Parameters&amp;lt;/H1&amp;gt;
&amp;lt;UL&amp;gt;
    &amp;lt;LI&amp;gt;&amp;lt;B&amp;gt;param1&amp;lt;/B&amp;gt;: &amp;lt;%= request.getParameter(&quot;param1&quot;) %&amp;gt;
    &amp;lt;LI&amp;gt;&amp;lt;B&amp;gt;param2&amp;lt;/B&amp;gt;: &amp;lt;%= request.getParameter(&quot;param2&quot;) %&amp;gt;
    &amp;lt;LI&amp;gt;&amp;lt;B&amp;gt;param3&amp;lt;/B&amp;gt;: &amp;lt;%= request.getParameter(&quot;param3&quot;) %&amp;gt;
&amp;lt;/UL&amp;gt;
&amp;lt;/BODY&amp;gt;
&amp;lt;/HTML&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;JSP 페이지 처리 과정&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/67352902/110123246-01cb4600-7e04-11eb-9bb6-ea1386f65b4b.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;JSP 생명 주기&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/67352902/110124461-72269700-7e05-11eb-84c2-4fe6a68e07e8.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;참고자료&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Learn/Getting_started_with_the_web/How_the_Web_works&quot;&gt;웹의 동작 방식 - Web 개발 학습하기 | MDN (mozilla.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;한성대학교 이석기 교수님 강의&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EA%B3%B5%EC%9A%A9_%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4&quot;&gt;공용 게이트웨이 인터페이스 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[[Web] Servlet과 JSP의 차이와 관계 - Heee's Development Blog (gmlwjd9405.github.io)](&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Web/JSP</category>
      <category>jsp</category>
      <category>jsp 생명 주기</category>
      <category>servlet</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/120</guid>
      <comments>https://developeryuseon.tistory.com/120#entry120comment</comments>
      <pubDate>Fri, 5 Mar 2021 23:08:43 +0900</pubDate>
    </item>
    <item>
      <title>CGI와 확장 CGI</title>
      <link>https://developeryuseon.tistory.com/119</link>
      <description>&lt;h2&gt;확장 CGI&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;전통적인 CGI 방식의 단점 보완&lt;/li&gt;
&lt;li&gt;프로세스 생성방식 변화로 시스템의 부하 줄임&lt;/li&gt;
&lt;li&gt;ASP, PHP, Servlet, JSP 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;ASP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;MS사에서 만들어진 확장 CGI.&lt;/li&gt;
&lt;li&gt;특정 웹 서버와 OS에서 동작(윈도우 기반의 서버)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;PHP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ASP와 달리 특정 영역에서만 동작하지 X&lt;/li&gt;
&lt;li&gt;주로 패키지로 사용되는 상대 존재(AMP)&lt;/li&gt;
&lt;li&gt;적은 명령어로 프로그래밍 가능&lt;/li&gt;
&lt;li&gt;기능이 미약&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Servlet, JSP &lt;a href=&quot;https://developeryuseon.tistory.com/120&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다음 포스트&lt;/a&gt;에 자세히&lt;/h3&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;동적 웹 페이지 처리기술&lt;/h2&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;HTML과 스크립트 언어를 함께 사용할 수 있는 기술로 웹 서버에서 해석&lt;/li&gt;
&lt;li&gt;데이터베이스 연동 처리 등 다양한 구현&lt;/li&gt;
&lt;li&gt;별도의 컴파일과정 없이 HTML 태그 수정 가능&lt;/li&gt;
&lt;li&gt;JSP, Servlet, PHP, CGI, ASP...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;클라이언트측 스크립트&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;웹 브라우저에서 실행되는 언어&lt;/li&gt;
&lt;li&gt;자바 스크립트, node.js,&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Web/JSP</category>
      <category>ASP</category>
      <category>cgi</category>
      <category>jsp</category>
      <category>php</category>
      <category>servlet</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/119</guid>
      <comments>https://developeryuseon.tistory.com/119#entry119comment</comments>
      <pubDate>Fri, 5 Mar 2021 23:07:23 +0900</pubDate>
    </item>
    <item>
      <title>웹과 웹의 동작 원리</title>
      <link>https://developeryuseon.tistory.com/118</link>
      <description>&lt;h2&gt;웹의 동작 원리&lt;/h2&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;클라이언트와 서버&lt;/h3&gt;
&lt;p&gt;웹은 기본적으로 *&lt;i&gt;클라이언트/서버 *&lt;/i&gt;방식으로 동작한다.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/67352902/110116252-95981480-7dfa-11eb-90fe-c000f2b4fe3c.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;request(요청): 클라이언트에서 서버로 정보를 요구하기 위해 보내는 메시지. GET방식과 POST방식 등이 있다.&lt;/li&gt;
&lt;li&gt;response(응답): HTTP에서 요구된 메세지에 대한 응답, HTML, 이미지 등이 응답의 내용&lt;/li&gt;
&lt;li&gt;클라이언트: 일반적인 웹 사용자의 인터넷이 연결된 장치(핸드폰)과 이런 장치들에서 이용 가능한 웹에 접근하는 소프트웨어(크롬, 파이어폭스).&lt;/li&gt;
&lt;li&gt;서버: 웹 페이지, 사이트 또는 앱을 저장하는 컴퓨터. 클라이언트가 요청하면 서버로부터 클라이언트의 장치로 사용자의 웹 브라우저에서 보여지기 위한 웹페이지의 사본이 다운로드 됨.&lt;/li&gt;
&lt;li&gt;웹 서버는 Apache, Tomcat, IIS 등이 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;그 외 용어들&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;TCP/IP: Transmission Control Protocol(전송 제어 규약)과 Internet Protocol(인터넷 규약)은 데이터가 어떻게 웹을 통해 통신하는지 정의하는 통신 규약.&lt;/li&gt;
&lt;li&gt;DNS: Domain Name System Servers. 웹사이트를 위한 주소록과 같음.&lt;/li&gt;
&lt;li&gt;HTTP: Hyper Transfer Protocol. 클라이언트와 서버가 서로 통신할 수 있게 하기 위한 언어를 정의하는 어플리케이션 규약.&lt;/li&gt;
&lt;li&gt;컴포넌트 파일: 한 웹사이트는 많은 자원들로 만들어진다... 이것의 종류로는
&lt;ul&gt;
&lt;li&gt;코드 파일: HTML, CSS, JavaScript 코드들&lt;/li&gt;
&lt;li&gt;자원: 이미지, 음악, 비디오 단어문서 그리고 PDF같은 웹사이트를 만드는 것들.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;정적 웹 페이지와 동적 웹 페이지&lt;/h2&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;정적 웹 페이지(Static Page)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;컴퓨터에 저장된 텍스트 파일을 &lt;b&gt;그대로&lt;/b&gt; 보냄&lt;/li&gt;
&lt;li&gt;동작 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/67352902/110117933-ef99d980-7dfc-11eb-8ddb-43d88b4e69fb.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;동적 웹 페이지(Dynamic Page)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;저장된 내용을 &lt;b&gt;다른 변수로 가공 처리&lt;/b&gt;하여 보는 것&lt;/li&gt;
&lt;li&gt;동적으로 HTML 생성&lt;/li&gt;
&lt;li&gt;PHP, ASP, JSP 등..&lt;/li&gt;
&lt;li&gt;동작 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/67352902/110118099-2d96fd80-7dfd-11eb-8706-66cecff917b8.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;참고자료&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Learn/Getting_started_with_the_web/How_the_Web_works&quot;&gt;웹의 동작 방식 - Web 개발 학습하기 | MDN (mozilla.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;한성대학교 이석기 교수님 강의&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EA%B3%B5%EC%9A%A9_%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4&quot;&gt;공용 게이트웨이 인터페이스 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[[Web] Servlet과 JSP의 차이와 관계 - Heee's Development Blog (gmlwjd9405.github.io)](&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Web/JSP</category>
      <category>웹</category>
      <category>웹의 동작 원리</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/118</guid>
      <comments>https://developeryuseon.tistory.com/118#entry118comment</comments>
      <pubDate>Fri, 5 Mar 2021 23:05:40 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 11279. 최대 힙 (Python)</title>
      <link>https://developeryuseon.tistory.com/115</link>
      <description>&lt;h1&gt;BOJ 11279. 최대 힙&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11279&quot;&gt;https://www.acmicpc.net/problem/11279&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1614012210829&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11279번: 최대 힙&quot; data-og-description=&quot;첫째 줄에 연산의 개수 N(1&amp;nbsp;&amp;le; N &amp;le; 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11279&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11279&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nwt4z/hyJmobb1fS/dobI4DV76vnYXANwZX5n8K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11279&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11279&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nwt4z/hyJmobb1fS/dobI4DV76vnYXANwZX5n8K/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;&gt;11279번: 최대 힙&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 연산의 개수 N(1&amp;nbsp;&amp;le; N &amp;le; 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;heapq&lt;/code&gt;를 이용해서 풀었다. 주의할 점 세가지는,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;python3로 제출할 경우 시간초과, pypy3로 제출&lt;/li&gt;
&lt;li&gt;&lt;code&gt;input()&lt;/code&gt;으로 할 시 시간초과, &lt;code&gt;sys.stdin.readline().rstrip()&lt;/code&gt;로 할 것&lt;/li&gt;
&lt;li&gt;최대 힙으로 만들기 위해 &lt;code&gt;(-n, n)&lt;/code&gt;로 튜플을 넘겨주어 &lt;code&gt;-n&lt;/code&gt;기준 최소 힙 생성. &lt;code&gt;heapq.heappop(heap)[1]&lt;/code&gt; 하여 &lt;code&gt;n&lt;/code&gt;기준 최대 힙이 된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/66?category=833436&quot;&gt;python heapq 모듈&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/90&quot;&gt;input()과 sys.stdin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;import heapq
from sys import stdin

N = int(stdin.readline().rstrip())
heap = []

for _ in range(N):
    command = int(stdin.readline().rstrip())

    if command == 0:
        if len(heap) == 0:
            print(0)
        else:
            print(heapq.heappop(heap)[1])
    else:
        heapq.heappush(heap, (-command, command))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/FJSLl/btqYgHokvhP/P4fDYap9fV5XaqIpbYRmH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FJSLl/btqYgHokvhP/P4fDYap9fV5XaqIpbYRmH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FJSLl/btqYgHokvhP/P4fDYap9fV5XaqIpbYRmH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFJSLl%2FbtqYgHokvhP%2FP4fDYap9fV5XaqIpbYRmH0%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 11279</category>
      <category>heapq</category>
      <category>최대힙</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/115</guid>
      <comments>https://developeryuseon.tistory.com/115#entry115comment</comments>
      <pubDate>Tue, 23 Feb 2021 01:43:57 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1927. 최소 힙 (Python)</title>
      <link>https://developeryuseon.tistory.com/114</link>
      <description>&lt;h1&gt;BOJ 1927. 최소 힙&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1927&quot;&gt;https://www.acmicpc.net/problem/1927&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1614011685387&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1927번: 최소 힙&quot; data-og-description=&quot;첫째 줄에 연산의 개수 N(1 &amp;le; N &amp;le; 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1927&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1927&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bp9nff/hyJmr6OKhV/nuMlEozt3Y1qPhLpWgSa2k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1927&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1927&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bp9nff/hyJmr6OKhV/nuMlEozt3Y1qPhLpWgSa2k/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;&gt;1927번: 최소 힙&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 연산의 개수 N(1 &amp;le; N &amp;le; 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;heapq&lt;/code&gt;를 이용해서 풀었다. 주의할 점 두가지는,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;python3로 제출할 경우 시간초과, pypy3로 제출&lt;/li&gt;
&lt;li&gt;&lt;code&gt;input()&lt;/code&gt;으로 할 시 시간초과, &lt;code&gt;sys.stdin.readline().rstrip()&lt;/code&gt;로 할 것&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/66?category=833436&quot;&gt;python heapq 모듈&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/90&quot;&gt;input()과 sys.stdin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;import heapq
from sys import stdin

N = int(stdin.readline().rstrip())
heap = []

for _ in range(N):
    command = int(stdin.readline().rstrip())

    if command == 0:
        if len(heap) == 0:
            print(0)
        else:
            print(heapq.heappop(heap))
    else:
        heapq.heappush(heap, command)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/tm2Gl/btqYkaQRpzn/CCfuyI3l9zO0nwZ8NVK091/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tm2Gl/btqYkaQRpzn/CCfuyI3l9zO0nwZ8NVK091/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tm2Gl/btqYkaQRpzn/CCfuyI3l9zO0nwZ8NVK091/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftm2Gl%2FbtqYkaQRpzn%2FCCfuyI3l9zO0nwZ8NVK091%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 1927</category>
      <category>시간초과</category>
      <category>최소 힙</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/114</guid>
      <comments>https://developeryuseon.tistory.com/114#entry114comment</comments>
      <pubDate>Tue, 23 Feb 2021 01:35:23 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2606. 바이러스 (Python)</title>
      <link>https://developeryuseon.tistory.com/113</link>
      <description>&lt;h1&gt;BOJ 2606. 바이러스&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2606&quot;&gt;https://www.acmicpc.net/problem/2606&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1614003517840&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2606번: 바이러스&quot; data-og-description=&quot;첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2606&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2606&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b72YwH/hyJmwGZgGZ/IpIEdG5E5xhrbz4606Y5ik/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2606&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2606&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b72YwH/hyJmwGZgGZ/IpIEdG5E5xhrbz4606Y5ik/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;&gt;2606번: 바이러스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;DFS를 통해 탐색한 &lt;code&gt;노드의 수 - 1&lt;/code&gt; (1번 컴퓨터는 제외) 를 구해주면 된다.&lt;br /&gt;&lt;b&gt;틀렸습니다&lt;/b&gt; 를 굉장히 많이 봤는데 이유는 그래프를 단방향으로 만들어 주어서 이다. 테스트 케이스에선 잘 나와서 생각하지 못했다.&lt;br /&gt;앞으로 &lt;code&gt;방향&lt;/code&gt; 을 언급하지 않으면 양방향으로 해 주어야 하는것을 잊으면 안되겠다.&lt;br /&gt;재귀로도 풀 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/74?category=833437&quot;&gt;dfs 파이썬 구현&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;import sys
from collections import defaultdict

N = int(input()) # 노드(컴퓨터) 수
M = int(input()) # 간선(컴퓨터 쌍)의 수

computer = defaultdict(list)

for _ in range(M):
    a, b = map(int, sys.stdin.readline().split())
    computer[a].append(b)
    computer[b].append(a)

discoverd = []
stack = [1]

# DFS
while stack:
    v = stack.pop()
    if v not in discoverd:
        discoverd.append(v)
        for w in computer[v]:
            stack.append(w)

print(len(discoverd) - 1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bUvTDk/btqYfWeUm2U/EmlUhTNoKyU6KtnjBAHdd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUvTDk/btqYfWeUm2U/EmlUhTNoKyU6KtnjBAHdd1/img.png&quot; data-alt=&quot;예외처리를 하나 안하나 속도는 같았다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUvTDk/btqYfWeUm2U/EmlUhTNoKyU6KtnjBAHdd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUvTDk%2FbtqYfWeUm2U%2FEmlUhTNoKyU6KtnjBAHdd1%2Fimg.png&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;figcaption&gt;예외처리를 하나 안하나 속도는 같았다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 2606</category>
      <category>바이러스</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/113</guid>
      <comments>https://developeryuseon.tistory.com/113#entry113comment</comments>
      <pubDate>Mon, 22 Feb 2021 23:18:59 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1003. 피보나치 함수 (Python)</title>
      <link>https://developeryuseon.tistory.com/112</link>
      <description>&lt;h1&gt;BOJ 1003. 피보나치 함수&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1003&quot;&gt;https://www.acmicpc.net/problem/1003&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613725839887&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1003번: 피보나치 함수&quot; data-og-description=&quot;각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1003&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1003&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bjEUdc/hyJjQ7yUq4/uPqafG56S0upoAZK7iCt7K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1003&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1003&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bjEUdc/hyJjQ7yUq4/uPqafG56S0upoAZK7iCt7K/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;&gt;1003번: 피보나치 함수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;테스트 케이스에 대해 0이 출력되는 횟수와 1이 출력되는 횟수를 구해보면,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table data-ke-style=&quot;style4&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;테스트 케이스&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;0이 출력되는 횟수&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;1이 출력되는 횟수&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;0&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;0&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;3&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;4&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;5&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;3&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;6&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;5&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;8&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;이렇게 된다. 이는&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;테스트 케이스(N)에 대한 0과 1의 출력 = (N-1)의 0 출력 갯수 + (N-2)의 0 출력 갯수
                                    (N-1)의 1 출력 갯수 + (N-2)의 1 출력 갯수&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;임을 알 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;피보나치의 정의는&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;72&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GITMo/btqXTnq9qgN/ND19TMHAhJ98iySYQdIyFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GITMo/btqXTnq9qgN/ND19TMHAhJ98iySYQdIyFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GITMo/btqXTnq9qgN/ND19TMHAhJ98iySYQdIyFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGITMo%2FbtqXTnq9qgN%2FND19TMHAhJ98iySYQdIyFk%2Fimg.png&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;72&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;p&gt;이것이고 잘 보면 위의 표가 피보나치 수와 매우 유사하다. 즉,&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 0 출력 횟수
F0 = 1, F1 = 0 인 피보나치 수

# 1 출력 횟수
F1 = 0, F2 = 1 인 피보나치 수&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;임을 알 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것을 매번 구하게 되면 계속 재귀 호출을 해야 하므로 나는 입력받은 수 중에 가장 큰수까지 테스트 케이스에 대한 0, 1의 출력 갯수를 모두 구하고&lt;br /&gt;그저 for문을 돌려 해당 문제에 대한 답을 출력했다.&lt;/p&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;result = [[1, 0], [0, 1]]

N = int(input())
Q = [int(input()) for _ in range(N)]

if max(Q) &amp;gt; 1:
    for i in range(2, max(Q) + 1):
        tmp = [result[i-2][0] + result[i-1][0], result[i-2][1] + result[i-1][1]]
        result.append(tmp)

for n in Q:
    print(result[n][0], result[n][1])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/cKKzMF/btqXYpuEsgP/Zfqq2cKG3mSr9G8fMzSekK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKKzMF/btqXYpuEsgP/Zfqq2cKG3mSr9G8fMzSekK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKKzMF/btqXYpuEsgP/Zfqq2cKG3mSr9G8fMzSekK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKKzMF%2FbtqXYpuEsgP%2FZfqq2cKG3mSr9G8fMzSekK%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 1003</category>
      <category>피보나치 함수</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/112</guid>
      <comments>https://developeryuseon.tistory.com/112#entry112comment</comments>
      <pubDate>Fri, 19 Feb 2021 18:12:43 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1764. 듣보잡 (Python)</title>
      <link>https://developeryuseon.tistory.com/111</link>
      <description>&lt;h1&gt;BOJ 1764. 듣보잡&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1764&quot;&gt;1764번: 듣보잡 (acmicpc.net)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613711295489&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1764번: 듣보잡&quot; data-og-description=&quot;첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1764&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1764&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWvaU4/hyJkNag4Bj/0pX9lvC5Tjra1OwgxLpYG0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1764&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1764&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWvaU4/hyJkNag4Bj/0pX9lvC5Tjra1OwgxLpYG0/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;&gt;1764번: 듣보잡&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;파이썬의 &lt;a href=&quot;https://developeryuseon.tistory.com/33?category=833436&quot;&gt;&lt;code&gt;x in y&lt;/code&gt;&lt;/a&gt;를 이용해서 풀었더니 시간 초과가 났다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;N과 M이 500,000 이하의 큰 수라 연산하는 것이 오래걸리나 싶어서 탐색을 &lt;b&gt;이진탐색&lt;/b&gt; 으로 바꾸어 풀었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이진탐색(binary seart)는 &lt;b&gt;O(NlogN)&lt;/b&gt;&lt;br /&gt;파이썬 내장함수 &lt;code&gt;sort()&lt;/code&gt;는 &lt;b&gt;O(logN)&lt;/b&gt;이므로 이진탐색이 더 좋다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def binary_search(start, end, list, target, result):
    if start &amp;gt; end:
        return

    mid = ( start + end ) // 2

    if list[mid] == target:
        heapq.heappush(result, target)
    if list[mid] &amp;gt; target:
        end = mid - 1
        binary_search(start, end, list, target, result)
    if list[mid] &amp;lt; target:
        start = mid + 1
        binary_search(start, end, list, target, result)&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffe2eb;&quot;&gt;탐색하고자 하는 리스트를 오름차순으로 정리한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffe2eb;&quot;&gt;target &amp;lt; 중앙값 이면 target은 중앙값의 왼쪽에 있으므로 end(index)를 중앙값index - 1 로 설정하고 중앙값의 오른쪽은 버린다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffe2eb;&quot;&gt;중앙값 &amp;lt; target 이면 target은 중앙값의 오른쪽에 있으므로 start(index)를 중앙값index + 1 로 설정하고 중앙값의 왼쪽은 4. 이를 반복한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffe2eb;&quot;&gt;중앙값이 target과 일치한다면 found. 종료&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffe2eb;&quot;&gt;종료되지 못하고 end &amp;lt; start가 되면 탐색 실패. not found&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;의 절차를 따른다.&lt;/p&gt;
&lt;p&gt;여기서 가장 중요한 점은 &lt;b&gt;탐색하고자 하는 리스트가 반드시 정렬되어&lt;/b&gt; 있어야 한다는 것이다. 잊지말자!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또한 &lt;code&gt;sort()&lt;/code&gt;를 사용하지 않고 오름차순으로 정렬한 값을 출력하기 위해서 &lt;code&gt;heapq&lt;/code&gt;를 사용했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/66?category=833436&quot;&gt;heapq 모듈 (최소, 최대 힙)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;br /&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import sys
import heapq

def binary_search(start, end, list, target, result):
    if start &amp;gt; end:
        return

    mid = ( start + end ) // 2

    if list[mid] == target:
        heapq.heappush(result, target)
    if list[mid] &amp;gt; target:
        end = mid - 1
        binary_search(start, end, list, target, result)
    if list[mid] &amp;lt; target:
        start = mid + 1
        binary_search(start, end, list, target, result)

result = []
hear = []

N, M = map(int, input().split())

for _ in range(N):
    hear.append(sys.stdin.readline().rstrip())

l = len(hear)
hear.sort()

for _ in range(M):
    see = sys.stdin.readline().rstrip()
    binary_search(0, l-1, hear, see, result)

print(len(result))
while result:
    print(heapq.heappop(result))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bL1lUe/btqXSnEb6VQ/LxlciZ8NQg5KG8cKIhrldk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL1lUe/btqXSnEb6VQ/LxlciZ8NQg5KG8cKIhrldk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL1lUe/btqXSnEb6VQ/LxlciZ8NQg5KG8cKIhrldk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL1lUe%2FbtqXSnEb6VQ%2FLxlciZ8NQg5KG8cKIhrldk%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 1764</category>
      <category>듣보잡</category>
      <category>시간초과</category>
      <category>이진탐색</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/111</guid>
      <comments>https://developeryuseon.tistory.com/111#entry111comment</comments>
      <pubDate>Fri, 19 Feb 2021 14:09:08 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1620. 나는야 포켓몬 마스터 이다솜 (Python)</title>
      <link>https://developeryuseon.tistory.com/110</link>
      <description>&lt;h1&gt;BOJ 1620. 나는야 포켓몬 마스터 이다솜&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1620&quot;&gt;1620번: 나는야 포켓몬 마스터 이다솜 (acmicpc.net)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613704898259&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1620번: 나는야 포켓몬 마스터 이다솜&quot; data-og-description=&quot;첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1620&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1620&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dJMZOk/hyJkOfT2u1/9fc5jbHGRDC2lfhDL7zjd1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1620&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1620&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dJMZOk/hyJkOfT2u1/9fc5jbHGRDC2lfhDL7zjd1/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;&gt;1620번: 나는야 포켓몬 마스터 이다솜&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;딕셔너리(dictionary)를 이용해서 풀면 된다.&lt;br /&gt;for문을 돌며 인덱스-문자열을 매치시켜 저장하고 이를 문제에 맞게 프린트 해주면 된다.&lt;/p&gt;
&lt;p&gt;문제의 핵심은,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;딕셔너리의 &lt;code&gt;키-값&lt;/code&gt;을 &lt;code&gt;번호-포켓몬이름&lt;/code&gt;으로 저장하면 포켓몬 이름, 즉 문자열이 나왔을때는 어떻게 값으로 키를 뽑아낼 것인가?&lt;/li&gt;
&lt;li&gt;int 형이 문제로 들어왔을때와 str(문자열)이 들어왔을때는 어떻게 구분 할 것인가?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;일 것이다.&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;키-값을 뒤집은 딕셔너리 생성&lt;/h3&gt;
&lt;p&gt;문자열이 문제로 나올때마다 포문을 돌려 값에 맞는 키를 찾을 수는 있다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;except ValueError:
        for k, v in dict.items():
            if v == question:
                print(k)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;하지만 문제 수가 늘어나면 그만큼 연산 횟수가 증가한다. 실제로 이 코드로 제출해보면 시간 초과 에러가 난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/cp9I9u/btqXMdvwcV8/8M2QTt5VB0IiGP8SdzuCY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp9I9u/btqXMdvwcV8/8M2QTt5VB0IiGP8SdzuCY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp9I9u/btqXMdvwcV8/8M2QTt5VB0IiGP8SdzuCY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp9I9u%2FbtqXMdvwcV8%2F8M2QTt5VB0IiGP8SdzuCY1%2Fimg.png&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;p&gt;&lt;br /&gt;연산을 한번만 할 수 있도록 키-값을 바꾼 딕셔너리를 만들어 그 딕셔너리에서 값을 찾는다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;for k, v in dict.items():
    reversed_dict[v] = k&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;except ValueError:
        print(reversed_dict[question])&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;정수(int)와 문자열(str) 구분&lt;/h3&gt;
&lt;p&gt;현재 dict는&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;{1: 'Bulbasaur', 2: 'Ivysaur', 3: 'Venusaur', 4: 'Charmander', 5: 'Charmeleon', 6: 'Charizard', 7: 'Squirtle', 8: 'Wartortle', 9: 'Blastoise', 10: 'Caterpie', 11: 'Metapod', 12: 'Butterfree', 13: 'Weedle', 14: 'Kakuna', 15: 'Beedrill', 16: 'Pidgey', 17: 'Pidgeotto', 18: 'Pidgeot', 19: 'Rattata', 20: 'Raticate', 21: 'Spearow', 22: 'Fearow', 23: 'Ekans', 24: 'Arbok',
25: 'Pikachu', 26: 'Raichu'}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 구성되어 있다.&lt;br /&gt;정수가 문제로 들어오면 문자열을 출력하고, 문자열이 문제로 들어오면 정수를 출력해야한다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;question = sys.stdin.readline().rstrip()
    try:
        question = int(question)
    except ValueError:
        print(reversed_dict[question])
    else:
        print(dict[question])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;문제가 정수인지 문자열인지 구분하기 위해 &lt;code&gt;ValueError&lt;/code&gt;를 이용해 예외처리를 했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;try~except&lt;/code&gt;는 &lt;code&gt;try&lt;/code&gt;에서 에러가 나면 &lt;code&gt;except&lt;/code&gt;를 수행하고 에러가 나지 않는다면 &lt;code&gt;else&lt;/code&gt;를 수행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;먼저 &lt;code&gt;int()&lt;/code&gt;로 변환 해 본 다음 여기서 &lt;code&gt;ValueError&lt;/code&gt;가 난다면 그것은 &lt;code&gt;str&lt;/code&gt;이므로 &lt;code&gt;reversed_dict&lt;/code&gt;값을 찾고,&lt;br /&gt;에러가 나지 않는다면 그것은 정수이므로 &lt;code&gt;dict&lt;/code&gt;에서 값을 찾는다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import sys

dict = {}
reversed_dict = {}
N, M = map(int, input().split())

for i in range(1,N + 1):
    dict[i] = sys.stdin.readline().rstrip()

for k, v in dict.items():
    reversed_dict[v] = k

for _ in range(M):
    question = sys.stdin.readline().rstrip()
    try:
        question = int(question)
    except ValueError:
        print(reversed_dict[question])
    else:
        print(dict[question])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/yMgyj/btqXLeBkAIr/9ZhiokG5xp4gZyRXK0h9D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yMgyj/btqXLeBkAIr/9ZhiokG5xp4gZyRXK0h9D1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yMgyj/btqXLeBkAIr/9ZhiokG5xp4gZyRXK0h9D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyMgyj%2FbtqXLeBkAIr%2F9ZhiokG5xp4gZyRXK0h9D1%2Fimg.png&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;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;+) 코드 가독성, 시간 살짝 개선&lt;/h4&gt;
&lt;pre id=&quot;code_1613705370048&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

dict = {}
reversed_dict = {}
N, M = map(int, input().split())

for i in range(1,N + 1):
    tmp = sys.stdin.readline().rstrip()
    dict[i] = tmp
    reversed_dict[tmp] = i

for _ in range(M):
    question = sys.stdin.readline().rstrip()
    try:
        question = int(question)
    except ValueError:
        print(reversed_dict[question])
    else:
        print(dict[question])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/srw71/btqXRvPKn8s/SIzGvOghnsKmttEl1Y426K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/srw71/btqXRvPKn8s/SIzGvOghnsKmttEl1Y426K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/srw71/btqXRvPKn8s/SIzGvOghnsKmttEl1Y426K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsrw71%2FbtqXRvPKn8s%2FSIzGvOghnsKmttEl1Y426K%2Fimg.png&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;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;입력받을때 키-값 바꾼 딕셔너리 바로 설정해줌&lt;/span&gt;&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 1620</category>
      <category>나는야 포켓몬 마스터 이다솜</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/110</guid>
      <comments>https://developeryuseon.tistory.com/110#entry110comment</comments>
      <pubDate>Fri, 19 Feb 2021 12:19:45 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 11723. 집합 (Python)</title>
      <link>https://developeryuseon.tistory.com/109</link>
      <description>&lt;h1&gt;BOJ 11723. 집합&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11723&quot;&gt;https://www.acmicpc.net/problem/11723&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613662582970&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11723번: 집합&quot; data-og-description=&quot;첫째 줄에 수행해야 하는 연산의 수 M (1 &amp;le; M &amp;le; 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11723&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11723&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b0ddSp/hyJjO2z4kw/PT6ern3LZ7t0svewoVduOk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11723&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11723&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b0ddSp/hyJjO2z4kw/PT6ern3LZ7t0svewoVduOk/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;&gt;11723번: 집합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 수행해야 하는 연산의 수 M (1 &amp;le; M &amp;le; 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;set()&lt;/code&gt; 쓰면 되는데 쉽지~ 하면서 풀기 시작했는데 수많은 &lt;b&gt;메모리 초과&lt;/b&gt;와 마주해야 했다..&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/HFpta/btqXN9lUJLe/MQkt6glYRazMJgxKnCJnz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HFpta/btqXN9lUJLe/MQkt6glYRazMJgxKnCJnz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HFpta/btqXN9lUJLe/MQkt6glYRazMJgxKnCJnz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHFpta%2FbtqXN9lUJLe%2FMQkt6glYRazMJgxKnCJnz1%2Fimg.png&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;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이유는 &lt;b&gt;pypy3&lt;/b&gt;로 제출하였기 때문이였다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;지금껏 pypy3가 속도면에서 더 빠르다고 해서 계속 pypy3로 제출해왔는데 메모리면에서 이렇게 손해이면 python3로 제출하고 속도를 개선 할 방법을 찾는게 더 공부에 좋을지도 모르겠다. 스스로 속도를 개선하는것은 좋은 것이니.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또, &lt;code&gt;command&lt;/code&gt;의 길이에 따라 예외처리를 하여 &lt;code&gt;all&lt;/code&gt;, &lt;code&gt;empty&lt;/code&gt;인 경우 모든 if문을 검사하지 않도록 해 주는것이 속도면에서 더욱 좋을 듯 하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;pypy3와 Cpython비교에 관한 글&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/45117672/pypy-large-memory-usage-compared-to-cpython&quot;&gt;스택오버플로우-PyPy large memory usage compared to CPython&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import sys

S = set()
nums = [i for i in range(1,21)]

N = int(input())
for _ in range(N):
    command = sys.stdin.readline().split()

    if len(command) == 1:
        if command[0] == &quot;all&quot;:
            S.update(nums)
        if command[0] == &quot;empty&quot;:
            S = set()
        continue

    n = int(command[1])
    if command[0] == &quot;add&quot;:
        S.add(n)
    if command[0] == &quot;remove&quot;:
        S.discard(n)
    if command[0] == &quot;check&quot;:
        if n in S:
            print(1)
        else:
            print(0)
    if command[0] == &quot;toggle&quot;:
        if n in S:
            S.remove(n)
        else:
            S.add(n)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bqPw0S/btqXOa54hzW/3A7KfFc021A9Lv7alxyJKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqPw0S/btqXOa54hzW/3A7KfFc021A9Lv7alxyJKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqPw0S/btqXOa54hzW/3A7KfFc021A9Lv7alxyJKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqPw0S%2FbtqXOa54hzW%2F3A7KfFc021A9Lv7alxyJKk%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 11723</category>
      <category>pypy3</category>
      <category>메모리초과</category>
      <category>집합</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/109</guid>
      <comments>https://developeryuseon.tistory.com/109#entry109comment</comments>
      <pubDate>Fri, 19 Feb 2021 00:38:03 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 11866. 요세푸스 문제 0 (Python)</title>
      <link>https://developeryuseon.tistory.com/108</link>
      <description>&lt;h1&gt;BOJ 11866. 요세푸스 문제 0&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11866&quot;&gt;https://www.acmicpc.net/problem/11866&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613494942886&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11866번: 요세푸스 문제 0&quot; data-og-description=&quot;첫째 줄에 N과 K가&amp;nbsp;빈 칸을 사이에 두고 순서대로 주어진다. (1 &amp;le; K &amp;le; N &amp;le; 1,000)&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11866&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11866&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AM9Az/hyJizxLD55/Sqd6s5QPEDZRIjhxzxjPR1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11866&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11866&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AM9Az/hyJizxLD55/Sqd6s5QPEDZRIjhxzxjPR1/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;&gt;11866번: 요세푸스 문제 0&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 N과 K가&amp;nbsp;빈 칸을 사이에 두고 순서대로 주어진다. (1 &amp;le; K &amp;le; N &amp;le; 1,000)&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;400&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mqhn5/btqXu37Wvtv/rlq1QoWNcQ9ItCyau2vRY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mqhn5/btqXu37Wvtv/rlq1QoWNcQ9ItCyau2vRY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mqhn5/btqXu37Wvtv/rlq1QoWNcQ9ItCyau2vRY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmqhn5%2FbtqXu37Wvtv%2Frlq1QoWNcQ9ItCyau2vRY0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;400&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;p&gt;먼저 위의 그림처럼 그려보면서 문제를 이해하면 빠르다.&lt;br /&gt;문제의 핵심은 &lt;b&gt;원&lt;/b&gt;인 점과, 계속 3번째 사람을 구해야 하는데, 제거된 사람이 있는 자리는 &lt;b&gt;건너 뛰어야&lt;/b&gt; 한다는 것이다.&lt;/p&gt;
&lt;p&gt;나는 리스트를 이용해서, 제거된 사람을 &lt;code&gt;-1&lt;/code&gt;로 표시하여 건너 뛰도록 하는 방법으로 구했다.&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;for _ in range(N):
    cur %= N
    next = 0&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cur&lt;/code&gt;은 현재 위치이다. for 루프를 돌 때 마다 &lt;code&gt;cur %= N&lt;/code&gt;을 해주어 &lt;code&gt;cur&lt;/code&gt;이 항상 N보다 작게 해주어 인덱스를 벗어나지 않게끔 한다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;next = 0&lt;/code&gt;으로 설정하고 while문을 시작한다.&lt;/p&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;if next == K - 1 and li[(cur + next) % N] != -1:
        result.append(li[(cur + next) % N])
        li[(cur + next) % N] = -1
        cur += K
        break&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;next = K - 1&lt;/code&gt;이면서, &lt;code&gt;li[(cur + next) % N]&lt;/code&gt;의 값이 -1이 아니면, 즉 제거된 사람이 아니면 결과에 append하고 제거한다(-1로 표시함)&lt;br /&gt;이때 항상 &lt;code&gt;N&lt;/code&gt;으로 나누어 주어 &lt;code&gt;out of range&lt;/code&gt;하지 않도록 주의한다.&lt;br /&gt;&lt;code&gt;cur += K&lt;/code&gt; 해주어 현재 위치를 갱신한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;if li[(cur + next) % N] == -1:
        cur += 1
        continue&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;제거 된 인덱스일 경우엔 &lt;code&gt;cur += 1&lt;/code&gt; 하고 아무것도 하지 않고 &lt;b&gt;건너 뛴다&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;next += 1&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;위의 경우에 하나도 해당하지 않을 경우엔 next를 증가시킨다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;그렇게 다시 N번 루프를 돌면 된다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;1000&quot; data-filename=&quot;blob&quot; width=&quot;600&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBm8tw/btqXHfL1FNQ/lEnRGB2EnFa85XqR8oFbK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBm8tw/btqXHfL1FNQ/lEnRGB2EnFa85XqR8oFbK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBm8tw/btqXHfL1FNQ/lEnRGB2EnFa85XqR8oFbK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBm8tw%2FbtqXHfL1FNQ%2FlEnRGB2EnFa85XqR8oFbK1%2Fimg.png&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;1000&quot; data-filename=&quot;blob&quot; width=&quot;600&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;p&gt;위의 그림의 상황은 3,6,2,7이 제거된 상황이다.&lt;br /&gt;1이 cur이였을때, 현재 -1도 아니고 next가 K-1도 아니므로 next를 증가하고&lt;br /&gt;다음은 두번 다 제거된 인덱스이므로 cur을 두번 증가시킨다.&lt;br /&gt;그렇게 되면 cur+next가 4를 가리키고 4는 -1도 아니므로 next를 1 증가시켜 next가 2가되고 5를 결과에 추가한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;전체 소스코드&lt;/h2&gt;
&lt;h3&gt;풀이&lt;/h3&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;N, K = map(int, input().split())

li = [i for i in range(1, N + 1)]
result = []
cur = 0

for _ in range(N):
    cur %= N
    next = 0

    while True:
        # next가 K가 되면 제거
        if next == K - 1 and li[(cur + next) % N] != -1:
            result.append(li[(cur + next) % N])
            li[(cur + next) % N] = -1
            cur += K
            break
        # 제거 된 인덱스일 경우
        if li[(cur + next) % N] == -1:
            cur += 1
            continue
        # 아무것도 해당하지 않을경우 next증가
        next += 1

print(&quot;&amp;lt;&quot;, end=&quot;&quot;)
for i, n in enumerate(result):
    if i == len(result) - 1:
        print(n, end=&quot;&quot;)
    else:
        print(n, end=&quot;, &quot;)
print(&quot;&amp;gt;&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bgP45B/btqXDfeV7Zz/rk342fPM7hy6xzqkGIolXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgP45B/btqXDfeV7Zz/rk342fPM7hy6xzqkGIolXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgP45B/btqXDfeV7Zz/rk342fPM7hy6xzqkGIolXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgP45B%2FbtqXDfeV7Zz%2Frk342fPM7hy6xzqkGIolXk%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 11866</category>
      <category>요세푸스 문제</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/108</guid>
      <comments>https://developeryuseon.tistory.com/108#entry108comment</comments>
      <pubDate>Wed, 17 Feb 2021 02:10:59 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 10828. 스택 (Python)</title>
      <link>https://developeryuseon.tistory.com/107</link>
      <description>&lt;h1&gt;BOJ 10828. 스택&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10828&quot;&gt;https://www.acmicpc.net/problem/10828&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613458658217&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;10828번: 스택&quot; data-og-description=&quot;첫째 줄에 주어지는 명령의 수 N (1 &amp;le; N &amp;le; 10,000)이 주어진다.&amp;nbsp;둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10828&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10828&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dwDo4R/hyJiEL31Li/4ivySJkM5UXT7AGw7b1G9k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10828&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10828&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dwDo4R/hyJiEL31Li/4ivySJkM5UXT7AGw7b1G9k/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;&gt;10828번: 스택&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 주어지는 명령의 수 N (1 &amp;le; N &amp;le; 10,000)이 주어진다.&amp;nbsp;둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;어려운 문제는 아니나, 파이썬으로 풀이를 할 때 &lt;code&gt;pop()&lt;/code&gt; 함수에 파이썬 내장함수 &lt;code&gt;pop()&lt;/code&gt;을 사용하면 재귀호출을 하는 불상사가 생긴다. 이것이 유일하게? 주의할 점이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 &lt;code&gt;stack_top&lt;/code&gt; 변수로 스택의 사이즈를 관리하고, pop할때는 임시변수에 담았다가 &lt;code&gt;del&lt;/code&gt;을 이용해 리스트에서 삭제하고, 임시변수에 담은것을 return 해 주었다.&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;if len(command) &amp;gt; 1:
        if command[0] == &quot;push&quot;:
            tmp = int(command[1])
            s.push(tmp)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;길이가 1보다 크면 무조건 &lt;code&gt;push&lt;/code&gt;이기때문에 이렇게 해 주었고,&lt;/p&gt;
&lt;p&gt;배열의 첫번째 원소인 &lt;code&gt;command[0]&lt;/code&gt;는 항상 명령어이기 때문에 &lt;code&gt;command[0]&lt;/code&gt;으로 명령어를 판단하는것으로 했다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;import sys

class Stack:
    def __init__(self):
        self.stack = []
        self.stack_top = -1

    def push(self, x: int):
        self.stack.append(x)
        self.stack_top += 1

    def pop(self):
        if self.stack_top == -1:
            return -1
        tmp = self.stack[self.stack_top]
        del self.stack[self.stack_top]
        self.stack_top -= 1
        return tmp

    def size(self):
        return self.stack_top + 1

    def empty(self):
        if self.stack_top == -1:
            return 1
        else:
            return 0

    def top(self):
        if self.stack_top == -1:
            return -1
        return self.stack[self.stack_top]

s = Stack()

N = int(input())
for _ in range(N):
    command = sys.stdin.readline().split()
    if len(command) &amp;gt; 1:
        if command[0] == &quot;push&quot;:
            tmp = int(command[1])
            s.push(tmp)
    else:
        if command[0] == &quot;pop&quot;:
            print(s.pop())
        elif command[0] == &quot;size&quot;:
            print(s.size())
        elif command[0] == &quot;empty&quot;:
            print(s.empty())
        elif command[0] == &quot;top&quot;:
            print(s.top())&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/Hijkz/btqXyMqvYHB/lFqJ5r8sWXj2H92iKEMGGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hijkz/btqXyMqvYHB/lFqJ5r8sWXj2H92iKEMGGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hijkz/btqXyMqvYHB/lFqJ5r8sWXj2H92iKEMGGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHijkz%2FbtqXyMqvYHB%2FlFqJ5r8sWXj2H92iKEMGGK%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 10828</category>
      <category>스택</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/107</guid>
      <comments>https://developeryuseon.tistory.com/107#entry107comment</comments>
      <pubDate>Tue, 16 Feb 2021 15:58:11 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 10816. 숫자 카드 2 (Python)</title>
      <link>https://developeryuseon.tistory.com/106</link>
      <description>&lt;h2&gt;BOJ 10816. 숫자 카드 2&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10816&quot;&gt;10816번: 숫자 카드 2 (acmicpc.net)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613457974268&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;10816번: 숫자 카드 2&quot; data-og-description=&quot;첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 &amp;le; N &amp;le; 500,000)이&amp;nbsp;주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10816&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10816&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/GnDMh/hyJiwAulhT/ULmZ48vh3HYQsKXgMWYnm0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10816&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10816&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/GnDMh/hyJiwAulhT/ULmZ48vh3HYQsKXgMWYnm0/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;&gt;10816번: 숫자 카드 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 &amp;le; N &amp;le; 500,000)이&amp;nbsp;주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;N개의 숫자카드 리스트에서 각 카드가 몇 장 있는지 알아내기 위해서 &lt;code&gt;collections&lt;/code&gt; 모듈의 &lt;code&gt;defaultdict&lt;/code&gt; 을 사용해 각 카드에 적인 정수를 키, 카드의 갯수를 값으로 설정한 딕셔너리를 생성했다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;cards_dict = defaultdict(int)
for n in cards_list:
    cards_dict[n] += 1&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/104&quot;&gt;collections.defaultdict 알아보기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;int&lt;/code&gt;로 초기화 하면 기본값이 0이 되므로 카드가 딕셔너리에 있을때, 없을때 if문으로 구분 할 필요가 없어서 간단하다.&lt;/p&gt;
&lt;p&gt;해당 카드가 등장하면 카드의 정수를 키로 가진 값을 &lt;code&gt;+=1&lt;/code&gt; 해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;마지막으론 포문을 돌며 딕셔너리의 값만 출력해주면 된다. 없으면 0이 출력된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;from sys import stdin
from collections import defaultdict

N = int(input())
cards_list = map(int,stdin.readline().split())
cards_dict = defaultdict(int)
for n in cards_list:
    cards_dict[n] += 1

M = int(input())
nums = map(int,stdin.readline().split())

for n in nums:
    print(cards_dict[n], end=&quot; &quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/JoKX3/btqXrB4u5vj/jOkrEIuPWvUOwKYkqMpaj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JoKX3/btqXrB4u5vj/jOkrEIuPWvUOwKYkqMpaj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JoKX3/btqXrB4u5vj/jOkrEIuPWvUOwKYkqMpaj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJoKX3%2FbtqXrB4u5vj%2FjOkrEIuPWvUOwKYkqMpaj1%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 10816</category>
      <category>숫자카드2</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/106</guid>
      <comments>https://developeryuseon.tistory.com/106#entry106comment</comments>
      <pubDate>Tue, 16 Feb 2021 15:46:44 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 9012. 괄호 (Python)</title>
      <link>https://developeryuseon.tistory.com/105</link>
      <description>&lt;h1&gt;BOJ 9012. 괄호&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9012&quot;&gt;https://www.acmicpc.net/problem/9012&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613457257063&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;9012번: 괄호&quot; data-og-description=&quot;괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 &amp;lsquo;(&amp;rsquo; 와 &amp;lsquo;)&amp;rsquo; 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/9012&quot; data-og-url=&quot;https://www.acmicpc.net/problem/9012&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfeFIc/hyJiDTVi0i/TK5ZBPKLHNngzCPDUrgCUK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9012&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/9012&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfeFIc/hyJiDTVi0i/TK5ZBPKLHNngzCPDUrgCUK/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;&gt;9012번: 괄호&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 &amp;lsquo;(&amp;rsquo; 와 &amp;lsquo;)&amp;rsquo; 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;여는괄호 '(' 면 스택에 담는다.&lt;/li&gt;
&lt;li&gt;닫는괄호 ')' 면 스택에서 &lt;code&gt;pop()&lt;/code&gt;한다.&lt;/li&gt;
&lt;li&gt;만약 중간에 '('가 아닐 때, 스택이 비어있으면 괄호가 맞지 않는 것이므로 답은 &quot;NO&quot;이다.&lt;/li&gt;
&lt;li&gt;루프가 종료되고 스택이 비어있으면 괄호가 맞는 것이므로 &quot;YES&quot;&lt;/li&gt;
&lt;li&gt;루프가 종료되어도 스택에 무언가가 남아있다면 괄호가 맞지 않는 것이므로 &quot;NO&quot;이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;import sys

N = int(input())
for _ in range(N):
    brackets = sys.stdin.readline().rstrip()

    stack = []
    is_valid = True
    for cur in brackets:
        if cur == '(':
            stack.append(cur)
            continue
        if not stack:
            is_valid = False
            break
        if cur == ')':
            stack.pop()
            continue

    if not stack and is_valid == True:
        print(&quot;YES&quot;)
    if stack or is_valid == False:
        print(&quot;NO&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/c8p96j/btqXyMqvbZK/FKRPmTnAqgknjCuyWsWqI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8p96j/btqXyMqvbZK/FKRPmTnAqgknjCuyWsWqI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8p96j/btqXyMqvbZK/FKRPmTnAqgknjCuyWsWqI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8p96j%2FbtqXyMqvbZK%2FFKRPmTnAqgknjCuyWsWqI0%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 9012</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/105</guid>
      <comments>https://developeryuseon.tistory.com/105#entry105comment</comments>
      <pubDate>Tue, 16 Feb 2021 15:34:30 +0900</pubDate>
    </item>
    <item>
      <title>[python] 사전의 기본값 처리 collections.defaultdict</title>
      <link>https://developeryuseon.tistory.com/104</link>
      <description>&lt;h1&gt;사전의 기본값 처리 collections.defaultdict&lt;/h1&gt;
&lt;h2&gt;일반적인 dictionary 기본값 처리&lt;/h2&gt;
&lt;p&gt;숫자 리스트&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;li = [1,1,2,2,2,3,3,5]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;의 출현 횟수를 count하는 경우를 생각해 봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;딕셔너리를 이용해 구할 수 있습니다.&lt;br /&gt;포문을 돌며 딕셔너리에 해당 값이 없을 경우엔 &lt;code&gt;i&lt;/code&gt;가 키인 값을 0으로 초기화 해주고 모든 경우에 &lt;code&gt;+= 1&lt;/code&gt; 해줍니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;
li = [1,1,2,2,2,3,3,5]
dict = {}

for i in li:
    if i not in dict:
        dict[i] = 0
    dict[i] += 1

print(dict)
&quot;&quot;&quot;
{1: 2, 2: 3, 3: 2, 5: 1}
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;if&lt;/code&gt;문을 사용해 존재하지 않는 키에 대한 값을 초기화 해주는 이유는 존재하지 않는 키에 접근했을 경우 다음과 같은 에러가 발생하기 때문입니다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;# 이렇게 할 경우
for i in li:
    dict[i] += 1

&quot;&quot;&quot;
다음과 같은 에러가 발생
    dict[i] += 1
KeyError: 1
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;반면 &lt;code&gt;defaultdict&lt;/code&gt;를 이용하면 if문을 이용한 처리 없이 기본값을 처리 할 수 있습니다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;collections 모듈의 defaultdict&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;collections.defaultdict&lt;/code&gt;는 딕셔너리에 없는 키값을 호출했을 때 오류처리를 하지 않고 default값으로 return 합니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;collections&lt;/code&gt;모듈을 import 하여 사용합니다.&lt;/p&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;from collections import defaultdict
# import collections&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이것을 사용하면 위의 코드보다 훨씬 간결하고 깔끔하게 기본값 처리가 가능합니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from collections import defaultdict

li = [1,1,2,2,2,3,3,5]
dict = defaultdict(int)

for i in li:
    dict[i] += 1

print(dict) # defaultdict(&amp;lt;class 'int'&amp;gt;, {1: 2, 2: 3, 3: 2, 5: 1})&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;기본값 int로 세팅 (또는 lambda: 0)&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;defaultdict&lt;/code&gt;의 기본값을 &lt;code&gt;int&lt;/code&gt;로 세팅하면 &lt;code&gt;int()&lt;/code&gt;는 0을 리턴하기 때문에 기본값을 0으로 세팅이 가능하다. &lt;code&gt;lambda: 0&lt;/code&gt;도 같은 기능을 한다.&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;기본값 list로 세팅&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;list&lt;/code&gt;를 기본값으로 세팅하고 &lt;code&gt;append()&lt;/code&gt;할 경우 해당 키값이 존재하지 않아도 오류를 뿜지 않고 빈 리스트로 세팅해주고 append가 가능하다.&lt;br /&gt;필자는 주로 그래프를 정의해줄 때 쓴다.&lt;br /&gt;1의 자식은 2,3,4 / 2의 자식은 5,6... 이런식으로 활용이 가능하기 때문이다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from collections import defaultdict

&quot;&quot;&quot;
    1
 /\   /\
2  3 4  5
/        \
6         7

&quot;&quot;&quot;
tree = [[1,2],[1,3],[1,4],[1,5],[2,6],[5,7]]
dict = defaultdict(list)

for node in tree:
    dict[node[0]].append(node[1])

print(dict)
# defaultdict(&amp;lt;class 'list'&amp;gt;, {1: [2, 3, 4, 5], 2: [6], 5: [7]})&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;참고 자료&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.daleseo.com/python-collections-defaultdict/&quot;&gt;https://www.daleseo.com/python-collections-defaultdict/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dongdongfather.tistory.com/69&quot;&gt;https://dongdongfather.tistory.com/69&lt;/a&gt;&lt;/p&gt;</description>
      <category>Programming Language/Python</category>
      <category>Collections</category>
      <category>defaultdict</category>
      <category>python</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/104</guid>
      <comments>https://developeryuseon.tistory.com/104#entry104comment</comments>
      <pubDate>Tue, 16 Feb 2021 15:15:04 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1978. 소수 찾기 (Python)</title>
      <link>https://developeryuseon.tistory.com/103</link>
      <description>&lt;h1&gt;BOJ 1978. 소수 찾기&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1978&quot;&gt;https://www.acmicpc.net/problem/1978&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613357390659&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1978번: 소수 찾기&quot; data-og-description=&quot;첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1978&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1978&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fC53J/hyJgtkhLMb/ddPiG2gAr021dYkVKj49L0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1978&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1978&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fC53J/hyJgtkhLMb/ddPiG2gAr021dYkVKj49L0/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;&gt;1978번: 소수 찾기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;입력 받은 수들을 모두 한번씩 소수인지 검사 하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;is_prime()&lt;/code&gt;함수는 간단하다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def is_prime(n) -&amp;gt; bool:
    if n == 1:
        return False

    i = 2
    while i &amp;lt; n:
        if n % i == 0:
            return False
        else:
            i += 1
    return True&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;1은 소수가 아니므로 False 리턴&lt;/li&gt;
&lt;li&gt;무언가로 나눠지면 소수가 아니므로 False 리턴 (자기 자신과는 무조건 나누어 떨어진다! 그러므로 루프를 자기 자신보다 작을때까지 돌린다.)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import sys

def is_prime(n) -&amp;gt; bool:
    if n == 1:
        return False

    i = 2
    while i &amp;lt; n:
        if n % i == 0:
            return False
        else:
            i += 1
    return True

N = int(input())
nums = map(int, sys.stdin.readline().split())

count = 0
for n in nums:
    if is_prime(n) == True:
        count += 1

print(count)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/1JjAe/btqXoaSgotC/rpzKhFOKKqi7HvrHqVXtzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1JjAe/btqXoaSgotC/rpzKhFOKKqi7HvrHqVXtzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1JjAe/btqXoaSgotC/rpzKhFOKKqi7HvrHqVXtzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1JjAe%2FbtqXoaSgotC%2FrpzKhFOKKqi7HvrHqVXtzK%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 1978</category>
      <category>소수찾기</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/103</guid>
      <comments>https://developeryuseon.tistory.com/103#entry103comment</comments>
      <pubDate>Mon, 15 Feb 2021 11:51:07 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1920. 수 찾기 (Python)</title>
      <link>https://developeryuseon.tistory.com/102</link>
      <description>&lt;h1&gt;BOJ 1920. 수 찾기&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1920&quot;&gt;https://www.acmicpc.net/problem/1920&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613323125056&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1920번: 수 찾기&quot; data-og-description=&quot;첫째 줄에 자연수 N(1 &amp;le; N &amp;le; 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], &amp;hellip;, A[N]이 주어진다. 다음 줄에는 M(1 &amp;le; M &amp;le; 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1920&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1920&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/izcEJ/hyJiCNgqee/kzbxBiDtDKS1EucFnRwDAk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1920&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1920&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/izcEJ/hyJiCNgqee/kzbxBiDtDKS1EucFnRwDAk/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;&gt;1920번: 수 찾기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 자연수 N(1 &amp;le; N &amp;le; 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], &amp;hellip;, A[N]이 주어진다. 다음 줄에는 M(1 &amp;le; M &amp;le; 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;이진 탐색(Binary Search)&lt;/b&gt; 으로 풀었다.&lt;br /&gt;이진탐색의 원리는 이러하다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;탐색하고자 하는 리스트를 오름차순으로 정리한다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;target &amp;lt; 중앙값&lt;/code&gt; 이면 target은 중앙값의 왼쪽에 있으므로 end(index)를 &lt;code&gt;중앙값index - 1&lt;/code&gt; 로 설정하고 중앙값의 오른쪽은 버린다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;중앙값 &amp;lt; target&lt;/code&gt; 이면 target은 중앙값의 오른쪽에 있으므로 start(index)를 &lt;code&gt;중앙값index + 1&lt;/code&gt; 로 설정하고 중앙값의 왼쪽은 버린다.&lt;/li&gt;
&lt;li&gt;이를 반복한다.&lt;/li&gt;
&lt;li&gt;중앙값이 target과 일치한다면 found. 종료&lt;/li&gt;
&lt;li&gt;종료되지 못하고 &lt;code&gt;end &amp;lt; start&lt;/code&gt;가 되면 탐색 실패. not found&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import sys
from typing import List

def binary_search(start: int, end: int, A: List, target: int, result: List):
    mid = (start + end) // 2

    # 종료 조건
    if end &amp;lt; start: # not found
        result.append(0)
        return

    if A[mid] == target: # found
        result.append(1)
        return

    if target &amp;lt; A[mid]:
        end = mid - 1
        return binary_search(start, end, A, target, result)

    if A[mid] &amp;lt; target:
        start = mid + 1
        return binary_search(start, end, A, target, result)



N = int(input())
list1 = list(map(int,sys.stdin.readline().rstrip().split()))
M = int(input())
list2 = list(map(int,sys.stdin.readline().rstrip().split()))

result = []
list1.sort()

for n in list2:
    binary_search(0, N-1, list1, n, result)

for n in result:
    print(n)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bVTjif/btqXb21EhH0/cokJc7In1mW49WRVsqQlQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVTjif/btqXb21EhH0/cokJc7In1mW49WRVsqQlQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVTjif/btqXb21EhH0/cokJc7In1mW49WRVsqQlQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVTjif%2FbtqXb21EhH0%2FcokJc7In1mW49WRVsqQlQ1%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>binary search</category>
      <category>BOJ 1920</category>
      <category>이진탐색</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/102</guid>
      <comments>https://developeryuseon.tistory.com/102#entry102comment</comments>
      <pubDate>Mon, 15 Feb 2021 02:19:11 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 11650. 좌표 정렬하기 (Python)</title>
      <link>https://developeryuseon.tistory.com/101</link>
      <description>&lt;h1&gt;BOJ 11650. 좌표 정렬하기&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11650&quot;&gt;https://www.acmicpc.net/problem/11650&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613322551047&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11650번: 좌표 정렬하기&quot; data-og-description=&quot;첫째 줄에 점의 개수 N (1 &amp;le; N &amp;le; 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 &amp;le; xi, yi &amp;le; 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11650&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11650&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bblC0b/hyJgoiNI4R/1g7WkyAwe121WLGapl47bK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11650&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11650&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bblC0b/hyJgoiNI4R/1g7WkyAwe121WLGapl47bK/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;&gt;11650번: 좌표 정렬하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 점의 개수 N (1 &amp;le; N &amp;le; 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 &amp;le; xi, yi &amp;le; 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/98&quot;&gt;BOJ 1181&lt;/a&gt; 과 같은 방법으로 파이썬의 내장함수 &lt;code&gt;sort()&lt;/code&gt;에 &lt;code&gt;key&lt;/code&gt; 파라미터를 (첫번째 기준, 두번째 기준)의 튜플로 넘겨주어 정렬한다.&lt;/p&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;import sys

locations = []

N = int(input())
for _ in range(N):
    (x, y) = map(int, sys.stdin.readline().split())
    locations.append((x,y))

result = sorted(locations, key= lambda x: (x[0],x[1]))

for li in result:
    print(li[0], li[1])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/4nFQQ/btqWX47lhE6/kHcZJpj0pKlEGEZmxhwDY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4nFQQ/btqWX47lhE6/kHcZJpj0pKlEGEZmxhwDY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4nFQQ/btqWX47lhE6/kHcZJpj0pKlEGEZmxhwDY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4nFQQ%2FbtqWX47lhE6%2FkHcZJpj0pKlEGEZmxhwDY0%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/101</guid>
      <comments>https://developeryuseon.tistory.com/101#entry101comment</comments>
      <pubDate>Mon, 15 Feb 2021 02:09:40 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 10814. 나이순 정렬 (Python)</title>
      <link>https://developeryuseon.tistory.com/100</link>
      <description>&lt;h1&gt;BOJ 10814. 나이순 정렬&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10814&quot;&gt;https://www.acmicpc.net/problem/10814&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612967551589&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;10814번: 나이순 정렬&quot; data-og-description=&quot;온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10814&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10814&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bDzkOP/hyJeHn5SxQ/qJaclNuLpKj8hKa1pAxKMK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10814&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10814&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bDzkOP/hyJeHn5SxQ/qJaclNuLpKj8hKa1pAxKMK/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;&gt;10814번: 나이순 정렬&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/98?category=796187&quot;&gt;BOJ.1181 단어정렬&lt;/a&gt; 처럼 파이썬의 내장함수의 &lt;code&gt;sort()&lt;/code&gt;를 이용하면 쉽게 풀 수 있다.&lt;/p&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;for i in range(N):
    tmp = sys.stdin.readline().split()
    tmp.append(i)
    member.append(tmp)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;정렬할때 먼저 가입한 순서가 두번째 기준이 되기 때문에 입력 시에 세번째 원소에 순서도 append해준다. 그렇게 되면&lt;br /&gt;&lt;code&gt;[['21', 'Junkyu', 0], ['21', 'Dohyun', 1], ['20', 'Sunyoung', 2]]&lt;/code&gt;&lt;br /&gt;의 member 리스트가 구성된다.&lt;/p&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;member.sort(key=lambda x: (int(x[0]),x[2]))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;첫번째 기준으로 나이, 두번째 기준으로 가입한 순서를 &lt;code&gt;key&lt;/code&gt;로 오름차순 정렬한다.&lt;/p&gt;
&lt;p&gt;int 변환 필수 ! 주의 !&lt;/p&gt;
&lt;h2&gt;소스 코드&lt;/h2&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;import sys

member = []
N = int(input())
for i in range(N):
    tmp = sys.stdin.readline().split()
    tmp.append(i)
    member.append(tmp)

member.sort(key=lambda x: (int(x[0]),x[2]))
for m in member:
    print(m[0], m[1])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/uYRjA/btqWUMrz80C/jAxkpdEvfL89q8g4WMx7J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uYRjA/btqWUMrz80C/jAxkpdEvfL89q8g4WMx7J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uYRjA/btqWUMrz80C/jAxkpdEvfL89q8g4WMx7J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuYRjA%2FbtqWUMrz80C%2FjAxkpdEvfL89q8g4WMx7J0%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 10814</category>
      <category>나이순 정렬</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/100</guid>
      <comments>https://developeryuseon.tistory.com/100#entry100comment</comments>
      <pubDate>Wed, 10 Feb 2021 23:33:18 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2609. 최대공약수와 최소공배수 (Python)</title>
      <link>https://developeryuseon.tistory.com/99</link>
      <description>&lt;h1&gt;BOJ 2609. 최대공약수와 최소공배수&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2609&quot;&gt;https://www.acmicpc.net/problem/2609&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612965727832&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2609번: 최대공약수와 최소공배수&quot; data-og-description=&quot;첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2609&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2609&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MGJ2s/hyJcQmF7Ec/7KVHJevHTCfqkHw9JMbjBK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2609&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2609&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MGJ2s/hyJcQmF7Ec/7KVHJevHTCfqkHw9JMbjBK/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;&gt;2609번: 최대공약수와 최소공배수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이1) 유클리드 호제법 쓴 풀이&lt;/h2&gt;
&lt;h3&gt;gcd (great common divisor)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;유클리드 호제법: X를 Y로 나눈 나머지 값을 R이라고 했을 때,&lt;br /&gt;X와 Y의 최대공약수는 Y와 R의 최대공약수와 같다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;나머지가 0이 될 때 까지 Y와 R의 나머지 연산을 하면 된다.&lt;br /&gt;문제의 예제로 나와있는 24, 18을 예로 들자면&lt;br /&gt;24 % 18 = 6&lt;br /&gt;18 % 6 = 0&lt;br /&gt;이렇게되면 Y값 자리에 있는 6이 최대공약수가 된다.&lt;br /&gt;이것을 소스코드로 옮기면 이렇게 된다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def gcd(n,m):
    while m:
        n, m = m, n % m
    return n&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;lcm (least common multiple)&lt;/h3&gt;
&lt;p&gt;최소공배수는 두 값을 곱하고 최대공약수로 나눠주면 된다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def lcm(n,m):
    return n * m // gcd(n, m)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;완성된 소스코드는 아래 &quot;소스코드&quot;의 첫번째에 있다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;풀이2) 소인수분해 통한 풀이&lt;/h2&gt;
&lt;p&gt;무식하게 소인수분해를 한 다음 구하는 방법도 있다.&lt;br /&gt;소인수분해 구하는것 연습할 겸 해봤다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def get_prime_factor(n) -&amp;gt; dict:
    dic = collections.defaultdict(int)
    i = 2

    while i &amp;lt;= n:
        if n % i == 0:
            dic[i] += 1
            n = n/i
        else:
            i += 1

    return dic&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;소인수분해한 결과를 딕셔너리에 저장해 주는 함수이다. &lt;code&gt;collections&lt;/code&gt;의 &lt;code&gt;defaultdict&lt;/code&gt;를 이용하면 빈 값을 초기화 하여 에러 없이 사용 가능하다.&lt;/p&gt;
&lt;p&gt;그렇게 되면&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;dict_items([(2, 3), (3, 1)])
dict_items([(2, 1), (3, 2)])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;24, 18에 해당하는 소인수분해 딕셔너리를 얻을 수 있다.&lt;br /&gt;이렇게 구하고 나서 최대공약수는 겹치는 부분중 적은 것, 최소공배수는 둘중에 많은것을 각각 곱해주면 된다. 소스코드는 너무 길어서 아래쪽에만 적어뒀다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;풀이3)&lt;/h2&gt;
&lt;p&gt;원래,, 파이썬의 &lt;code&gt;math&lt;/code&gt;모듈을 이용해서 &lt;code&gt;gcd()&lt;/code&gt;, &lt;code&gt;lcm()&lt;/code&gt;함수로 간단하게 구할 수 있는데 백준에서 돌렸을때 &quot;런타임 에러 (AttributeError)&quot;가 발생한다.&lt;br /&gt;그래서 제출 성공을 못했다 ㅜㅜ 내가 돌렸을땐 잘 돌아가는데 아시는분 알려주세요.. (찾아도 안나와 ㅜㅜ)&lt;br /&gt;어차피 내장 함수를 이용하는 것은 그렇게 좋은 방법은 아니니까(문제 의도가 이것이 아닐 것) 괜찮긴 한데 이유가 궁금..&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;전체 소스코드&lt;/h2&gt;
&lt;h3&gt;1. 유클리드 호제법&lt;/h3&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def gcd(n,m):
    while m:
        n, m = m, n % m
    return n

def lcm(n,m):
    return n * m // gcd(n, m)

N, M = map(int, input().split())

print(gcd(N, M))
print(lcm(N, M))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bmdT7q/btqWOf9p6E0/BWNKKh2MtCPzbmo7g21a6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmdT7q/btqWOf9p6E0/BWNKKh2MtCPzbmo7g21a6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmdT7q/btqWOf9p6E0/BWNKKh2MtCPzbmo7g21a6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmdT7q%2FbtqWOf9p6E0%2FBWNKKh2MtCPzbmo7g21a6k%2Fimg.png&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;2. 소인수 분해&lt;/h3&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import collections

def get_prime_factor(n) -&amp;gt; dict:
    dic = collections.defaultdict(int)
    i = 2

    while i &amp;lt;= n:
        if n % i == 0:
            dic[i] += 1
            n = n/i
        else:
            i += 1

    return dic

N, M = map(int, input().split())

# 소인수분해
N_prime_factor = get_prime_factor(N)
M_prime_factor = get_prime_factor(M)

# 소인수 가짓수 많은것을 M으로 설정
if len(N_prime_factor) &amp;gt; len(M_prime_factor):
    N_prime_factor, M_prime_factor = M_prime_factor, N_prime_factor

great, least = 1, 1 # 곱할꺼니까 1로 초깃값 설정

# 최대공약수 구하기
great_dic = collections.defaultdict(int)
for k in N_prime_factor.keys():
    great_dic[k] = min(N_prime_factor[k], M_prime_factor[k])

for k, v in great_dic.items():
    great *= pow(k,v)

# 최소공배수 구하기
least_dic = collections.defaultdict(int)
for k in M_prime_factor.keys():
    if k not in N_prime_factor:
        least_dic[k] = M_prime_factor[k]
    else:
        least_dic[k] = max(N_prime_factor[k], M_prime_factor[k])

for k, v in least_dic.items():
    least *= pow(k,v)

print(great)
print(least)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/pqycj/btqWWtx1pxu/N9bFA6NVNVc1dwYbZ3ujVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pqycj/btqWWtx1pxu/N9bFA6NVNVc1dwYbZ3ujVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pqycj/btqWWtx1pxu/N9bFA6NVNVc1dwYbZ3ujVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpqycj%2FbtqWWtx1pxu%2FN9bFA6NVNVc1dwYbZ3ujVk%2Fimg.png&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;3. 내장함수 사용&lt;/h3&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import math

N, M = map(int, input().split())
print(math.gcd(N,M))
print(math.lcm(N,M))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 2609</category>
      <category>최대공약수</category>
      <category>최대공약수와 최소공배수</category>
      <category>최소공배수</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/99</guid>
      <comments>https://developeryuseon.tistory.com/99#entry99comment</comments>
      <pubDate>Wed, 10 Feb 2021 23:03:45 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1181. 단어 정렬 (Python)</title>
      <link>https://developeryuseon.tistory.com/98</link>
      <description>&lt;h1&gt;BOJ 1181. 단어 정렬&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1181&quot;&gt;https://www.acmicpc.net/problem/1181&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612958802426&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1181번: 단어 정렬&quot; data-og-description=&quot;첫째 줄에 단어의 개수 N이 주어진다. (1 &amp;le; N &amp;le; 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1181&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1181&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/coa2cY/hyJc4d6bNo/K88kkhdw7ViHqYcqRlzFfK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1181&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1181&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/coa2cY/hyJc4d6bNo/K88kkhdw7ViHqYcqRlzFfK/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;&gt;1181번: 단어 정렬&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 단어의 개수 N이 주어진다. (1 &amp;le; N &amp;le; 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;파이썬의 내장함수 &lt;code&gt;sorted()&lt;/code&gt;나 &lt;code&gt;sort()&lt;/code&gt;를 사용하면 된다.&lt;br /&gt;둘의 차이점은,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sorted()&lt;/code&gt; : 정렬한것을 리턴한다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sort()&lt;/code&gt; : 원본이 정렬 된 것으로 바뀐다. None을 리턴한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주목 할 만한 문법은 &lt;code&gt;key&lt;/code&gt;와 &lt;code&gt;reverse&lt;/code&gt; 파라미터의 사용이겠다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;key&lt;/code&gt; : 정렬 기준 정해줌&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reverse&lt;/code&gt; : default는 &lt;code&gt;True&lt;/code&gt;이며, True는 오름차순, False는 내림차순이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이때 key에 &lt;code&gt;(첫번째 기준, 두번째 기준)&lt;/code&gt; 튜플을 넘겨주면 순서대로 기준이 적용되므로 이 문제에선 이렇게 사용하면 되겠다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/22?category=833436&quot;&gt;&lt;code&gt;lambda&lt;/code&gt;&lt;/a&gt; 사용하면 쉽다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;import sys

words = []

N = int(input())
for _ in range(N):
    words.append(sys.stdin.readline().rstrip())

# 정렬
result = sorted(set(words), key=lambda x:(len(x),x))

# 출력
for s in result: print(s)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/dwFEzT/btqWW9Tv7mY/Khzole1tvXXY9eHFvP1AMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwFEzT/btqWW9Tv7mY/Khzole1tvXXY9eHFvP1AMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwFEzT/btqWW9Tv7mY/Khzole1tvXXY9eHFvP1AMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwFEzT%2FbtqWW9Tv7mY%2FKhzole1tvXXY9eHFvP1AMK%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 1181</category>
      <category>단어 정렬</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/98</guid>
      <comments>https://developeryuseon.tistory.com/98#entry98comment</comments>
      <pubDate>Wed, 10 Feb 2021 21:07:57 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1018. 체스판 다시 칠하기 (Python)</title>
      <link>https://developeryuseon.tistory.com/97</link>
      <description>&lt;h1&gt;BOJ 1018. 체스판 다시 칠하기&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1018&quot;&gt;https://www.acmicpc.net/problem/1018&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612956629869&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1018번: 체스판 다시 칠하기&quot; data-og-description=&quot;첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1018&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1018&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/f4kRR/hyJcVur3Fj/1JQyR1PggKQxFwJBgrx5uk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1018&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1018&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/f4kRR/hyJcVur3Fj/1JQyR1PggKQxFwJBgrx5uk/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;&gt;1018번: 체스판 다시 칠하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;풀이&lt;/h2&gt;
&lt;p&gt;별다른 알고리즘 생각 할 필요 없이 브루트 포스로 풀면 된다.&lt;br /&gt;W로 시작하는 보드, B로 시작하는 보드를 미리 다 만들어 놓고 비교해도 되지만 난 그렇게 풀지는 않았다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;for x in range(N - 8 + 1):
    for y in range(M - 8 + 1):
        W_start = 0
        B_start = 0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;보드에서 8*8 체스판을 고르는 부분이다. &lt;code&gt;W_start&lt;/code&gt;, &lt;code&gt;B_start&lt;/code&gt;는 각각 흰색, 검은색으로 시작했을때 몇개를 다시 칠해야 하는지 count하는 변수이다. 이것을 0으로 정의해준다.&lt;/p&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;for i in range(x, x+8):
            for j in range(y, y+8):&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;잘라낸 8*8체스판에서 W와 B를 판단하기 위함이다. 위의 포문에서 x, y를 정의하는데 여기에 +8 한 값까지 포문을 돌린다.&lt;/p&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;if i%2 == 0 and j%2 == 0: # 짝수 행, 짝수 열
    if board[i][j] != &quot;W&quot;: W_start += 1
    if board[i][j] != &quot;B&quot;: B_start += 1
if i%2 == 0 and j%2 != 0: # 짝수 행, 홀수 열
    if board[i][j] != &quot;B&quot;: W_start += 1
    if board[i][j] != &quot;W&quot;: B_start += 1
if i%2 != 0 and j%2 == 0: # 홀수 행, 짝수 열
    if board[i][j] != &quot;B&quot;: W_start += 1
    if board[i][j] != &quot;W&quot;: B_start += 1
if i%2 != 0 and j%2 != 0: # 홀수 행, 홀수 열
    if board[i][j] != &quot;W&quot;: W_start += 1
    if board[i][j] != &quot;B&quot;: B_start += 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;처음부터 적으려면 헷갈려서, 주석달려있는 줄부터 적고 시작했다.&lt;/p&gt;
&lt;p&gt;if문 안에 W로 시작하는 경우와 B로시작하는 경우 모두를 계산해주었다. 나도 처음부터 코드를 다 작성한게 아니고, 연습장에 써가면서 했다. 너무 헷갈려서.. 행과 열도 헷갈렸다. ㅋㅋㅋ 이렇게 써놓고 하면 덜 헷갈린다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bpWuKA/btqWWtEGYIm/5laECCvBYHs6PdiIUB174K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpWuKA/btqWWtEGYIm/5laECCvBYHs6PdiIUB174K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpWuKA/btqWWtEGYIm/5laECCvBYHs6PdiIUB174K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpWuKA%2FbtqWWtEGYIm%2F5laECCvBYHs6PdiIUB174K%2Fimg.png&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;p&gt;차례대로 차근차근 구해주면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;계산이 다 끝나면&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;result = min(result, W_start, B_start)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;최솟값을 갱신해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;생각 자체는 어려운 문제는 아니였는데, 좌표변수가 하나 꼬이기 시작하면 답이 없다. for문이 네개나 중첩되기때문에 헷갈린다. 처음부터 다 써내려가려고 하지 말고 큰 줄기부터 써주면 덜 헷갈리는것 같다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;전체 소스코드&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import sys

N, M = map(int, input().split())
board = []
result = sys.maxsize

for i in range(N):
    board.append(sys.stdin.readline().rstrip())

for x in range(N - 8 + 1):
    for y in range(M - 8 + 1):
        W_start = 0
        B_start = 0
        for i in range(x, x+8):
            for j in range(y, y+8):
                if i%2 == 0 and j%2 == 0: # 짝수 행, 짝수 열
                    if board[i][j] != &quot;W&quot;: W_start += 1
                    if board[i][j] != &quot;B&quot;: B_start += 1
                if i%2 == 0 and j%2 != 0: # 짝수 행, 홀수 열
                    if board[i][j] != &quot;B&quot;: W_start += 1
                    if board[i][j] != &quot;W&quot;: B_start += 1
                if i%2 != 0 and j%2 == 0: # 홀수 행, 짝수 열
                    if board[i][j] != &quot;B&quot;: W_start += 1
                    if board[i][j] != &quot;W&quot;: B_start += 1
                if i%2 != 0 and j%2 != 0: # 홀수 행, 홀수 열
                    if board[i][j] != &quot;W&quot;: W_start += 1
                    if board[i][j] != &quot;B&quot;: B_start += 1
        result = min(result, W_start, B_start)

print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/zcVmy/btqWWtxTTqa/KPfpjToyvoLkjbVs8K8kS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zcVmy/btqWWtxTTqa/KPfpjToyvoLkjbVs8K8kS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zcVmy/btqWWtxTTqa/KPfpjToyvoLkjbVs8K8kS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzcVmy%2FbtqWWtxTTqa%2FKPfpjToyvoLkjbVs8K8kS1%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 1018</category>
      <category>체스판 다시 칠하기</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/97</guid>
      <comments>https://developeryuseon.tistory.com/97#entry97comment</comments>
      <pubDate>Wed, 10 Feb 2021 20:31:20 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 11050. 이항계수 1 (Python)</title>
      <link>https://developeryuseon.tistory.com/96</link>
      <description>&lt;h1&gt;BOJ 11050. 이항계수 1&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11050&quot;&gt;https://www.acmicpc.net/problem/11050&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612938671176&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11050번: 이항 계수 1&quot; data-og-description=&quot;첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 &amp;le; \(N\) &amp;le; 10, 0 &amp;le; \(K\) &amp;le; \(N\))&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11050&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11050&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fhzM2/hyJcPnCvfw/N19xC0Xtuivm6Hm73TIn5K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11050&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11050&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fhzM2/hyJcPnCvfw/N19xC0Xtuivm6Hm73TIn5K/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;&gt;11050번: 이항 계수 1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 &amp;le; \(N\) &amp;le; 10, 0 &amp;le; \(K\) &amp;le; \(N\))&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;문제 풀이&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%9D%B4%ED%95%AD_%EA%B3%84%EC%88%98&quot;&gt;이항계수 위키백과&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;조합론에서, 이항 계수(二項係數, 영어: binomial coefficient)는 이항식을 이항 정리로 전개했을 때 각 항의 계수이며, 주어진 크기의 (순서 없는) 조합의 가짓수이다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;고등학교때 배웠던 조합 구하는 공식인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/R08e4/btqWLYlP5e0/c9lZ9k79lhGFQ4j4ugYBMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R08e4/btqWLYlP5e0/c9lZ9k79lhGFQ4j4ugYBMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R08e4/btqWLYlP5e0/c9lZ9k79lhGFQ4j4ugYBMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR08e4%2FbtqWLYlP5e0%2Fc9lZ9k79lhGFQ4j4ugYBMk%2Fimg.png&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;p&gt;이것으로 구하면 되고, 재귀를 이용해서 풀었다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;def factorial(n):
    if n == 1 or n == 0:
        return 1
    return n*factorial(n-1)

N, K = map(int, input().split())

print(factorial(N)//(factorial(K)*factorial(N-K)))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/6uNqc/btqWTW8lqu1/NYRpfLhIx07LjqfAVoVlr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6uNqc/btqWTW8lqu1/NYRpfLhIx07LjqfAVoVlr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6uNqc/btqWTW8lqu1/NYRpfLhIx07LjqfAVoVlr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6uNqc%2FbtqWTW8lqu1%2FNYRpfLhIx07LjqfAVoVlr0%2Fimg.png&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;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/96</guid>
      <comments>https://developeryuseon.tistory.com/96#entry96comment</comments>
      <pubDate>Wed, 10 Feb 2021 15:32:05 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2798. 블랙잭 (Python)</title>
      <link>https://developeryuseon.tistory.com/95</link>
      <description>&lt;h1&gt;BOJ 2798. 블랙잭&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2798&quot;&gt;https://www.acmicpc.net/problem/2798&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612926124911&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2798번: 블랙잭&quot; data-og-description=&quot;첫째 줄에 카드의 개수 N(3 &amp;le;&amp;nbsp;N &amp;le;&amp;nbsp;100)과 M(10 &amp;le;&amp;nbsp;M &amp;le;&amp;nbsp;300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2798&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2798&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/e6SA9/hyJetJS69F/vrzasJ9BwKQInFsFo1vMTK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2798&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2798&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/e6SA9/hyJetJS69F/vrzasJ9BwKQInFsFo1vMTK/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;&gt;2798번: 블랙잭&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 카드의 개수 N(3 &amp;le;&amp;nbsp;N &amp;le;&amp;nbsp;100)과 M(10 &amp;le;&amp;nbsp;M &amp;le;&amp;nbsp;300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;p&gt;포문을 세번 돌려서 브루트-포스로도 풀 수는 있지만 효율적이지 않으니 패스.&lt;/p&gt;
&lt;p&gt;나는 &lt;b&gt;투포인터&lt;/b&gt; 로 풀었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;입력받은 &lt;code&gt;nums&lt;/code&gt;리스트를 오름차순으로 정렬한다.(중요한 작업)&lt;/li&gt;
&lt;li&gt;0~N-2 까지 for문을 돌린다.&lt;/li&gt;
&lt;li&gt;left포인터는 i번째 바로 다음, right포인터는 끝을 가리킨다.&lt;/li&gt;
&lt;li&gt;left &amp;lt; right인 동안 sum이 M보다 크면 right포인터를 1 감소시켜 sum을 작게 만들도록 한다. sum이 M보다 작으면 &lt;code&gt;max_sum&lt;/code&gt;을 갱신하고 left포인터를 증가시켜 sum을 크게 만든다.&lt;/li&gt;
&lt;li&gt;이때 sum이 M과 같으면 프린트 해버리고 종료시킨다.&lt;/li&gt;
&lt;li&gt;모든 경우의 수를 검사하고 나서 max_sum을 print한다.(max_sum이 M이여서 강제 종료 된 경우 빼고)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/cB832u/btqWOgZIUV2/oJPuna2Mi0kFtW6kuERSfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB832u/btqWOgZIUV2/oJPuna2Mi0kFtW6kuERSfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB832u/btqWOgZIUV2/oJPuna2Mi0kFtW6kuERSfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB832u%2FbtqWOgZIUV2%2FoJPuna2Mi0kFtW6kuERSfK%2Fimg.png&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;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;import sys

N, M = map(int,(sys.stdin.readline().strip().split()))
nums = list(map(int, sys.stdin.readline().strip().split()))

max_sum = 0
nums.sort()

for i in range(0, N-2):
    left = i + 1
    right = len(nums) - 1

    while left &amp;lt; right:
        sum = nums[i] + nums[left] + nums[right]
        if sum &amp;lt; M:
            max_sum = max(max_sum, sum)
            left += 1
        elif sum &amp;gt; M:
            right -= 1
        else:
            print(M)
            sys.exit(0)

print(max_sum)&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/r6KsO/btqWKkJF8Ai/FMeRIpmCM871h1AXqokN81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r6KsO/btqWKkJF8Ai/FMeRIpmCM871h1AXqokN81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r6KsO/btqWKkJF8Ai/FMeRIpmCM871h1AXqokN81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr6KsO%2FbtqWKkJF8Ai%2FFMeRIpmCM871h1AXqokN81%2Fimg.png&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;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;sys.exit(0)&lt;/h4&gt;
&lt;p&gt;while문을 두번 빠져나오게 할 수 없어 사용했다. &lt;code&gt;sys.exit(1)&lt;/code&gt;도 종료는 되지만 비정상적인 종료로 인해서 &quot;런타임에러(NZEC)&quot;(not zero exit code) 를 뿜게 되니 &lt;code&gt;sys.exit(0)&lt;/code&gt;을 쓰면 된다.&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/95</guid>
      <comments>https://developeryuseon.tistory.com/95#entry95comment</comments>
      <pubDate>Wed, 10 Feb 2021 12:15:53 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1259. 팰린드롬 수 (Python)</title>
      <link>https://developeryuseon.tistory.com/94</link>
      <description>&lt;h1&gt;BOJ 1259. 팰린드롬 수&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1259&quot;&gt;https://www.acmicpc.net/problem/1259&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612889465313&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1259번: 팰린드롬수&quot; data-og-description=&quot;입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1259&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1259&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cmyRwC/hyJcQmgAiU/CxsRFlrAM051ToKxYklRx0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1259&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1259&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cmyRwC/hyJcQmgAiU/CxsRFlrAM051ToKxYklRx0/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;&gt;1259번: 팰린드롬수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;p&gt;팰린드롬이란 앞 뒤가 같은 것이다. 토마토, 기러기 같은.&lt;/p&gt;
&lt;p&gt;앞에서부터 뽑고, 뒤에서부터 뽑은것이 끝까지 일치한다면 이것은 팰린드롬 수 일것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1362&quot; data-origin-height=&quot;1000&quot; data-filename=&quot;blob&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XilkL/btqWBArM8bJ/o1UnbJAK15S6RsjMFtJNW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XilkL/btqWBArM8bJ/o1UnbJAK15S6RsjMFtJNW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XilkL/btqWBArM8bJ/o1UnbJAK15S6RsjMFtJNW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXilkL%2FbtqWBArM8bJ%2Fo1UnbJAK15S6RsjMFtJNW1%2Fimg.png&quot; data-origin-width=&quot;1362&quot; data-origin-height=&quot;1000&quot; data-filename=&quot;blob&quot; width=&quot;500&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;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한번이라도 일치하지 않는다면 그것은 팰린드롬 수가 아니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;0이 나올때까지 &lt;code&gt;While&lt;/code&gt;문을 돌며 input한것을 &lt;code&gt;deque&lt;/code&gt;에 저장한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이때 그냥 &lt;code&gt;list&lt;/code&gt;를 사용하지 않고 덱을 쓰는 이유는, 파이썬의 리스트에서 &lt;code&gt;.pop(0)&lt;/code&gt;을하면 시간복잡도가 O(n)이 되기 때문이다. 따라서 앞, 뒤에서 pop할수있는 deque를 사용하면 실행 시간을 줄일 수 있다.&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;case = sys.stdin.readline().strip()

if case == &quot;0&quot;:
    break

deq = collections.deque(list(map(int,case)))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;덱에 input한것을 담고 나서 다시 while문을 돈다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;code&gt;len(deq)&lt;/code&gt;이 1이 될 때까지 break하지 않으면 이것은 길이가 홀수인 팰린드롬수이니 &quot;yes&quot;를 프린트하고 while문을 종료한다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;if len(deq) == 1:
    print(&quot;yes&quot;)
    break&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한번이라도 일치하지 않으면 &quot;no&quot;를 출력하고, &lt;code&gt;len(deq)&lt;/code&gt;이 0이면서 left와 right가 일치하면 이것은 길이가 짝수인 팰린드롬수이기 때문에 &quot;yes&quot;를 프린트하고 while문을 종료한다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;left = deq.popleft()
right = deq.pop()

if left != right:
    print(&quot;no&quot;)
    break

if left == right and len(deq) == 0:
    print(&quot;yes&quot;)
    break&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;Solution 1&lt;/h2&gt;
&lt;pre class=&quot;swift&quot;&gt;&lt;code&gt;import sys
import collections

while True:
    case = sys.stdin.readline().strip()

    if case == &quot;0&quot;:
        break

    deq = collections.deque(list(map(int,case)))

    while True:
        if len(deq) == 1:
            print(&quot;yes&quot;)
            break

        left = deq.popleft()
        right = deq.pop()

        if left != right:
            print(&quot;no&quot;)
            break

        if left == right and len(deq) == 0:
            print(&quot;yes&quot;)
            break&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bibfof/btqWBzsSv9t/bq36EnVreqoyAs7KgqlvN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bibfof/btqWBzsSv9t/bq36EnVreqoyAs7KgqlvN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bibfof/btqWBzsSv9t/bq36EnVreqoyAs7KgqlvN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbibfof%2FbtqWBzsSv9t%2Fbq36EnVreqoyAs7KgqlvN0%2Fimg.png&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;여기서부턴 좀 편법인데,,,&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Solution 2&lt;/h3&gt;
&lt;pre id=&quot;code_1612890378554&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

while True:
    case = sys.stdin.readline().strip()

    if case == &quot;0&quot;:
        break
    
    case = list(case)

    if case == list(reversed(case)):
        print(&quot;yes&quot;)
    else:
        print(&quot;no&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/LuN0q/btqWGKU8zzn/GWkKLu2kSZxkPyLDs5EHN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LuN0q/btqWGKU8zzn/GWkKLu2kSZxkPyLDs5EHN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LuN0q/btqWGKU8zzn/GWkKLu2kSZxkPyLDs5EHN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLuN0q%2FbtqWGKU8zzn%2FGWkKLu2kSZxkPyLDs5EHN1%2Fimg.png&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;p&gt;파이썬 내장함수인 reverse()나 reversed()를 사용해서 풀 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Solution 3&lt;/h3&gt;
&lt;pre id=&quot;code_1612890529769&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

while True:
    case = sys.stdin.readline().strip()

    if case == &quot;0&quot;:
        break

    if case == case[::-1]:
        print(&quot;yes&quot;)
    else:
        print(&quot;no&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bNlVBX/btqWNc38y0T/oAeZaJf3OtcnvxRB6vak01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNlVBX/btqWNc38y0T/oAeZaJf3OtcnvxRB6vak01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNlVBX/btqWNc38y0T/oAeZaJf3OtcnvxRB6vak01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNlVBX%2FbtqWNc38y0T%2FoAeZaJf3OtcnvxRB6vak01%2Fimg.png&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;p&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/40&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Python의 슬라이싱&lt;/a&gt;을 이용해서 풀 수도 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만 이게 코딩테스트나 면접에서 나온다고 하면 2,3처럼 풀면 안될거같다 .. ㅎㅎ 고로 1처럼 푸는 방법을 알아야 할 것이다.&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 1259</category>
      <category>팰린드롬 수</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/94</guid>
      <comments>https://developeryuseon.tistory.com/94#entry94comment</comments>
      <pubDate>Wed, 10 Feb 2021 01:53:26 +0900</pubDate>
    </item>
    <item>
      <title>백준 에러 난 이유 궁금할 때</title>
      <link>https://developeryuseon.tistory.com/93</link>
      <description>&lt;p&gt;leetcode 풀 때는 에러 메시지랑 test case까지 보여줘서 문제점이 뭔지 바로 알 수 있었는데 백준은 &quot;런타임 에러&quot; 이렇게만 알려주고 아무것도 알려주지 않는다 ㅜㅜ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그럴때,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ideone.com/&quot;&gt;https://ideone.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612888194352&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Ideone.com&quot; data-og-description=&quot;Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.&quot; data-og-host=&quot;ideone.com&quot; data-og-source-url=&quot;https://ideone.com/&quot; data-og-url=&quot;https://ideone.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ideone.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ideone.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Ideone.com&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ideone.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;여기서 해당 코드를 입력하고 언러를 선택한 뒤 돌려보면,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/FKrwN/btqWzt7vl6v/T7zm5IijERktTmTGoMKEZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FKrwN/btqWzt7vl6v/T7zm5IijERktTmTGoMKEZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FKrwN/btqWzt7vl6v/T7zm5IijERktTmTGoMKEZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFKrwN%2FbtqWzt7vl6v%2FT7zm5IijERktTmTGoMKEZ0%2Fimg.png&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;p&gt;무엇이 문제인지 알 수 있다!&lt;/p&gt;</description>
      <category>Dev. etc</category>
      <category>ideone</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/93</guid>
      <comments>https://developeryuseon.tistory.com/93#entry93comment</comments>
      <pubDate>Wed, 10 Feb 2021 01:31:15 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 10250. ACM 호텔 (Python)</title>
      <link>https://developeryuseon.tistory.com/92</link>
      <description>&lt;h1&gt;BOJ 10250. ACM 호텔&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10250&quot;&gt;https://www.acmicpc.net/problem/10250&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612888621856&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;10250번: ACM 호텔&quot; data-og-description=&quot;프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10250&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10250&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPC4Kg/hyJesqwMby/8xsMdSxIzHZJUSc6ptPL0k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b2xRLo/hyJeBntrhE/lDIaXG7IHHjhkuVGKNXkc1/img.png?width=521&amp;amp;height=312&amp;amp;face=0_0_521_312,https://scrap.kakaocdn.net/dn/c7y6jW/hyJeFKaNfk/bBpYwfURkJC38T2xcO5fWk/img.png?width=294&amp;amp;height=202&amp;amp;face=0_0_294_202&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10250&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10250&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPC4Kg/hyJesqwMby/8xsMdSxIzHZJUSc6ptPL0k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b2xRLo/hyJeBntrhE/lDIaXG7IHHjhkuVGKNXkc1/img.png?width=521&amp;amp;height=312&amp;amp;face=0_0_521_312,https://scrap.kakaocdn.net/dn/c7y6jW/hyJeFKaNfk/bBpYwfURkJC38T2xcO5fWk/img.png?width=294&amp;amp;height=202&amp;amp;face=0_0_294_202');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;10250번: ACM 호텔&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;예를 들면 102 호 방보다는 301 호 방을 더 선호하는데, 102 호는 거리 2 만큼 걸어야 하지만 301 호는 거리 1 만큼만 걸으면 되기 때문이다. 같은 이유로 102 호보다 2101 호를 더 선호한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;엘리베이터로 이동하는 거리는 무시한다고 했다. 그러면 방이 배정되는 순서는 101, 201, 301, 401,,, 다음은 102, 202, 302,, 이렇게 될 것이다.&lt;/p&gt;
&lt;p&gt;왜냐? Y01호들은 모두 이동거리가 1이다. 엘리베이터로 이동하는거리는 무시하니까. 그렇다면 이동거리가 1인 방부터 배정해야 한다. 걷는 거리가 같을 때에는 아래층의 방을 더 선호하기 때문에 아래부터 배정한다.&lt;/p&gt;
&lt;p&gt;그럼 이렇게 된다. (H가 10일때.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/67352902/107385907-aeccde80-6b36-11eb-9aeb-20cbebb7618a.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;H=6, N=10일땐 6번째 손님까지 Y01호에 채우고, 그다음 7번째 손님은 102, 8번째는 202, 9번째는 302, 10번째는 402이므로 답은 402가 되겠다.&lt;/p&gt;
&lt;p&gt;그리고 여기서 W는 전혀.. 신경 쓸 필요가 없다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기까지 하면 눈치를 챌것인데, 호수는 &lt;code&gt;층수 + 엘베부터 거리&lt;/code&gt; 이렇게 구성되어 있으니&lt;/p&gt;
&lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;호수 = (N나누기 H의 나머지) + (몫 + 1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 된다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;q = N // H # 몫
c = N % H # 나머지

print(c*100 + q+1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;주의 할 점은 나머지가 0일때, 즉 높이 H와 몇번째 손님 N이 같을때, 최상위 층에 손님이 머물게 되는데 이때 호수는 H층H호 이므로 나머지0을 H로 바꿔준다.&lt;/p&gt;
&lt;p&gt;또한 나머지가 0일때, 손님은 꼭대기 층에 배정받으니 다음 줄로 넘어가지 않는다. 그래서 q-1을 해준다. (마지막에 q+1 해주어 print하기 때문에 미리 -1 하여 증가하지 않게 해주는 것)&lt;/p&gt;
&lt;pre class=&quot;nix&quot;&gt;&lt;code&gt;if c == 0:
    c = H
    q -= 1&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;nix&quot;&gt;&lt;code&gt;import sys

T = int(input())
for _ in range(0, T):
    H, W, N = map(int, sys.stdin.readline().split())
    # 방 호수는 &quot;나머지 + 몫+1&quot; 로 구성됨
    q = N // H
    c = N % H

    # 맨 꼭대기 층일때, 나누어 떨어질때
    if c == 0:
        c = H
        q -= 1

    print(c*100 + q+1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/dfi21v/btqWKjpqAQe/seOk76T9AXi9G4w93dHLFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfi21v/btqWKjpqAQe/seOk76T9AXi9G4w93dHLFk/img.png&quot; data-alt=&quot;아래가 sys.stdin.readline()으로 입력 받은 것 / 위는 동일한 코드에 input() 사용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfi21v/btqWKjpqAQe/seOk76T9AXi9G4w93dHLFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdfi21v%2FbtqWKjpqAQe%2FseOk76T9AXi9G4w93dHLFk%2Fimg.png&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;figcaption&gt;아래가 sys.stdin.readline()으로 입력 받은 것 / 위는 동일한 코드에 input() 사용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;input 받을 때 &lt;code&gt;sys.stdin.readline()&lt;/code&gt;을 사용하면 시간을 좀 줄일 수 있다. 이에 대한 내용은&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/90?category=833436&quot;&gt;[Python] input()과 sys.stdin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;에 있다.&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>ACM호텔</category>
      <category>BOJ 10250</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/92</guid>
      <comments>https://developeryuseon.tistory.com/92#entry92comment</comments>
      <pubDate>Wed, 10 Feb 2021 00:45:04 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 1085. 직사각형에서 탈출 (Python)</title>
      <link>https://developeryuseon.tistory.com/91</link>
      <description>&lt;h1&gt;BOJ 1085. 직사각형에서 탈출&lt;/h1&gt;
&lt;figure id=&quot;og_1612858253151&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1085번: 직사각형에서 탈출&quot; data-og-description=&quot;한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1085&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1085&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lpU6x/hyJcQsN5qC/xJPHtAaDg2YXgKkrscHx71/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1085&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lpU6x/hyJcQsN5qC/xJPHtAaDg2YXgKkrscHx71/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;&gt;1085번: 직사각형에서 탈출&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;x, y, w, h = map(int, input().split())
print(min(w-x, h-y, x, y))&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;import sys

x, y, w, h = map(int, sys.stdin.readline().split())
print(min(w-x, h-y, x, y))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;문득 &lt;code&gt;sys.stdin.readline()&lt;/code&gt;을 사용하면 &lt;code&gt;input()&lt;/code&gt;보다 더 빠른 속도를 낼 수 있다고 한게 생각나서 공부하고 정리해 보았다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1612858260462&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Python] input()과 sys.stdin&quot; data-og-description=&quot;sys.stdin 알고리즘 문제를 풀 때, 파이썬의 input() 은 실행시간이 느려서 자주 시간초과가 난다. 이럴때 sys 모듈의 stdin 을 사용하면 더 빠르게 input이 가능하다.. 고 하는데, 나는 input() 과 sys.stdin 의&quot; data-og-host=&quot;developeryuseon.tistory.com&quot; data-og-source-url=&quot;https://developeryuseon.tistory.com/90?category=833436&quot; data-og-url=&quot;https://developeryuseon.tistory.com/90&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/h2FTx/hyJcUBXXOP/fxmc4nXK5c3Ye02JJk3tO1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Zmg41/hyJcTXnrT1/53HGDxBcatHCQE84QhVHvK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/90?category=833436&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developeryuseon.tistory.com/90?category=833436&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/h2FTx/hyJcUBXXOP/fxmc4nXK5c3Ye02JJk3tO1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Zmg41/hyJcTXnrT1/53HGDxBcatHCQE84QhVHvK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[Python] input()과 sys.stdin&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;sys.stdin 알고리즘 문제를 풀 때, 파이썬의 input() 은 실행시간이 느려서 자주 시간초과가 난다. 이럴때 sys 모듈의 stdin 을 사용하면 더 빠르게 input이 가능하다.. 고 하는데, 나는 input() 과 sys.stdin 의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developeryuseon.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/dhkl76/btqWKjCtefe/wFBKzdrPx5dYwIX4dQP6h0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhkl76/btqWKjCtefe/wFBKzdrPx5dYwIX4dQP6h0/img.png&quot; data-alt=&quot;이 문제에선 입력값이 적어서 별로 차이는 안난다 ㅎㅎ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhkl76/btqWKjCtefe/wFBKzdrPx5dYwIX4dQP6h0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdhkl76%2FbtqWKjCtefe%2FwFBKzdrPx5dYwIX4dQP6h0%2Fimg.png&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;figcaption&gt;이 문제에선 입력값이 적어서 별로 차이는 안난다 ㅎㅎ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/91</guid>
      <comments>https://developeryuseon.tistory.com/91#entry91comment</comments>
      <pubDate>Tue, 9 Feb 2021 17:11:57 +0900</pubDate>
    </item>
    <item>
      <title>[Python] input()과 sys.stdin</title>
      <link>https://developeryuseon.tistory.com/90</link>
      <description>&lt;h1&gt;sys.stdin&lt;/h1&gt;
&lt;p&gt;알고리즘 문제를 풀 때, 파이썬의 &lt;code&gt;input()&lt;/code&gt;은 실행시간이 느려서 자주 시간초과가 난다. 이럴때 &lt;code&gt;sys&lt;/code&gt;모듈의 &lt;code&gt;stdin&lt;/code&gt;을 사용하면 더 빠르게 input이 가능하다.. 고 하는데, 나는&amp;nbsp; &lt;code&gt;input()&lt;/code&gt;과 &lt;code&gt;sys.stdin&lt;/code&gt;의 차이점을 알고싶었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;input() vs sys.stdin&lt;/h2&gt;
&lt;h3&gt;input()&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;input()&lt;/code&gt; 파이썬의 내장함수이고, 공식 문서의 'Built in function'에가면 해당 내용을 읽어 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.python.org/3/library/functions.html#input&quot;&gt;input()에 대한 파이썬 공식 문서&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;대충&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;prompt에 argument가 존재하면, 개행 없이 표준 출력에 쓰여진다.&lt;br /&gt;&lt;code&gt;input()&lt;/code&gt;은 입력으로부터 한 줄을 읽은 뒤, 그것을 (개행을 지우고) 문자열로 변환한 후 return 한다. EOF(End of file)을 읽으면 EOF에러를 일으킨다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;이런 뜻이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;따라서 &lt;code&gt;input()&lt;/code&gt;은&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;input -&amp;gt; 개행문자를 벗겨 내어 -&amp;gt; 문자열로 변환 -&amp;gt; return&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;의 절차를 거친다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;sys.stdin&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.python.org/3.10/library/sys.html#sys.stdin&quot;&gt;sys의 stdin에 대한 파이썬 공식 문서&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;File objects used by the interpreter for standard input, output and errors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;stdin is used for all interactive input (including calls to input());&lt;/p&gt;
&lt;p&gt;stdin은 모든 상호작용하는 입력에 사용된다.(input()으로 인한 call도 포함한다.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;stdout is used for the output of print() and &amp;gt; - expression statements and for the prompts of input();&lt;/p&gt;
&lt;p&gt;stdout은 print()로 인한 출력과 표현식으로 인한 출력, 그리고 input()의 prompt에 대한 출력에 사용된다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The interpreter&amp;rsquo;s own prompts and its error messages go to stderr.&lt;/p&gt;
&lt;p&gt;인터프리터 그 자신의 prompt와 에러메세지는 표준 에러로 전송된다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;내장함수인 &lt;code&gt;input()&lt;/code&gt;과 달리 &lt;code&gt;sys.stdin&lt;/code&gt;은 file object이다.&lt;br /&gt;사용자의 입력을 받는 buffer를 만들어 그 buffer에서 읽어들이는 것이다.&lt;/p&gt;
&lt;h3&gt;그래서,&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;input()&lt;/code&gt;은 &lt;code&gt;raw_input()&lt;/code&gt;을 evaluate 한 결과를 반환하고 &lt;code&gt;sys.stdin.readline()&lt;/code&gt;은 한 줄의 문자열을 반환한다.&lt;/p&gt;
&lt;p&gt;캐릭터 단위로 읽어들이는것이 (input(), Scanner() - Java)이기때문에 한번에 읽어와 &lt;b&gt;버퍼&lt;/b&gt;에 보관하고 사용자가 요구할 때 버퍼에서 읽어오게 하는 것 (sys.stdin, BufferedReader())이 더 빠르다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;사용 예제&lt;/h2&gt;
&lt;p&gt;sys모듈을 import하여 사용한다.&lt;/p&gt;
&lt;pre class=&quot;elm&quot;&gt;&lt;code&gt;import sys&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;sys.stdin - 여러줄 입력 받을 때&lt;/h3&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;nums = []
for line in sys.stdin:
    nums.append(line)

print(nums)
&quot;&quot;&quot;
1
2
3
4
5
^Z
['1\n', '2\n', '3\n', '4\n', '5\n']
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;sys.stdin&lt;/code&gt;은 &lt;code&gt;^Z&lt;/code&gt;를 입력받으면 종료되며, 위 결과에서 보다시피 개행문자까지 입력되는걸 볼 수 있다.&lt;br /&gt;따라서 &lt;code&gt;strip()&lt;/code&gt;이나 &lt;code&gt;rstrip()&lt;/code&gt;으로 제거해 주어야 한다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;nums.append(line.strip())
&quot;&quot;&quot;
1
2
3
4
5
^Z
['1', '2', '3', '4', '5']
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;sys.stdin.readline() - 한 줄 입력&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;x, y = sys.stdin.readline().split()

print(&quot;x = &quot;, x)
print(&quot;y = &quot;, y)
&quot;&quot;&quot;
x =  1
y =  2
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;sys.stdin.readline() 사용한 여러줄 입력&lt;/h4&gt;
&lt;p&gt;for문을 사용하면 된다.&lt;br /&gt;백준에서 입력값의 갯수를 N으로 주는 경우가 많은데, 그런 경우는 리스트 컴프리헨션을 이용하여&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;N = input()
a = [sys.stdin.readline() for _ in range(N)]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 간단하게도 사용 가능하다.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;참고자료&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.python.org/3/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;파이썬 공식문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://velog.io/@gouz7514/%ED%8C%8C%EC%9D%B4%EC%8D%AC-input-vs-sys.stdin.readline&quot;&gt;https://velog.io/@gouz7514/%ED%8C%8C%EC%9D%B4%EC%8D%AC-input-vs-sys.stdin.readline-&amp;nbsp;&lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://www.acmicpc.net/board/view/855&quot;&gt;https://www.acmicpc.net/board/view/855&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://countingalaxy.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%9E%85%EB%A0%A5%EA%B3%BC-%EC%B6%9C%EB%A0%A5&quot;&gt;https://countingalaxy.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%9E%85%EB%A0%A5%EA%B3%BC-%EC%B6%9C%EB%A0%A5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming Language/Python</category>
      <category>input()</category>
      <category>python</category>
      <category>sys.stdin</category>
      <category>sys.stdin.readline()</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/90</guid>
      <comments>https://developeryuseon.tistory.com/90#entry90comment</comments>
      <pubDate>Tue, 9 Feb 2021 17:02:22 +0900</pubDate>
    </item>
    <item>
      <title>Leetcode 104. Maximum Depth of Binary Tree</title>
      <link>https://developeryuseon.tistory.com/89</link>
      <description>&lt;h1&gt;Leetcode 104. Maximum Depth of Binary Tree&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://leetcode.com/problems/maximum-depth-of-binary-tree/&quot;&gt;https://leetcode.com/problems/maximum-depth-of-binary-tree/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612751201823&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Maximum Depth of Binary Tree - LeetCode&quot; data-og-description=&quot;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/maximum-depth-of-binary-tree/&quot; data-og-url=&quot;https://leetcode.com/problems/maximum-depth-of-binary-tree/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dhulFV/hyJcWMf3Lp/xyvmErhoBpMBcA6iA8Ztlk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260,https://scrap.kakaocdn.net/dn/dvqvfs/hyJcZoGuIR/AaklYO104uBATWeDqxKKPk/img.jpg?width=422&amp;amp;height=292&amp;amp;face=0_0_422_292&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/maximum-depth-of-binary-tree/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/maximum-depth-of-binary-tree/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dhulFV/hyJcWMf3Lp/xyvmErhoBpMBcA6iA8Ztlk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260,https://scrap.kakaocdn.net/dn/dvqvfs/hyJcZoGuIR/AaklYO104uBATWeDqxKKPk/img.jpg?width=422&amp;amp;height=292&amp;amp;face=0_0_422_292');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Maximum Depth of Binary Tree - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/74?category=833437&quot;&gt;BFS구현(Python)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;처음엔 보통 bfs 처럼 &lt;code&gt;while&lt;/code&gt;문을 돌고 depth를 하나씩 늘려줬는데&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;while queue:
            depth += 1
            cur = queue.popleft()
            if cur.left:
                queue.append(cur.left)
            if cur.right:
                queue.append(cur.right)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 하면 depth가 노드갯수만큼 증가하게 된다.(당연하지만.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D4KkI/btqV0FgMSny/epWcZxGH9S3gLUnXNOb5l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D4KkI/btqV0FgMSny/epWcZxGH9S3gLUnXNOb5l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D4KkI/btqV0FgMSny/epWcZxGH9S3gLUnXNOb5l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD4KkI%2FbtqV0FgMSny%2FepWcZxGH9S3gLUnXNOb5l1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;500&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;p&gt;따라서 원래의 while문 아래에 for문을 추가해 새로운 레벨로 들어갔을때만 depth가 증가하게 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;1000&quot; data-filename=&quot;blob&quot; width=&quot;500&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJrNo8/btqWc8BGJ9T/4GuZElMeIwMnduLob5xxs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJrNo8/btqWc8BGJ9T/4GuZElMeIwMnduLob5xxs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJrNo8/btqWc8BGJ9T/4GuZElMeIwMnduLob5xxs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJrNo8%2FbtqWc8BGJ9T%2F4GuZElMeIwMnduLob5xxs0%2Fimg.png&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;1000&quot; data-filename=&quot;blob&quot; width=&quot;500&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;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;import collections

# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def maxDepth(self, root: TreeNode) -&amp;gt; int:
        # 예외 처리
        if root is None:
            return 0

        queue = collections.deque([root])
        depth = 0

        while queue:
            depth += 1
            for _ in range(len(queue)):
                cur = queue.popleft()
                if cur.left:
                    queue.append(cur.left)
                if cur.right:
                    queue.append(cur.right)

        return depth&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/91084402?OzSrank=2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;파이썬 알고리즘 인터뷰 p.387&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612751181320&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;book&quot; data-og-title=&quot;파이썬 알고리즘 인터뷰&quot; data-og-description=&quot;코딩 테스트와 인터뷰를 준비하는 취준생과 이직자를 위한 알고리즘 문제 풀이 완벽 마스터!세계 최고 온라인 문제 풀이 사이트인 리트코드(LeetCode)의 기출문제 풀이와 분석!『파이썬 알고리즘 &quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;http://www.yes24.com/Product/Goods/91084402?OzSrank=2&quot; data-og-url=&quot;http://www.yes24.com/Product/Goods/91084402&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/l5EIW/hyJc2MuktK/ajO14KvM5XsGu4FFf6WUNk/img.jpg?width=306&amp;amp;height=400&amp;amp;face=0_0_306_400&quot;&gt;&lt;a href=&quot;http://www.yes24.com/Product/Goods/91084402?OzSrank=2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.yes24.com/Product/Goods/91084402?OzSrank=2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/l5EIW/hyJc2MuktK/ajO14KvM5XsGu4FFf6WUNk/img.jpg?width=306&amp;amp;height=400&amp;amp;face=0_0_306_400');&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;코딩 테스트와 인터뷰를 준비하는 취준생과 이직자를 위한 알고리즘 문제 풀이 완벽 마스터!세계 최고 온라인 문제 풀이 사이트인 리트코드(LeetCode)의 기출문제 풀이와 분석!『파이썬 알고리즘&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.yes24.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/LeetCode</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/89</guid>
      <comments>https://developeryuseon.tistory.com/89#entry89comment</comments>
      <pubDate>Mon, 8 Feb 2021 11:20:17 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 10818. 숫자의 합(Python)</title>
      <link>https://developeryuseon.tistory.com/88</link>
      <description>&lt;h1&gt;BOJ 10818. 숫자의 합(Python)&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11720&quot;&gt;https://www.acmicpc.net/problem/11720&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612625877019&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11720번: 숫자의 합&quot; data-og-description=&quot;첫째 줄에 숫자의 개수 N (1 &amp;le; N &amp;le; 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11720&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11720&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1WU1u/hyJbtc73HH/NREwGQhmsp9yd75qEz7O2K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11720&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11720&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1WU1u/hyJbtc73HH/NREwGQhmsp9yd75qEz7O2K/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;&gt;11720번: 숫자의 합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 숫자의 개수 N (1 &amp;le; N &amp;le; 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;N = int(input())
nums = list(map(int,input().split()))
print(min(nums), end=&quot; &quot;)
print(max(nums))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/coUoy1/btqV0DP6kmt/sKfC7koMcMGb6VzmOurYIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coUoy1/btqV0DP6kmt/sKfC7koMcMGb6VzmOurYIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coUoy1/btqV0DP6kmt/sKfC7koMcMGb6VzmOurYIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoUoy1%2FbtqV0DP6kmt%2FsKfC7koMcMGb6VzmOurYIk%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/88</guid>
      <comments>https://developeryuseon.tistory.com/88#entry88comment</comments>
      <pubDate>Sun, 7 Feb 2021 00:38:02 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 11729. 숫자의 합(Python)</title>
      <link>https://developeryuseon.tistory.com/87</link>
      <description>&lt;h1&gt;BOJ 11729. 숫자의 합&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11720&quot;&gt;https://www.acmicpc.net/problem/11720&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612625037727&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11720번: 숫자의 합&quot; data-og-description=&quot;첫째 줄에 숫자의 개수 N (1 &amp;le; N &amp;le; 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11720&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11720&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1WU1u/hyJbtc73HH/NREwGQhmsp9yd75qEz7O2K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11720&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11720&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1WU1u/hyJbtc73HH/NREwGQhmsp9yd75qEz7O2K/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;&gt;11720번: 숫자의 합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;첫째 줄에 숫자의 개수 N (1 &amp;le; N &amp;le; 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;N = int(input())
nums = list(map(int,input()))
print(sum(nums))&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 11729</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/87</guid>
      <comments>https://developeryuseon.tistory.com/87#entry87comment</comments>
      <pubDate>Sun, 7 Feb 2021 00:23:47 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 파이썬에서 아스키코드 변환 (chr(), ord())</title>
      <link>https://developeryuseon.tistory.com/86</link>
      <description>&lt;p&gt;문자 -&amp;gt; 아스키코드 : &lt;code&gt;chr()&lt;/code&gt;&lt;br /&gt;아스키코드 -&amp;gt; 문자 : &lt;code&gt;ord()&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;chr()&lt;/h2&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;print(chr(65))
print(chr(122))
&quot;&quot;&quot;
A
z
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;ord()&lt;/h2&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;print(ord('A'))
print(ord('z'))
&quot;&quot;&quot;
65
122
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;아스키(ASCII) 코드 표&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/5DDxN/btqV0EnZqXf/w30HFrIJKO972UFm1dqlU0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5DDxN/btqV0EnZqXf/w30HFrIJKO972UFm1dqlU0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5DDxN/btqV0EnZqXf/w30HFrIJKO972UFm1dqlU0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/5DDxN/btqV0EnZqXf/w30HFrIJKO972UFm1dqlU0/img.gif&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;figure class=&quot;imageblock alignCenter&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/bDR5U0/btqV8FsiE82/bOrgLDM8gNdKnObq9OQAN0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDR5U0/btqV8FsiE82/bOrgLDM8gNdKnObq9OQAN0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDR5U0/btqV8FsiE82/bOrgLDM8gNdKnObq9OQAN0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bDR5U0/btqV8FsiE82/bOrgLDM8gNdKnObq9OQAN0/img.gif&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;</description>
      <category>Programming Language/Python</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/86</guid>
      <comments>https://developeryuseon.tistory.com/86#entry86comment</comments>
      <pubDate>Sun, 7 Feb 2021 00:03:31 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 11654. 아스키 코드 (C, Python)</title>
      <link>https://developeryuseon.tistory.com/85</link>
      <description>&lt;h1&gt;BOJ 11654. 아스키 코드&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11654&quot;&gt;https://www.acmicpc.net/problem/11654&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612624030037&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;11654번: 아스키 코드&quot; data-og-description=&quot;알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11654&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11654&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CTrSj/hyJbhKvmcu/CAAzQRoPJPnIkLnKHPMQ30/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11654&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11654&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CTrSj/hyJbhKvmcu/CAAzQRoPJPnIkLnKHPMQ30/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;&gt;11654번: 아스키 코드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;파이썬 아스키코드?&lt;/h2&gt;
&lt;p&gt;생각해보니까 파이썬에서 아스키코드로 어떻게 출력해주는지 모른다!&lt;br /&gt;그래서 찾아서 정리 해 보았다 :)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/86&quot;&gt;https://developeryuseon.tistory.com/86&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612624034948&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Python] 파이썬에서 아스키코드 변환 (chr(), ord())&quot; data-og-description=&quot;문자 -&amp;gt; 아스키코드 : chr() 아스키코드 -&amp;gt; 문자 : ord() chr() print(chr(65)) print(chr(122)) &amp;quot;&amp;quot;&amp;quot; A z &amp;quot;&amp;quot;&amp;quot; ord() print(ord('A')) print(ord('z')) &amp;quot;&amp;quot;&amp;quot; 65 122 &amp;quot;&amp;quot;&amp;quot; 아스키(ASCII) 코드 표&quot; data-og-host=&quot;developeryuseon.tistory.com&quot; data-og-source-url=&quot;https://developeryuseon.tistory.com/86&quot; data-og-url=&quot;https://developeryuseon.tistory.com/86&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ckWfqN/hyJbmZlCAz/CxYlBsDgiSeoCIc1re2wG1/img.gif?width=719&amp;amp;height=492&amp;amp;face=0_0_719_492,https://scrap.kakaocdn.net/dn/pAQG9/hyJble34SJ/yGKz9PKYnW0v1ONPqXkYx1/img.gif?width=719&amp;amp;height=492&amp;amp;face=0_0_719_492&quot;&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/86&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developeryuseon.tistory.com/86&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ckWfqN/hyJbmZlCAz/CxYlBsDgiSeoCIc1re2wG1/img.gif?width=719&amp;amp;height=492&amp;amp;face=0_0_719_492,https://scrap.kakaocdn.net/dn/pAQG9/hyJble34SJ/yGKz9PKYnW0v1ONPqXkYx1/img.gif?width=719&amp;amp;height=492&amp;amp;face=0_0_719_492');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;[Python] 파이썬에서 아스키코드 변환 (chr(), ord())&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;문자 -&amp;gt; 아스키코드 : chr() 아스키코드 -&amp;gt; 문자 : ord() chr() print(chr(65)) print(chr(122)) &quot;&quot;&quot; A z &quot;&quot;&quot; ord() print(ord('A')) print(ord('z')) &quot;&quot;&quot; 65 122 &quot;&quot;&quot; 아스키(ASCII) 코드 표&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developeryuseon.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;h3&gt;C&lt;/h3&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main(){
    char n;
    scanf(&quot;%c&quot;,&amp;amp;n);
    printf(&quot;%d&quot;,n);
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Python&lt;/h3&gt;
&lt;pre class=&quot;isbl&quot;&gt;&lt;code&gt;print(ord(input()))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/YVYM9/btqVZTeBnRd/xpksYYPImx9R2c6i40K2xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YVYM9/btqVZTeBnRd/xpksYYPImx9R2c6i40K2xk/img.png&quot; data-alt=&quot;와 시간 엄청난 손해..&amp;amp;amp;nbsp;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YVYM9/btqVZTeBnRd/xpksYYPImx9R2c6i40K2xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYVYM9%2FbtqVZTeBnRd%2FxpksYYPImx9R2c6i40K2xk%2Fimg.png&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;figcaption&gt;와 시간 엄청난 손해..&amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 11654</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/85</guid>
      <comments>https://developeryuseon.tistory.com/85#entry85comment</comments>
      <pubDate>Sat, 6 Feb 2021 23:55:53 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 8958. OX퀴즈 (Python)</title>
      <link>https://developeryuseon.tistory.com/83</link>
      <description>&lt;h1&gt;BOJ 8958. OX퀴즈&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/8958&quot;&gt;https://www.acmicpc.net/problem/8958&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612535281561&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;8958번: OX퀴즈&quot; data-og-description=&quot;&amp;quot;OOXXOXXOOO&amp;quot;와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/8958&quot; data-og-url=&quot;https://www.acmicpc.net/problem/8958&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cwF2OY/hyJbq0ZEvt/03iRf7qUkLvCYl0s0I9sRk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/8958&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/8958&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cwF2OY/hyJbq0ZEvt/03iRf7qUkLvCYl0s0I9sRk/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;&gt;8958번: OX퀴즈&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&quot;OOXXOXXOOO&quot;와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;def get_score(case, score):
    conti = 0
    for s in case:
        if s == 'O':
            conti += 1
        if s == 'X':
            conti = 0
        score += conti
    return score

n = int(input())
for _ in range(0,n):
    case = input()
    print(get_score(case,0))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/OgEzI/btqV2Xmg19u/TnGytItLtKmgZBwI0UkrsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OgEzI/btqV2Xmg19u/TnGytItLtKmgZBwI0UkrsK/img.png&quot; data-alt=&quot;메모리 안습이구요.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OgEzI/btqV2Xmg19u/TnGytItLtKmgZBwI0UkrsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOgEzI%2FbtqV2Xmg19u%2FTnGytItLtKmgZBwI0UkrsK%2Fimg.png&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;figcaption&gt;메모리 안습이구요.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>BOJ 8958</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/83</guid>
      <comments>https://developeryuseon.tistory.com/83#entry83comment</comments>
      <pubDate>Fri, 5 Feb 2021 23:29:26 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2920. 음계 (Python)</title>
      <link>https://developeryuseon.tistory.com/82</link>
      <description>&lt;h1&gt;BOJ 2920. 음계&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2920&quot;&gt;https://www.acmicpc.net/problem/2920&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612534402094&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2920번: 음계&quot; data-og-description=&quot;다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2920&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2920&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bTTAvX/hyJbnXubgP/wqbYoL8T8Ed4ks563L18Gk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2920&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2920&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bTTAvX/hyJbnXubgP/wqbYoL8T8Ed4ks563L18Gk/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;&gt;2920번: 음계&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;play = list(map(int, input().split()))
tmp = []

for i in range(1, 8):
    if play[i-1] &amp;lt; play[i]:
        tmp.append(1)
    else:
        tmp.append(-1)

if 1 in tmp and -1 in tmp:
    print('mixed')
elif 1 in tmp and -1 not in tmp:
    print('ascending')
elif -1 in tmp and 1 not in tmp:
    print('descending')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bdJzV1/btqV09tZuWF/fPUefGG6Qs3vgQjZ3Dgeg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdJzV1/btqV09tZuWF/fPUefGG6Qs3vgQjZ3Dgeg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdJzV1/btqV09tZuWF/fPUefGG6Qs3vgQjZ3Dgeg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdJzV1%2FbtqV09tZuWF%2FfPUefGG6Qs3vgQjZ3Dgeg1%2Fimg.png&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;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/82</guid>
      <comments>https://developeryuseon.tistory.com/82#entry82comment</comments>
      <pubDate>Fri, 5 Feb 2021 23:13:23 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2639. 구구단 (Python)</title>
      <link>https://developeryuseon.tistory.com/81</link>
      <description>&lt;h1&gt;BOJ 2639. 구구단&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2739&quot;&gt;https://www.acmicpc.net/problem/2739&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612533643090&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2739번: 구구단&quot; data-og-description=&quot;N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2739&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2739&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Sjfgk/hyJaknLFL2/GSYT1jk2OlMZAfnRBcpuj0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2739&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2739&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Sjfgk/hyJaknLFL2/GSYT1jk2OlMZAfnRBcpuj0/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;&gt;2739번: 구구단&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;N = int(input())

for i in range(1, 10):
    print(N ,'*', i, '=', N*i)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;아 출력 예시에 (공백)*(공백)=(공백) 이런식인줄 알았는데.. 아니네 ;; 띄어쓰기 없음&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/81</guid>
      <comments>https://developeryuseon.tistory.com/81#entry81comment</comments>
      <pubDate>Fri, 5 Feb 2021 23:00:47 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2675. 문자열 반복 (Python)</title>
      <link>https://developeryuseon.tistory.com/80</link>
      <description>&lt;h1&gt;BOJ 2675. 문자열 반복&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2675&quot;&gt;https://www.acmicpc.net/problem/2675&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612508246048&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2675번: 문자열 반복&quot; data-og-description=&quot;문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2675&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2675&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b3xHVv/hyJapbmlrE/61JmDLiUm03ZiAwxXTKuvk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2675&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2675&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b3xHVv/hyJapbmlrE/61JmDLiUm03ZiAwxXTKuvk/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;&gt;2675번: 문자열 반복&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;repeat_string 함수 정의&lt;/li&gt;
&lt;li&gt;N 입력받고 N번 루프 돔&lt;/li&gt;
&lt;li&gt;R, S 입력받고 함수 호출&lt;/li&gt;
&lt;li&gt;result라는 빈 문자열 생성&lt;/li&gt;
&lt;li&gt;str에서 루프를 돔&lt;/li&gt;
&lt;li&gt;times개의 s로 이루어진 리스트 생성 후 result에 &lt;code&gt;&quot;&quot;.join&lt;/code&gt;하여 붙이기&lt;/li&gt;
&lt;li&gt;print&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;한줄 입력 - 결과 출력 x 반복&lt;br /&gt;이렇게도 정답으로 처리 되더라 :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;def repeat_string(str,times):
    result = &quot;&quot;
    for s in str:
        tmp = [s]*times
        result += &quot;&quot;.join(tmp)
    print(result)


N = int(input())
for _ in range(0, N):
    R, S = input().split()
    R = int(R)
    repeat_string(S,R)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/N3YKX/btqVRvSe1NC/cq7W3mlTZOWTkWKXaMPnXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N3YKX/btqVRvSe1NC/cq7W3mlTZOWTkWKXaMPnXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N3YKX/btqVRvSe1NC/cq7W3mlTZOWTkWKXaMPnXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN3YKX%2FbtqVRvSe1NC%2Fcq7W3mlTZOWTkWKXaMPnXK%2Fimg.png&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;</description>
      <category>Problem Solving/BOJ</category>
      <category>boj 2675</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/80</guid>
      <comments>https://developeryuseon.tistory.com/80#entry80comment</comments>
      <pubDate>Fri, 5 Feb 2021 15:58:14 +0900</pubDate>
    </item>
    <item>
      <title>[Git] Fork한 repository 최신으로 동기화</title>
      <link>https://developeryuseon.tistory.com/79</link>
      <description>&lt;p&gt;Fork 한 repository를 최신으로 동기화시켜야 할 때가 있다. 작업 전에 꼭 최신으로 동기화 한 후 작업을 해 주어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open Source에 단발성이 아닌 지속적으로 contribution 하려 할 때&lt;/li&gt;
&lt;li&gt;수정해서 사용하기 위해 fork해온 원본 repository에서 업데이트 된 부분을 받아 올 때&lt;/li&gt;
&lt;li&gt;협업 프로젝트 진행 시에&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이를 위해서는 먼저 원본 repository를 remote repository로 추가해야 한다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Fork해온 repository의 remote repository 확인을 위해 다음 명령어를 입력한다.&lt;br /&gt;하게 되면 아직은&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ git remote -v
origin  https://github.com/yuseon-Lim/hsp-narehajae.git (fetch)
origin  https://github.com/yuseon-Lim/hsp-narehajae.git (push)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게만 보일 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기에 동기화 해 오고 싶은 원본 repository를 upstream이라는 이름으로 추가한다.(upstream이 아닌 다른 이름도 가능하다. 하지만 보통 이렇게 쓴다.)&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ git remote add upstream &amp;lt;원본 repository url&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&amp;darr; url 확인하는 방법&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;repository의 주소는 github 페이지 오른쪽 위에 있다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&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/DwWcH/btqVtbN3iYS/zbfTQboNFnrHjdzAuYsHo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DwWcH/btqVtbN3iYS/zbfTQboNFnrHjdzAuYsHo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DwWcH/btqVtbN3iYS/zbfTQboNFnrHjdzAuYsHo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDwWcH%2FbtqVtbN3iYS%2FzbfTQboNFnrHjdzAuYsHo1%2Fimg.png&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;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 한 후에 upstream repository가 제대로 추가 되었는지 확인한다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ git remote -v
origin  https://github.com/yuseon-Lim/hsp-narehajae.git (fetch)
origin  https://github.com/yuseon-Lim/hsp-narehajae.git (push)
upstream        &amp;lt;원본 repository url&amp;gt; (fetch)
upstream        &amp;lt;원본 repository url&amp;gt; (push)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이제 &lt;code&gt;fetch&lt;/code&gt;명령어를 통해 upstream repository의 내용을 불러온다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ git fetch upstream
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 3), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), 1.81 KiB | 92.00 KiB/s, done.
From &amp;lt;원본 repository url&amp;gt;
   bc1ce48..8547bbd  master     -&amp;gt; upstream/master&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;나의 local master branch로 checkout한다. ( 최근의 github의 default branch가 &lt;code&gt;main&lt;/code&gt;으로 바뀌었는데, 바뀐 후에 생성한 repository는 master대신 main으로 적어주자. )&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ git checkout master
Switched to branch 'master'
M       .eslintcache
M       src/App.js
M       src/components/Category.js
M       src/components/Products.js
M       src/components/Shop.js
M       src/home.css
Your branch is up to date with 'origin/master'.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이제 upstream repository의 master branch (혹은 원하는 branch) 로부터 나의 local master branch로 merge한다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ git merge upstream/master
Updating 3c867e8..8547bbd
Fast-forward
 .eslintcache | 1 -
 .gitignore   | 1 +
 2 files changed, 1 insertion(+), 1 deletion(-)
 delete mode 100644 .eslintcache&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;여기까지만 하면 나의 local repository만 변경사항이 적용되므로 fork 한 repository에도 push 해주면 된다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;$ git push origin master&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;Reference&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://json.postype.com/post/210431&quot;&gt;https://json.postype.com/post/210431&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://lelecoder.com/142&quot;&gt;https://lelecoder.com/142&lt;/a&gt;&lt;/p&gt;</description>
      <category>Dev. etc</category>
      <category>fork</category>
      <category>fork 동기화</category>
      <category>GIT</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/79</guid>
      <comments>https://developeryuseon.tistory.com/79#entry79comment</comments>
      <pubDate>Wed, 3 Feb 2021 15:44:04 +0900</pubDate>
    </item>
    <item>
      <title>Leetcode 46. Permutations</title>
      <link>https://developeryuseon.tistory.com/77</link>
      <description>&lt;h1&gt;Leetcode &lt;span&gt;46&lt;/span&gt;&lt;span&gt;.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Permutations&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://leetcode.com/problems/permutations/&quot;&gt;Permutations - LeetCode&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611888885736&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Permutations - LeetCode&quot; data-og-description=&quot;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/permutations/&quot; data-og-url=&quot;https://leetcode.com/problems/permutations/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b2eThA/hyI659V7Rm/csBh2F4TybysAuPPcTLkbK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/permutations/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/permutations/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b2eThA/hyI659V7Rm/csBh2F4TybysAuPPcTLkbK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Permutations - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;DFS로 깊이탐색&lt;/li&gt;
&lt;li&gt;prev는 추가되고 next는 줄어들면서 dfs를 돈다&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/l4bEB/btqUZufOQkf/60IFkpG8XSXouY1kj7vNQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l4bEB/btqUZufOQkf/60IFkpG8XSXouY1kj7vNQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l4bEB/btqUZufOQkf/60IFkpG8XSXouY1kj7vNQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl4bEB%2FbtqUZufOQkf%2F60IFkpG8XSXouY1kj7vNQ1%2Fimg.png&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;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;from typing import List

class Solution:
    def permute(self, nums: List[int]) -&amp;gt; List[List[int]]:
        prev = []
        answer = []
        def dfs(elements: List[int]):
            if len(elements) == 0:
                answer.append(prev[:])

            for e in elements:
                next = elements[:]
                prev.append(e)
                next.remove(e)
                dfs(next)
                prev.pop()

        dfs(nums)
        return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bYCBY4/btqU3qcP66j/BcWu9d5SDmbkyt8koZFOf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYCBY4/btqU3qcP66j/BcWu9d5SDmbkyt8koZFOf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYCBY4/btqU3qcP66j/BcWu9d5SDmbkyt8koZFOf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYCBY4%2FbtqU3qcP66j%2FBcWu9d5SDmbkyt8koZFOf1%2Fimg.png&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;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Problem Solving/LeetCode</category>
      <category>46</category>
      <category>dfs</category>
      <category>Leetcode</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/77</guid>
      <comments>https://developeryuseon.tistory.com/77#entry77comment</comments>
      <pubDate>Fri, 29 Jan 2021 11:57:53 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2667. 단지 번호 붙이기 (Python)</title>
      <link>https://developeryuseon.tistory.com/76</link>
      <description>&lt;h1&gt;BOJ 2667. 단지 번호 붙이기&lt;/h1&gt;
&lt;figure id=&quot;og_1611725676717&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2667번: 단지번호붙이기&quot; data-og-description=&quot;&amp;lt;그림 1&amp;gt;과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2667&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2667&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/civG4k/hyI55PMOA8/hNAeQOQikCe7E5FRcQoVo0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2667&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2667&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/civG4k/hyI55PMOA8/hNAeQOQikCe7E5FRcQoVo0/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;&gt;2667번: 단지번호붙이기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;lt;그림 1&amp;gt;과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;DFS로 깊이탐색&lt;/li&gt;
&lt;li&gt;포문을 돌며 집인 경우에 깊이 탐색 시작.&lt;/li&gt;
&lt;li&gt;dfs함수에선 집이 아닌경우 return하여 단지수인 &lt;code&gt;count_apart&lt;/code&gt; +1 하도록 함&lt;/li&gt;
&lt;li&gt;dfs함수에서 집인 경우 &lt;code&gt;count_house[count_apart]&lt;/code&gt; +1 하여 집이 몇개인지 구함&lt;/li&gt;
&lt;li&gt;이후 집이 아닌 경우가 나올때까지 동서남북 깊이탐색&lt;/li&gt;
&lt;li&gt;단지수 print&lt;/li&gt;
&lt;li&gt;오름차순으로 정렬한 리스트가 0이 아닐 경우 print&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;from typing import List

def dfs(graph: List[List[int]], N:int, i:int, j:int, count_house: List, count_apart:int):
    # 더이상 집이 아닌 경우 return
    if i &amp;lt; 0 or i &amp;gt;= N or \
        j &amp;lt; 0 or j  &amp;gt;= N or \
            graph[i][j] &amp;lt;= 0:
            return

    # 집인 경우
    graph[i][j] = -1 # 구분하기 위함(방문)
    count_house[count_apart] += 1
    dfs(graph, N, i-1, j, count_house, count_apart)
    dfs(graph, N, i, j-1, count_house, count_apart)
    dfs(graph, N, i+1, j, count_house, count_apart)
    dfs(graph, N, i, j+1, count_house, count_apart)


# 입력
N = int(input())
graph = []
for i in range(0, N):
    graph.append((list(map(int, input()))))

count_apart = 0
count_house = [0]

for i in range(0, N):
    for j in range(0, N):
        if graph[i][j] &amp;gt; 0:
            dfs(graph, N, i, j, count_house, count_apart)
            count_apart += 1
            count_house.append(0)

filter(lambda x: x != 0, count_house)
count_house.sort()

# 출력
print(count_apart)
for n in count_house:
    if n != 0:
        print(n)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/bVJfNE/btqUTmBlc1E/jMfvo6Kcka2fx55J4a1840/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVJfNE/btqUTmBlc1E/jMfvo6Kcka2fx55J4a1840/img.png&quot; data-alt=&quot;시간.. 메모리.. 안습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVJfNE/btqUTmBlc1E/jMfvo6Kcka2fx55J4a1840/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVJfNE%2FbtqUTmBlc1E%2FjMfvo6Kcka2fx55J4a1840%2Fimg.png&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;figcaption&gt;시간.. 메모리.. 안습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Problem Solving/BOJ</category>
      <category>2667</category>
      <category>BOJ</category>
      <category>boj 2667</category>
      <category>단지번호붙이기</category>
      <category>백준</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/76</guid>
      <comments>https://developeryuseon.tistory.com/76#entry76comment</comments>
      <pubDate>Wed, 27 Jan 2021 14:34:04 +0900</pubDate>
    </item>
    <item>
      <title>CHERRY MX BOARD 3.0S WHITE RGB 윤활</title>
      <link>https://developeryuseon.tistory.com/75</link>
      <description>&lt;p&gt;카테고리를 따로 만든 이유는 많은 키보드들이 내 손을 거쳐갈 것 같은 느낌이 와서.&lt;/p&gt;
&lt;p&gt;실제로 레오폴드 750r pd, 토체티 저소음 적축이 내 손을 떠났다.. ㅋㅋㅋ 어디 뒤져보면 영상 찍은거 있을텐데 찾으면 올려야지.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;풀배열 진짜 사기 싫지만 무보강 타건음이 마음에 들어서 구입한 것.. rgb도 부드럽고 예쁘다.&lt;/p&gt;
&lt;p&gt;알파열 윤활 된 제품으로 구매했다. 받을때는 키보드에 관심이 지금보단 적어서 정말 맘에들었지만&lt;/p&gt;
&lt;p&gt;지금은 그냥 맘에 드는 정도? ar87오고 타건 해보고 얘를 방출 할지 말지 생각해봐야겠다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ar87 스프링 교체 하긴 했지만 흑축이긴 해서 타이핑에 무리갈까봐 남겨둔건데 얠 정리하고 한고무나 한무무로 갈까 생각중.. 그래도 정말 괜찮은 키보드는 맞는거같다. rgb없는 모델이 10만원 아래니까 누가 키보드 하나만 산다고 하면 추천해주고 싶은 제품..!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;abs의 번들거림과 미끌거림이 싫어서 레오폴드 키캡으로 바꿔봤는데 이 키보드만의 느낌이 죽는 듯 했다.&lt;/p&gt;
&lt;p&gt;그냥 기본 키캡이 가장 소리가 좋은듯.. 하이피치 인듯 하면서 가벼운 느낌이 좋다.&lt;/p&gt;
&lt;p&gt;무보강이라 윤활도 쉬운 편이니 스테빌같은것은 튜닝 해 주면 좋을듯.. 윤활제가 없다. 사게되면 같이 주문해서 해줘야지.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;KakaoTalk_20210127_030423473.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; width=&quot;773&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mTQ5c/btqULDD37yr/ZjnA6PKkj5crM7paKZZ2w1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mTQ5c/btqULDD37yr/ZjnA6PKkj5crM7paKZZ2w1/img.jpg&quot; data-alt=&quot;영롱.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mTQ5c/btqULDD37yr/ZjnA6PKkj5crM7paKZZ2w1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmTQ5c%2FbtqULDD37yr%2FZjnA6PKkj5crM7paKZZ2w1%2Fimg.jpg&quot; data-filename=&quot;KakaoTalk_20210127_030423473.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; width=&quot;773&quot; height=&quot;NaN&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;figcaption&gt;영롱.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래는 타건음.. 12pro 로 촬영했다. 실제 소리보다 스테빌은 순정치고 준수하긴 한데 막 들어줄 만 하진 않다.. 윤활.. 하고싶지만 귀찮은걸!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/q6ISiRdUUXs&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</description>
      <category>Keyboard</category>
      <category>mx board 3.0s</category>
      <category>체리</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/75</guid>
      <comments>https://developeryuseon.tistory.com/75#entry75comment</comments>
      <pubDate>Wed, 27 Jan 2021 03:13:14 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] DFS, BFS 구현 (Python)</title>
      <link>https://developeryuseon.tistory.com/74</link>
      <description>&lt;h2&gt;DFS&lt;/h2&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;&quot;&quot;&quot;
       1
    /  |  \
   2   3   4
   |   |
   5   |
  / \ /
 6   7
&quot;&quot;&quot;

graph = {
    1: [2,3,4],
    2: [5],
    3: [5],
    4: [],
    5: [6,7],
    6: [],
    7: [3],
}

def recursive_dfs(v, discovered = []):
    discovered.append(v) # 시작 정점 방문
    for w in graph[v]:
        if not w in discovered: # 방문 하지 않았으면
            discovered = recursive_dfs(w, discovered)
    return discovered

def iterative_dfs(start_v):
    discovered = []
    stack = [start_v]
    while stack:
        v = stack.pop()
        if v not in discovered:
            discovered.append(v)
            for w in graph[v]:
                stack.append(w)
    return discovered

print(&quot;recursive_dfs: &quot;, recursive_dfs(1))
print(&quot;iterative_dfs: &quot;, iterative_dfs(1))

# 스택은 마지막에 스택에 담은 정점부터 꺼내져 방문되기 때문에 재귀 방식과 결과가 다름.&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;BFS&lt;/h2&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;&quot;&quot;&quot;
       1
    /  |  \
   2   3   4
   |   |
   5   |
  / \ /
 6   7
&quot;&quot;&quot;

graph = {
    1: [2,3,4],
    2: [5],
    3: [5],
    4: [],
    5: [6,7],
    6: [],
    7: [3],
}

def iterative_bfs(start_v):
    discovered = [start_v]
    queue = [start_v]
    while queue:
        v = queue.pop()
        for w in graph[v]:
            if w not in discovered:
                discovered.append(w)
                queue.append(w)
    return discovered

print(&quot;iterative_bfs: &quot;, iterative_bfs(1))

&quot;&quot;&quot;
iterative_bfs:  [1, 2, 3, 4, 5, 6, 7]
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;DFS는 &lt;b&gt;Stack&lt;/b&gt;, BFS는 &lt;b&gt;Queue&lt;/b&gt;로 구현한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;dfs, bfs 헷갈릴 때 마다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=_hxFgg7TLZQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/k8czA/hyI4wBaeEU/HF2umdQdCcgSg4gb0xmP41/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=946_270_1144_486&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/_hxFgg7TLZQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;이분 영상 본다.&lt;/p&gt;
&lt;p&gt;bfs, dfs말고도 알고리즘이나 자료구조 설명이 알기 쉽게 잘 되어있다.&lt;/p&gt;</description>
      <category>Problem Solving/자료구조-알고리즘</category>
      <category>BFS</category>
      <category>dfs</category>
      <category>python</category>
      <category>파이썬</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/74</guid>
      <comments>https://developeryuseon.tistory.com/74#entry74comment</comments>
      <pubDate>Wed, 27 Jan 2021 02:56:32 +0900</pubDate>
    </item>
    <item>
      <title>[Python] zip()</title>
      <link>https://developeryuseon.tistory.com/73</link>
      <description>&lt;h1&gt;Python 내장함수, zip(*iterables)&lt;/h1&gt;
&lt;h2&gt;zip(*iterables)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;zip()&lt;/code&gt;은 &lt;b&gt;동일한 개수&lt;/b&gt;로 이루어진 자료형을 묶어주는 역할을 한다.&lt;/li&gt;
&lt;li&gt;제너레이터로 리턴 되기 때문에, &lt;code&gt;list&lt;/code&gt;나 &lt;code&gt;dic&lt;/code&gt; 등 으로 변환 해 주어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;list1 = [1,2,3]
list2 = [&quot;홍길동&quot;, &quot;김철수&quot;, &quot;박미애&quot;]

zip_list = zip(list1, list2)

print(zip_list, type(zip_list)) # 제너레이터로 리턴
print(list(zip_list)) # 리스트로 변환

# dictionary로 변환
dic ={}

for i, s in zip(list1, list2):
    dic[i] = s

print(dic)

&quot;&quot;&quot;
&amp;lt;zip object at 0x03795868&amp;gt; &amp;lt;class 'zip'&amp;gt;
[(1, '홍길동'), (2, '김철수'), (3, '박미애')]
{1: '홍길동', 2: '김철수', 3: '박미애'}
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;두 자료형의 개수가 다를경우, 긴 것은 누락된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;list1 = [1,2,3,4]
list2 = [&quot;홍길동&quot;, &quot;김철수&quot;, &quot;박미애&quot;]

zip_list = zip(list1, list2)
print(zip_list, type(zip_list))
print(list(zip_list))

&quot;&quot;&quot;
&amp;lt;zip object at 0x00DF5868&amp;gt; &amp;lt;class 'zip'&amp;gt;
[(1, '홍길동'), (2, '김철수'), (3, '박미애')]
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;zip_longest()&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;zip_longest()&lt;/code&gt;를 사용하면 두 자료형의 개수가 다른 경우에도 누락시키지 않고 zip 할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;zip_longest(*iterables, fillvalue = None)&lt;/code&gt;이며, default는 None이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from itertools import zip_longest

list1 = [1,2,3,4,5]
list2 = [&quot;홍길동&quot;, &quot;김철수&quot;, &quot;박미애&quot;]

zip_list = zip_longest(list1, list2)

print(zip_list, type(zip_list)) # 제너레이터로 리턴
print(list(zip_list)) # 리스트로 변환

&quot;&quot;&quot;
[(1, '홍길동'), (2, '김철수'), (3, '박미애'), (4, None), (5, None)]
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Programming Language/Python</category>
      <category>python</category>
      <category>zip()</category>
      <category>zip_longest()</category>
      <category>파이썬</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/73</guid>
      <comments>https://developeryuseon.tistory.com/73#entry73comment</comments>
      <pubDate>Tue, 26 Jan 2021 10:43:05 +0900</pubDate>
    </item>
    <item>
      <title>[Leetcode] 347. Top K Frequent Elements</title>
      <link>https://developeryuseon.tistory.com/71</link>
      <description>&lt;h1&gt;Leetcode 347. Top K Frequent Elements&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://leetcode.com/problems/top-k-frequent-elements/&quot;&gt;https://leetcode.com/problems/top-k-frequent-elements/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611622188311&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Top K Frequent Elements - LeetCode&quot; data-og-description=&quot;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/top-k-frequent-elements/&quot; data-og-url=&quot;https://leetcode.com/problems/top-k-frequent-elements/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKbPBt/hyI2E7Rq9L/KsjnZOSOKS9LuvkQoVpmtK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/top-k-frequent-elements/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/top-k-frequent-elements/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKbPBt/hyI2E7Rq9L/KsjnZOSOKS9LuvkQoVpmtK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Top K Frequent Elements - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2&gt;Solution 1&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;collections.Counter()&lt;/code&gt; 이용한 풀이. &lt;code&gt;most_common()&lt;/code&gt;메소드를 사용했다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developeryuseon.tistory.com/37?category=833436&quot;&gt;collections.Counter()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;import collections
from typing import List

class Solution:
    def topKFrequent(self, nums: List[int], k: int) -&amp;gt; List[int]:
        answer = []
        count = collections.Counter(nums)

        for tuple in count.most_common(k):
            answer.append(tuple[0])

        return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&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/dJYG4s/btqUEANYd9q/9cxlw3eYsZkiXB6Ta8I4mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJYG4s/btqUEANYd9q/9cxlw3eYsZkiXB6Ta8I4mK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJYG4s/btqUEANYd9q/9cxlw3eYsZkiXB6Ta8I4mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJYG4s%2FbtqUEANYd9q%2F9cxlw3eYsZkiXB6Ta8I4mK%2Fimg.png&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;</description>
      <category>Problem Solving/LeetCode</category>
      <category>347</category>
      <category>collections.Counter()</category>
      <category>Leetcode</category>
      <author>yuseon-Lim</author>
      <guid isPermaLink="true">https://developeryuseon.tistory.com/71</guid>
      <comments>https://developeryuseon.tistory.com/71#entry71comment</comments>
      <pubDate>Tue, 26 Jan 2021 09:50:17 +0900</pubDate>
    </item>
  </channel>
</rss>