<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hillier_house</title>
    <link>https://hillier.tistory.com/</link>
    <description>백엔드 개발자가 되기 위한 모험을 기록하는 중!</description>
    <language>ko</language>
    <pubDate>Tue, 16 Jun 2026 23:12:43 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>힐리어</managingEditor>
    <image>
      <title>hillier_house</title>
      <url>https://tistory1.daumcdn.net/tistory/2980824/attach/fd4ed96c96ca4a69981587f496c4546e</url>
      <link>https://hillier.tistory.com</link>
    </image>
    <item>
      <title>[Spark] 설치하기</title>
      <link>https://hillier.tistory.com/124</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아래에서&amp;nbsp; JDK, SPARK 버전 호환 확인할 수 있습니다.&lt;/p&gt;
&lt;figure id=&quot;og_1676813385824&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;JDK Compatibility&quot; data-og-description=&quot;Info: JavaScript is currently disabled, code tabs will still work, but preferences will not be remembered. Scala&amp;rsquo;s primary platform is the Java Virtual Machine (JVM). (Other supported platforms: Scala.js, Scala Native.) Sometimes new JVM and JDK (Java De&quot; data-og-host=&quot;docs.scala-lang.org&quot; data-og-source-url=&quot;https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html&quot; data-og-url=&quot;https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/LZVys/hyRF10Lgsj/iVWhCetaIdXNT32g2Sl3Ok/img.png?width=399&amp;amp;height=648&amp;amp;face=0_0_399_648&quot;&gt;&lt;a href=&quot;https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/LZVys/hyRF10Lgsj/iVWhCetaIdXNT32g2Sl3Ok/img.png?width=399&amp;amp;height=648&amp;amp;face=0_0_399_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;JDK Compatibility&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Info: JavaScript is currently disabled, code tabs will still work, but preferences will not be remembered. Scala&amp;rsquo;s primary platform is the Java Virtual Machine (JVM). (Other supported platforms: Scala.js, Scala Native.) Sometimes new JVM and JDK (Java De&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.scala-lang.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. &lt;b&gt;Java&lt;/b&gt; &lt;b&gt;1.8.0 &lt;/b&gt;설치&lt;/h4&gt;
&lt;figure id=&quot;og_1676818961298&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project&quot; data-og-description=&quot;Community builds using source code from OpenJDK project - GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ojdkbuild/ojdkbuild&quot; data-og-url=&quot;https://github.com/ojdkbuild/ojdkbuild&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hgv5l/hyRF8yPLtZ/1ddlLJZC9joPVlRAPBQNZ0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/ojdkbuild/ojdkbuild&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ojdkbuild/ojdkbuild&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hgv5l/hyRF8yPLtZ/1ddlLJZC9joPVlRAPBQNZ0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Community builds using source code from OpenJDK project - GitHub - ojdkbuild/ojdkbuild: Community builds using source code from OpenJDK project&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. &lt;b&gt;Python &lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;3.11.2 &lt;/span&gt;&lt;/b&gt;설치&amp;nbsp;&lt;/h4&gt;
&lt;figure id=&quot;og_1676813503170&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download Python&quot; data-og-description=&quot;The official home of the Python Programming Language&quot; data-og-host=&quot;www.python.org&quot; data-og-source-url=&quot;https://www.python.org/downloads/&quot; data-og-url=&quot;https://www.python.org/downloads/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bdzAI8/hyRGeMmw8c/iuaFk9O7M4hrnJENhLXpsK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://www.python.org/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.python.org/downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bdzAI8/hyRGeMmw8c/iuaFk9O7M4hrnJENhLXpsK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download Python&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The official home of the Python Programming Language&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.python.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치시에 환경변수 추가 옵션 체크&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhpKzF/btrZ2AfGE91/K7kYsi9HjkNTszClqRVCbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhpKzF/btrZ2AfGE91/K7kYsi9HjkNTszClqRVCbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhpKzF/btrZ2AfGE91/K7kYsi9HjkNTszClqRVCbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhpKzF%2FbtrZ2AfGE91%2FK7kYsi9HjkNTszClqRVCbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;402&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. &lt;b&gt;Scala &lt;/b&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;3.2.3&lt;/b&gt; &lt;/span&gt;설치&lt;/h4&gt;
&lt;figure id=&quot;og_1676815403264&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Install&quot; data-og-description=&quot;To install Scala, it is recommended to use cs setup, the Scala installer powered by Coursier. It installs everything necessary to use the latest Scala release from a command line: If you are just beginning your journey with Scala, we recommend that you rea&quot; data-og-host=&quot;www.scala-lang.org&quot; data-og-source-url=&quot;https://www.scala-lang.org/download/&quot; data-og-url=&quot;https://www.scala-lang.org/download/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SwToU/hyRF8r4SAt/Q11kbdmCjx9bYzixzFGDuK/img.png?width=399&amp;amp;height=648&amp;amp;face=0_0_399_648&quot;&gt;&lt;a href=&quot;https://www.scala-lang.org/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.scala-lang.org/download/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SwToU/hyRF8r4SAt/Q11kbdmCjx9bYzixzFGDuK/img.png?width=399&amp;amp;height=648&amp;amp;face=0_0_399_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Install&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;To install Scala, it is recommended to use cs setup, the Scala installer powered by Coursier. It installs everything necessary to use the latest Scala release from a command line: If you are just beginning your journey with Scala, we recommend that you rea&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.scala-lang.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cs setup 설치&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qxy84/btrZ0KJwhEy/14094NvQuijxUeROBKoM8K/img.png&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;319&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;597&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/un1Lm/btrZJ4csiVx/iryRu5Gjs52TG3zlUCvLm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/un1Lm/btrZJ4csiVx/iryRu5Gjs52TG3zlUCvLm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/un1Lm/btrZJ4csiVx/iryRu5Gjs52TG3zlUCvLm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fun1Lm%2FbtrZJ4csiVx%2FiryRu5Gjs52TG3zlUCvLm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;597&quot; height=&quot;225&quot; data-origin-width=&quot;597&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 후 껐다 키면 scala -version 시 확인 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. Spark 설치&lt;/h4&gt;
&lt;figure id=&quot;og_1676813309681&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Downloads | Apache Spark&quot; data-og-description=&quot;Download Apache Spark&amp;trade; Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS by following these procedures. Note that Spark 3 is pre-built with Scala 2.12 in general and Spark 3.2+ provides &quot; data-og-host=&quot;spark.apache.org&quot; data-og-source-url=&quot;https://spark.apache.org/downloads.html&quot; data-og-url=&quot;https://spark.apache.org/downloads.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://spark.apache.org/downloads.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://spark.apache.org/downloads.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Downloads | Apache Spark&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Download Apache Spark&amp;trade; Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS by following these procedures. Note that Spark 3 is pre-built with Scala 2.12 in general and Spark 3.2+ provides&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;spark.apache.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. Winutils 설치&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Spark 다운로드할 때 선택한 하둡 버전에 맞춰 winutils.exe 파일만 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1676814765605&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - cdarlint/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows&quot; data-og-description=&quot;winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows - GitHub - cdarlint/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/cdarlint/winutils&quot; data-og-url=&quot;https://github.com/cdarlint/winutils&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QJd7b/hyRHlwybCq/K1xKKhElkVI4CUnKRgSotK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/cdarlint/winutils&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/cdarlint/winutils&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QJd7b/hyRHlwybCq/K1xKKhElkVI4CUnKRgSotK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - cdarlint/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows - GitHub - cdarlint/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcDmgB/btrZNvfNGVd/qHHeOquKyYDwaWbvIvOhrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcDmgB/btrZNvfNGVd/qHHeOquKyYDwaWbvIvOhrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcDmgB/btrZNvfNGVd/qHHeOquKyYDwaWbvIvOhrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcDmgB%2FbtrZNvfNGVd%2FqHHeOquKyYDwaWbvIvOhrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1237&quot; height=&quot;310&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Hadoop\bin 폴더를 생성하여 해당 파일 저장&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환경변수 설정&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;bin 폴더를 가지고 있는 것들을 HOME으로 저장
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JAVA_HOME&lt;/li&gt;
&lt;li&gt;SPARK_HOME&lt;/li&gt;
&lt;li&gt;HADOOP_HOME&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LLDFg/btrZJWFpzF9/bGEgyn53e3GgOK4Q997vK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LLDFg/btrZJWFpzF9/bGEgyn53e3GgOK4Q997vK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LLDFg/btrZJWFpzF9/bGEgyn53e3GgOK4Q997vK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLLDFg%2FbtrZJWFpzF9%2FbGEgyn53e3GgOK4Q997vK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;154&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Path에 추가
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;%JAVA_HOME%\bin&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;%&lt;/span&gt;SPARK_HOME&lt;span&gt;%\bin&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;%HADOOP&lt;/span&gt;_HOME&lt;span&gt;%\bin&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYdDID/btrZR2jQmml/0uejhj0aylbcgdveoh1u0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYdDID/btrZR2jQmml/0uejhj0aylbcgdveoh1u0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYdDID/btrZR2jQmml/0uejhj0aylbcgdveoh1u0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYdDID%2FbtrZR2jQmml%2F0uejhj0aylbcgdveoh1u0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;516&quot; height=&quot;225&quot; data-origin-width=&quot;516&quot; data-origin-height=&quot;225&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;</description>
      <category>개발</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/124</guid>
      <comments>https://hillier.tistory.com/124#entry124comment</comments>
      <pubDate>Sun, 19 Feb 2023 22:59:33 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio 솔루션 이름 변경하기</title>
      <link>https://hillier.tistory.com/121</link>
      <description>&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;솔루션 Rename&lt;/li&gt;
&lt;li&gt;프로젝트 Rename&lt;/li&gt;
&lt;li&gt;namespace이름 모두 바꾸기&lt;/li&gt;
&lt;li&gt;프로젝트 폴더명 바꾸기&lt;/li&gt;
&lt;li&gt;프로젝트.sln 파일에 경로(바꾼 폴더명) 변경&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>개발</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/121</guid>
      <comments>https://hillier.tistory.com/121#entry121comment</comments>
      <pubDate>Fri, 4 Mar 2022 10:18:30 +0900</pubDate>
    </item>
    <item>
      <title>[백준 3025] 돌 던지기</title>
      <link>https://hillier.tistory.com/118</link>
      <description>&lt;figure id=&quot;og_1630940769551&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;3025번: 돌 던지기&quot; data-og-description=&quot;이 모든 사건의 시작은 2주 전이었다. 그 날 상근이는 복도에 누워서 잠을 자고 있었다. 커다란 돌을 들고 그 옆을 지나가던 민혁이는 복도에서 잠을 자는 사람을 처음봐서 신기하게 쳐다보고 있&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/3025&quot; data-og-url=&quot;https://www.acmicpc.net/problem/3025&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/czBLvq/hyLwmoGsi6/X9UBospKViklrgrYb3lZm0/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/3025&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/3025&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/czBLvq/hyLwmoGsi6/X9UBospKViklrgrYb3lZm0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;3025번: 돌 던지기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이 모든 사건의 시작은 2주 전이었다. 그 날 상근이는 복도에 누워서 잠을 자고 있었다. 커다란 돌을 들고 그 옆을 지나가던 민혁이는 복도에서 잠을 자는 사람을 처음봐서 신기하게 쳐다보고 있&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음으로 풀어보는 플레티넘 문제이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 java로 falling이라는 재귀로 돌이 굴러떨어질때마다 시뮬레이션을 했더니 &lt;span style=&quot;color: #ee2323;&quot;&gt;시간초과&lt;/span&gt;가 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa; color: #ee2323;&quot;&gt;시간초과 코드&lt;/span&gt;&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;pre id=&quot;code_1630943897972&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	static int R, C, N, command;
	static char[][] map;
	static StringBuilder sb = new StringBuilder();

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));	
		String[] input = br.readLine().split(&quot; &quot;);	
		R = Integer.parseInt(input[0]);				
		C = Integer.parseInt(input[1]);				
		map = new char[R][C];						
		for (int i = 0; i &amp;lt; R; i++) {
			map[i] = br.readLine().toCharArray();	
		}

		N = Integer.parseInt(br.readLine());		
		for (int i = 0; i &amp;lt; N; i++) {
			command = Integer.parseInt(br.readLine())-1;	
			if (map[0][command] != '.') {					
				continue;									
			}
			falling(-1, command); // 화산탄 떨어뜨리기 수행
		}

		for (int i = 0; i &amp;lt; R; i++) {
			for (int j = 0; j &amp;lt; C; j++) {
				sb.append(map[i][j]);
			}
			sb.append(&quot;\n&quot;);
		}
		System.out.println(sb.toString());
	}

	// 화산탄이 떨어지는 것을 수행하는 함수
	static void falling(int x, int y) {
		while (true) {							
			x++; // 아래로 한칸 떨어뜨리기
			if (x &amp;gt;= R || map[x][y] == 'X') { // 땅이거나 장애물에 막혀있다면 굳힘
				map[x - 1][y] = 'O';
				return;
			}
			if (map[x][y] == 'O') {	// 화산탄이라면 멈춤
				break;
			}
		}

		if (0 &amp;lt;= y - 1 &amp;amp;&amp;amp; map[x][y - 1] == '.' &amp;amp;&amp;amp; map[x - 1][y - 1] == '.') {	// 왼쪽 인덱스 범위 확인 &amp;amp; 왼쪽, 왼쪽-아래칸 비어있는지 확인
			falling(x, y - 1);		// 왼쪽 아래칸으로 굴러 떨어지기 수행
		} else if (y + 1 &amp;lt; C  &amp;amp;&amp;amp; map[x][y + 1] == '.' &amp;amp;&amp;amp; map[x - 1][y + 1] == '.') { // 오른쪽 인덱스 범위 확인 &amp;amp; 오른쪽, 오른쪽-아래칸 비어있는지 확인
			falling(x, y + 1);		// 오른쪽 아래칸으로 굴러 떨어지기 수행
		} else {	// 왼쪽 오른쪽으로 굴러 떨어지지 않는다면 굳힘
			map[x - 1][y] = 'O';
		}
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무리 생각해도 개선할 방법이 떠오르질 않아서 다른 분들의 코드를 참고했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 화산탄이 떨어질때마다 시뮬레이션 한다면 첫번째 떨어지는 화산탄 경로와 두번째 떨어지는 화산탄 경로는 거의 비슷하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;458&quot; width=&quot;322&quot; height=&quot;295&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d30zj6/btreh1Sl4f0/HfAtmxGQF1K4gZ7goqgxek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d30zj6/btreh1Sl4f0/HfAtmxGQF1K4gZ7goqgxek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d30zj6/btreh1Sl4f0/HfAtmxGQF1K4gZ7goqgxek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd30zj6%2Fbtreh1Sl4f0%2FHfAtmxGQF1K4gZ7goqgxek%2Fimg.png&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;458&quot; width=&quot;322&quot; height=&quot;295&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;넣을 col에 경로가 저장되어 있지 않다면, 시뮬레이션&lt;/li&gt;
&lt;li&gt;경로가 저장되어 있다면, 빈칸이 나올때까지 마지막 요소를 pop한다.&lt;/li&gt;
&lt;li&gt;빈칸이 나왔다면 그곳에서 다시 시뮬레이션 해준다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시를 들어 설명해보겠다. 문제에 있는 예시를 약간 변형해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열은 인덱스 0부터 시작이므로 입력값에서 1 빼주는 것을 잊지말자.&lt;/p&gt;
&lt;pre id=&quot;code_1630943551317&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;6 4
....
....
..XX
....
XX.X
7
3
3
3
3
2
2
3&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;381&quot; width=&quot;591&quot; height=&quot;319&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/slKA2/btreh1MYRlO/wzasVe9YWgxsewKrfNoak0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/slKA2/btreh1MYRlO/wzasVe9YWgxsewKrfNoak0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/slKA2/btreh1MYRlO/wzasVe9YWgxsewKrfNoak0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FslKA2%2Fbtreh1MYRlO%2FwzasVe9YWgxsewKrfNoak0%2Fimg.png&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;381&quot; width=&quot;591&quot; height=&quot;319&quot; data-ke-mobilestyle=&quot;widthOrigin&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;706&quot; data-origin-height=&quot;378&quot; width=&quot;603&quot; height=&quot;323&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VeOif/btretbs1CCl/PkH1Dv55DxxWhZa2ffSc80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VeOif/btretbs1CCl/PkH1Dv55DxxWhZa2ffSc80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VeOif/btretbs1CCl/PkH1Dv55DxxWhZa2ffSc80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVeOif%2Fbtretbs1CCl%2FPkH1Dv55DxxWhZa2ffSc80%2Fimg.png&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;378&quot; width=&quot;603&quot; height=&quot;323&quot; data-ke-mobilestyle=&quot;widthOrigin&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;726&quot; data-origin-height=&quot;378&quot; width=&quot;598&quot; height=&quot;311&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9dbON/btreqJDLsAI/GLXXHcHA7ullLFK0DbbwA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9dbON/btreqJDLsAI/GLXXHcHA7ullLFK0DbbwA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9dbON/btreqJDLsAI/GLXXHcHA7ullLFK0DbbwA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9dbON%2FbtreqJDLsAI%2FGLXXHcHA7ullLFK0DbbwA0%2Fimg.png&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;378&quot; width=&quot;598&quot; height=&quot;311&quot; data-ke-mobilestyle=&quot;widthOrigin&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;740&quot; data-origin-height=&quot;386&quot; width=&quot;589&quot; height=&quot;307&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t3M1a/btretbzNuFY/3d4sEU4esQk0ycphzZbha0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t3M1a/btretbzNuFY/3d4sEU4esQk0ycphzZbha0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t3M1a/btretbzNuFY/3d4sEU4esQk0ycphzZbha0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft3M1a%2FbtretbzNuFY%2F3d4sEU4esQk0ycphzZbha0%2Fimg.png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;386&quot; width=&quot;589&quot; height=&quot;307&quot; data-ke-mobilestyle=&quot;widthOrigin&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;685&quot; data-origin-height=&quot;387&quot; width=&quot;586&quot; height=&quot;331&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baadLn/btretb0RLZM/tPbOw5i6xtJ7VoIcxeUePK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baadLn/btretb0RLZM/tPbOw5i6xtJ7VoIcxeUePK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baadLn/btretb0RLZM/tPbOw5i6xtJ7VoIcxeUePK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaadLn%2Fbtretb0RLZM%2FtPbOw5i6xtJ7VoIcxeUePK%2Fimg.png&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;387&quot; width=&quot;586&quot; height=&quot;331&quot; data-ke-mobilestyle=&quot;widthOrigin&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;694&quot; data-origin-height=&quot;382&quot; width=&quot;587&quot; height=&quot;323&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bweOLl/btreh2LRLs5/D7y1foQHXqNR9AvsP6ZYQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bweOLl/btreh2LRLs5/D7y1foQHXqNR9AvsP6ZYQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bweOLl/btreh2LRLs5/D7y1foQHXqNR9AvsP6ZYQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbweOLl%2Fbtreh2LRLs5%2FD7y1foQHXqNR9AvsP6ZYQK%2Fimg.png&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;382&quot; width=&quot;587&quot; height=&quot;323&quot; data-ke-mobilestyle=&quot;widthOrigin&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;709&quot; data-origin-height=&quot;378&quot; width=&quot;577&quot; height=&quot;307&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFPclf/btrepvTjUcU/IKEiJRx2O0xyu8uYdz3ZQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFPclf/btrepvTjUcU/IKEiJRx2O0xyu8uYdz3ZQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFPclf/btrepvTjUcU/IKEiJRx2O0xyu8uYdz3ZQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFPclf%2FbtrepvTjUcU%2FIKEiJRx2O0xyu8uYdz3ZQ0%2Fimg.png&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;378&quot; width=&quot;577&quot; height=&quot;307&quot; data-ke-mobilestyle=&quot;widthOrigin&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;703&quot; data-origin-height=&quot;379&quot; width=&quot;579&quot; height=&quot;312&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRPCTg/btrelRJC3RU/qB0hiqFWONulp7McVXfs00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRPCTg/btrelRJC3RU/qB0hiqFWONulp7McVXfs00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRPCTg/btrelRJC3RU/qB0hiqFWONulp7McVXfs00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRPCTg%2FbtrelRJC3RU%2FqB0hiqFWONulp7McVXfs00%2Fimg.png&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;379&quot; width=&quot;579&quot; height=&quot;312&quot; data-ke-mobilestyle=&quot;widthOrigin&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;pre id=&quot;code_1631035478225&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

R, C = map(int, input().split())
arr = []
checkpoint = [[] for _ in range(C)]
for _ in range(R):
    arr.append(list(input().rstrip()))
N = int(input())


def falling(x, y, line):
    while True:
        checkpoint[line].append([x, y])
        if x+1 == R or arr[x+1][y] == &quot;X&quot;:
            arr[x][y] = &quot;O&quot;
            return
        if arr[x+1][y] == &quot;O&quot;:
            if y-1 &amp;gt;= 0 and arr[x][y-1] == &quot;.&quot; and arr[x+1][y-1] == &quot;.&quot;:
                y -= 1
            elif y+1 &amp;lt; C and arr[x][y+1] == &quot;.&quot; and arr[x+1][y+1] == &quot;.&quot;:
                y += 1
            else:
                arr[x][y] = &quot;O&quot;
                return
        x += 1


for _ in range(N):
    _input = int(input())-1
    
    # 경로 저장이 되어 있다면
    while checkpoint[_input]:
        cx, cy = checkpoint[_input][-1]
        # 마지막 요소가 빈칸인지 확인 아니라면 빼버리기
        if arr[cx][cy] == '.':
            break
        checkpoint[_input].pop()

	# 마지막 요소부터 떨어지기 or 처음부터 떨어지기 수행
    if checkpoint[_input]:
        cx, cy = checkpoint[_input].pop()
        falling(cx, cy, _input)
    else:
        falling(0, _input, _input)

	# 도착지점 O표시 해주기
    cx, cy = checkpoint[_input].pop()
    arr[cx][cy] = &quot;O&quot;

for a in arr:
    print(&quot;&quot;.join(a))&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발/알고리즘</category>
      <category>구현</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/118</guid>
      <comments>https://hillier.tistory.com/118#entry118comment</comments>
      <pubDate>Wed, 8 Sep 2021 02:25:52 +0900</pubDate>
    </item>
    <item>
      <title>[백준 11723] 집합 (java)</title>
      <link>https://hillier.tistory.com/117</link>
      <description>&lt;figure id=&quot;og_1628756804965&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;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/cToBqn/hyLdBmoriX/s8DhlZ6KwWTN8n6zBYlyg0/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/cToBqn/hyLdBmoriX/s8DhlZ6KwWTN8n6zBYlyg0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;11723번: 집합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 수행해야 하는 연산의 수 M (1 &amp;le; M &amp;le; 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;비트마스킹&lt;/span&gt;을 배워서 사용하여 풀어보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 StringBuilder를 사용하지 않았더니 &lt;span style=&quot;color: #ee2323;&quot;&gt;시간초과&lt;/span&gt;가 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트마스킹 연산&lt;/p&gt;
&lt;pre id=&quot;code_1628757010247&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;num |= (1&amp;lt;&amp;lt;index) 	// index자리에 1넣기
num &amp;amp;= ~(1&amp;lt;&amp;lt;index) 	// index자리에 0넣기
num ^= (1&amp;lt;&amp;lt;index) 	// index자리 토글하기
num = 0 		// 모든 자리 0로 set
num = -1		// 모든 자리 1로 set&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1628756847353&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int M, result, num;
	static String command;
	static StringTokenizer st;
	static StringBuilder sb = new StringBuilder();

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		M = Integer.parseInt(br.readLine());
		for (int i = 0; i &amp;lt; M; i++) {
			st = new StringTokenizer(br.readLine());
			command = st.nextToken();
			if (!(command.equals(&quot;all&quot;) || command.equals(&quot;empty&quot;))) {
				num = Integer.parseInt(st.nextToken());
			}
			if (command.equals(&quot;add&quot;)) {
				result |= (1 &amp;lt;&amp;lt; num);
			} else if (command.equals(&quot;remove&quot;)) {
				result &amp;amp;= ~(1 &amp;lt;&amp;lt; num);
			} else if (command.equals(&quot;check&quot;)) {
				if ((result &amp;amp; (1 &amp;lt;&amp;lt; num)) &amp;gt; 0) {
					sb.append(&quot;1&quot;).append(&quot;\n&quot;);
				} else {
					sb.append(&quot;0&quot;).append(&quot;\n&quot;);
				}
			} else if (command.equals(&quot;toggle&quot;)) {
				result ^= (1 &amp;lt;&amp;lt; num);

			} else if (command.equals(&quot;all&quot;)) {
				result = -1;

			} else if (command.equals(&quot;empty&quot;)) {
				result = 0;
			}
		}
		System.out.println(sb.toString());
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발/알고리즘</category>
      <category>비트마스킹</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/117</guid>
      <comments>https://hillier.tistory.com/117#entry117comment</comments>
      <pubDate>Thu, 12 Aug 2021 17:32:20 +0900</pubDate>
    </item>
    <item>
      <title>[CS] 데이터베이스</title>
      <link>https://hillier.tistory.com/116</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;join&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계형 데이터베이스에서는 데이터의 중복을 피하기 위해 &lt;span style=&quot;color: #006dd7;&quot;&gt;정규화&lt;/span&gt;를 진행하는데 다시 원하는 결과를 도출하기 위해서 여러 테이블을 &lt;span style=&quot;color: #006dd7;&quot;&gt;조합&lt;/span&gt;할 필요가 있음. 이때 조인을 활용하여 관련 있는 컬럼을 기준으로 행을 합쳐주는 연산.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Innerjoin: 조인 조건을 만족하는 서로 연관된 내용만 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Outerjoin: 조인하는 여러 테이블에서 한쪽에는 데이터가 있고 한쪽에는 없는 경우 있는 쪽 테이블의 내용을 전부 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Crossjoin: 카디션 프로덕트를 한 결과로 두 테이블의 곱집합을 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;selfjoin: 자기 자신과 조인&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SQL (관계형 DB)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RDBMS에서 자료를 관리 및 처리하기 위해 설계된 언어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터는 정해진 데이터 &lt;span style=&quot;color: #006dd7;&quot;&gt;스키마&lt;/span&gt;에 따라 테이블에 저장되고, 관계를 통해 여러 테이블에 분산&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+ 데이터의 &lt;span style=&quot;color: #006dd7;&quot;&gt;중복이 없어&lt;/span&gt; 무결성을 보장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터간 관계를 맺고 있어 많은 &lt;span style=&quot;color: #006dd7;&quot;&gt;조인 연산이 필요&lt;/span&gt;함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 저장방식으로 인해 &lt;span style=&quot;color: #006dd7;&quot;&gt;수직적 확장만을 지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계를 맺고 있는 데이터가 자주 변경되거나, 명확한 스키마가 중요할 경우 사용&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;NOSQL (비관계형 DB)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계형 데이터 베이스가 아닌 다른 형태의 데이터 저장 기술&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종류: Document database, key value database, graph database&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+ 스키마가 없어서 유연함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+ 데이터 &lt;span style=&quot;color: #006dd7;&quot;&gt;읽는 속도 빠름&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+ &lt;span style=&quot;color: #006dd7;&quot;&gt;수직적 확장, 수평적 확장 모두 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 조인하고 싶을때는 컬렉션을 통해 &lt;span style=&quot;color: #006dd7;&quot;&gt;데이터를 복제&lt;/span&gt; -&amp;gt; 중복 위험, 데이터 수정시 모든 컬렉션 수정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 구조 결정을 미루게 될 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확한 데이터 구조를 알 수 없거나 읽기는 자주하지만 데이터 변경은 자주 없는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수평적 확장을 해야하는 경우(막대한 양의 데이터를 다루어야하는 경우)&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;수직적 확장: 단순히 데이터베이스 서버의 성능을 향상 (ex. CPU 업그레이드)&lt;br /&gt;수평적 확장: 더많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨 (하나의 db에서만 작동하지만 여러 호스트에서 작동)&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스의 상태를 변화시키기 위해 수행하는 &lt;span style=&quot;color: #006dd7;&quot;&gt;작업 단위&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션의 범위를 최소화 (데이터베이스 커넥션 수는 제한 -&amp;gt; 커넥션을 소유하는 시간이 길어진다면 여유 커넥션 줄어듬 -&amp;gt; 기다려야함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징 (ACID)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;원자성&lt;/span&gt;(Atomicity): 트랜잭션이 DB에 모두 반영이 되거나, 전혀 반영이 되지 않아야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일관성&lt;/span&gt;(Consistency): 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;독립성&lt;/span&gt;(Isolation): 각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;지속성&lt;/span&gt;(Durability): 트랜잭션이 성공적으로 완료되면 결과는 영구적으로 반영되어야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Commit: 하나의 트랜잭션이 성공적으로 끝났고, db가 일관성 있는 상태일 때 알려주기 위해 사용하는 연산&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Rollback: 하나의 트랜잭션 처리가 비정상적으로 종료되어 원자성이 깨진경우 last consistent state로 rollback할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두개 이상의 트랜잭션이 특정자원(테이블, 행)의 잠금을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착상태의 빈도를 낮추려면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션 자주 commit&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정해진 순서로 테이블 접근&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽기 잠금 획득의 사용을 피한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 단위의 잠금을 획득해 갱신을 직렬화 -&amp;gt; 한 테이블의 복수행을 복수 연결에서 순서없이 갱신하면 교착상태 발생하기 쉬움&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;트랜잭션 격리수준&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 트랜잭션에서 다른 트랜잭션이 변경한 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;독립적인 수행을 할 수 있도록 locking을 사용하는데 무조건 locking으로 동시에 수행되는 수많은 트랜잭션들을 순서대로 처리하면 db 성능 떨어짐 -&amp;gt; 효율적인 locking 방법이 필요함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시성과 데이터 무결성은 반비례 관계이며, 레벨이 높을수록, 발생비용도 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨 0: &lt;span style=&quot;color: #006dd7;&quot;&gt;Read Uncommited&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션에서 처리중이거나, 아직 commit 되지 않은 데이터를 읽는 것을 허용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨 1: &lt;span style=&quot;color: #006dd7;&quot;&gt;Read Commited&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;commit이 이루어진 트랜잭션만 조회 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨 2: &lt;span style=&quot;color: #006dd7;&quot;&gt;Repeatable Read&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션이 시작되고 종료되기 전까지 한번 조회한 값은 계속 같은 값이 조회됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션 영역에 해당하는 데이터에 대한 수정 불가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨 3: &lt;span style=&quot;color: #006dd7;&quot;&gt;Serializable&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션 영역에 해당하는 데이터에 대한 수정 및 입력 불가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;낮은 단계 Isolation Level을 활용할 때 발생하는 현상들&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;Dirty read&lt;/span&gt; (레벨 0)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜잭션 작업이 완료되지 않았는데도 데이터를 읽을 수 있도록 허용할 때 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;non-repeatable read&lt;/span&gt; (레벨 0,1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 트랜잭션에서 같은 쿼리를 두번 수행할 때 그 사이에 다른 트랜잭션이 수정/삭제 하면서 일관성이 깨지는 현상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;phantom read&lt;/span&gt; (레벨 0,1,2)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 레코드 삽입을 허용하기 때문에 나타나는 현상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발/CS</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/116</guid>
      <comments>https://hillier.tistory.com/116#entry116comment</comments>
      <pubDate>Tue, 10 Aug 2021 16:22:41 +0900</pubDate>
    </item>
    <item>
      <title>[백준 19598] 최소 회의실 개수 (python)</title>
      <link>https://hillier.tistory.com/115</link>
      <description>&lt;figure id=&quot;og_1627143716451&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;19598번: 최소 회의실 개수&quot; data-og-description=&quot;2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째&amp;nbsp;회의실에서&amp;nbsp;첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/19598&quot; data-og-url=&quot;https://www.acmicpc.net/problem/19598&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/g6R0l/hyKZb3FtoT/9ETYYewW3Ku31WKFylILY0/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/19598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/19598&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/g6R0l/hyKZb3FtoT/9ETYYewW3Ku31WKFylILY0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;19598번: 최소 회의실 개수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2개 회의실로 3개 회의를 모두 진행할 수 있다. 예를 들어, 첫번째&amp;nbsp;회의실에서&amp;nbsp;첫번째 회의를 진행하고 두번째 회의실에서 두번째 회의와 세번째 회의를 진행하면 된다. 1개 회의실로 3개 회의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;heap&lt;/span&gt;을 사용하는 방법과 &lt;span style=&quot;color: #ee2323;&quot;&gt;증감배열&lt;/span&gt;을 이용한 방법 2가지로 풀어보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;heap 사용하는 방법&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;arr를 시작점을 기준으로 정렬을 한다.&lt;/li&gt;
&lt;li&gt;존재하는 회의실의 끝나는 시간을 저장하는 heap rooms를 생성한다.&lt;/li&gt;
&lt;li&gt;arr를 돌면서 가장빨리 끝나는 회의실(rooms[0])과 비교한다.&lt;/li&gt;
&lt;li&gt;크거나 같다면 pop한다.&lt;/li&gt;
&lt;li&gt;작다면 회의실을 추가하는 것으로 answer을 더해준다.&lt;/li&gt;
&lt;li&gt;rooms에 추가해준다.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;끝나는 시간을 기준으로 오름차순을 하면 안되는 이유&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1627144747187&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;0 5
0 10
8 20
10 15&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력이 위와 같고, 오름차순으로 정렬했을 때에는&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;170&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xpvTp/btram9VAO8u/sOKKKvoxGtnaDdO0agxmp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xpvTp/btram9VAO8u/sOKKKvoxGtnaDdO0agxmp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xpvTp/btram9VAO8u/sOKKKvoxGtnaDdO0agxmp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxpvTp%2Fbtram9VAO8u%2FsOKKKvoxGtnaDdO0agxmp1%2Fimg.png&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;170&quot; data-ke-mobilestyle=&quot;widthOrigin&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;1031&quot; data-origin-height=&quot;130&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BKOwJ/btrao6Dx6ud/mRNK7CYz6TW3J8hC2Wj8rK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BKOwJ/btrao6Dx6ud/mRNK7CYz6TW3J8hC2Wj8rK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BKOwJ/btrao6Dx6ud/mRNK7CYz6TW3J8hC2Wj8rK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBKOwJ%2Fbtrao6Dx6ud%2FmRNK7CYz6TW3J8hC2Wj8rK%2Fimg.png&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;130&quot; data-ke-mobilestyle=&quot;widthOrigin&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;답은 왼쪽과 같이 2가 답이지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽과 같이 3번째 10, 15가 1번째 0, 5 뒤에 붙어서 4번째가 새로운 회의실을 만들 수 밖에 없게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1627143743566&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
import heapq
input = sys.stdin.readline

N = int(input())
arr = []
for _ in range(N):
    arr.append(list(map(int, input().split())))
arr.sort(key=lambda x: x[0])

rooms = [0]
answer = 1
for s, e in arr:
    if s &amp;gt;= rooms[0]:
        heapq.heappop(rooms)
    else:
        answer+=1
    heapq.heappush(rooms, e)

print(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;증감배열&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[시작하는 시간, 1]과 [끝나는 시간, -1]을 증감배열에 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;증감배열을 돌면서 가장 큰값을 구하여 출력한다.&lt;/p&gt;
&lt;pre id=&quot;code_1627143776249&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

N = int(input())
arr = []
for _ in range(N):
    s, e = map(int, input().split())
    arr.append([s, 1])
    arr.append([e, -1])
arr.sort()

cnt = 0
_max = 0
for x, v in arr:
    cnt += v
    if v == 1:
        _max = max(_max, cnt)

print(_max)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Heap</category>
      <category>증감배열</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/115</guid>
      <comments>https://hillier.tistory.com/115#entry115comment</comments>
      <pubDate>Sun, 25 Jul 2021 01:44:26 +0900</pubDate>
    </item>
    <item>
      <title>[백준 20207] 달력 (python)</title>
      <link>https://hillier.tistory.com/114</link>
      <description>&lt;figure id=&quot;og_1627054337844&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;20207번: 달력&quot; data-og-description=&quot;&amp;nbsp;수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을&amp;nbsp;가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서&amp;nbsp;달력에 표시해놨다.&amp;nbsp; 여름이 거의 끝나가자 장&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/20207&quot; data-og-url=&quot;https://www.acmicpc.net/problem/20207&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/drBlKo/hyKZ4gZpCh/mrWsb5IlTaSylk6mkhor40/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cxI9W9/hyKZbPzX7R/iHaivmnD6YzuTmspVmITS1/img.png?width=1566&amp;amp;height=488&amp;amp;face=0_0_1566_488,https://scrap.kakaocdn.net/dn/0QDXO/hyKZiBaq9p/S3K1AV14LPCCOopTkCRugK/img.png?width=1565&amp;amp;height=488&amp;amp;face=0_0_1565_488&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/20207&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/20207&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/drBlKo/hyKZ4gZpCh/mrWsb5IlTaSylk6mkhor40/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cxI9W9/hyKZbPzX7R/iHaivmnD6YzuTmspVmITS1/img.png?width=1566&amp;amp;height=488&amp;amp;face=0_0_1566_488,https://scrap.kakaocdn.net/dn/0QDXO/hyKZiBaq9p/S3K1AV14LPCCOopTkCRugK/img.png?width=1565&amp;amp;height=488&amp;amp;face=0_0_1565_488');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;20207번: 달력&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을&amp;nbsp;가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서&amp;nbsp;달력에 표시해놨다.&amp;nbsp; 여름이 거의 끝나가자 장&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;증감배열을 만들어서 풀어준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;336&quot; data-filename=&quot;캡처.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzli1F/btraqSjVzjL/r1dVBpdX0ezZumwji7WKlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzli1F/btraqSjVzjL/r1dVBpdX0ezZumwji7WKlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzli1F/btraqSjVzjL/r1dVBpdX0ezZumwji7WKlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzli1F%2FbtraqSjVzjL%2Fr1dVBpdX0ezZumwji7WKlk%2Fimg.png&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;336&quot; data-filename=&quot;캡처.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&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;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;증감배열 시작점에 1을 끝나는지점 다음을 -1을 더해준다.&lt;/li&gt;
&lt;li&gt;증감배열을 돌면서 높이를 계산한다&lt;/li&gt;
&lt;li&gt;높이가 0이 아니라면 너비를 1더해주고 높이의 최대값을 구한다.&lt;/li&gt;
&lt;li&gt;높이가 0이라면 면적을 구한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1627054328511&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
calendar = [0]*367
arr = []
for _ in range(N):
    s, e = map(int, input().split())
    calendar[s] += 1
    calendar[e+1] -= 1

width = 0
height = 0
answer = 0
for i in range(1, 367):
    calendar[i] += calendar[i-1]
    if calendar[i] == 0:
        answer += width*height
        width = 0
        height = 0
    else:
        width += 1
        height = max(height, calendar[i])

print(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>증감배열</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/114</guid>
      <comments>https://hillier.tistory.com/114#entry114comment</comments>
      <pubDate>Sat, 24 Jul 2021 00:35:55 +0900</pubDate>
    </item>
    <item>
      <title>네이버 부스트캠프 웹모바일 6기 합격 후기 (전공자)</title>
      <link>https://hillier.tistory.com/113</link>
      <description>&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;2021년 하반기에 풀타임(월~금, 10:00~19:00)으로 참여하실 수 있는 분&lt;/li&gt;
&lt;li&gt;분야에 관계없이 개발 경력&amp;nbsp;2년 미만인 분&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;선발 프로세스&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;서류 접수&lt;/li&gt;
&lt;li&gt;1차 온라인 코딩테스트&lt;/li&gt;
&lt;li&gt;2차 온라인 코딩테스트&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 서류 접수&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서류 접수할 때 접수비로 만원을 냄.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에세이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;어떤 계기로 개발자를 꿈꾸게 되었나요? 개발자로 성장하는데 부스트캠프를 선택한 이유와 부스트캠프에서 이루고자 하는 목표를 함께 작성해주세요. (500자 내외)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot; data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;첫 번째 인턴 내용과 저의 꿈을 먼저 쓰고 이 꿈을 이루기 위해 부스트 캠프를 하고 싶다고 적었음. 약 700자 작성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;본인이 소프트웨어 개발을 더 잘하고 싶어서 참여했던 교육이나 시도했던 경험을 적어주세요. 왜 그러한 교육이나 경험을 선택했고, 그 과정에서 어떤 노력을 기울였는지 구체적으로 적어주세요. (500자 내외)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot; data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;두 번째 인턴 내용 약 600자 작성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;가장 재미있게 이수했던 컴퓨터 공학 관련 과목은 무엇인가요? 해당 과목을 왜 선택했고, 재미있게 학습할 수 있었던 이유를 작성해주세요. 학교에서 이수한 과목이 없는 경우, 별도로 학습했던 내용을 바탕으로 작성해주세요. (300자 내외)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot; data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;전공자이므로 데이터베이스 수업으로 정하고 배운 내용과 플젝한 내용 약 300자 작성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;무언가에 깊이 빠지거나 파고 들어본 적이 있나요? 주변에서 인정할 정도로 깊이 있게 몰입한 경험을 소개해주세요. 그렇게 몰입할 수 있었던 이유와 그 경험이 현재 본인에게 어떤 영향을 미쳤는지를 중심으로 작성해주세요. 꼭 개발과 관련된 경험이 아니어도 좋습니다. (500자 내외)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot; data-token-index=&quot;0&quot; data-reactroot=&quot;&quot;&gt;게임 상위 티어 올린 이야기 서술하고 좋아하는 것에 대한 몰입도가 높음을 어필. 약 500자 작성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;포트폴리오 X, 블로그, 깃허브 제출 X&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 1차 코딩 테스트&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객관식 문제 + 알고리즘 2문제로 구성 (캠 x)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객관식 문제는 문제가 생각보다 어려워서 비전공자들에게 어려웠을것 같음. 모두 고르는 문제가 많아 찍기도 못하게 되있었음. 차라리 뒤에 알고리즘 문제가 더 쉬웠던 것 같음.. 알고리즘 문제도 까다롭긴 했지만 이해하고 나면 금방 풀 수 있었다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;중간 발표&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 2차 코딩 테스트&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘 3문제로 구성 (캠 O, 검색 가능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온라인 감독을 하고 검색은 가능해서 열심히 풀었지만 사실 한문제 틀리게 푼걸 끝나고 앎...&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;최종합격&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;271&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dda8hy/btq9AicMTPV/9E5F51uSWEEZVIorSWXmpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dda8hy/btq9AicMTPV/9E5F51uSWEEZVIorSWXmpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dda8hy/btq9AicMTPV/9E5F51uSWEEZVIorSWXmpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdda8hy%2Fbtq9AicMTPV%2F9E5F51uSWEEZVIorSWXmpk%2Fimg.png&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;271&quot; data-ke-mobilestyle=&quot;widthOrigin&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;p data-ke-size=&quot;size16&quot;&gt;SSAFY랑 네이버 부캠 중에 무엇을 할까 고민을 많이 했음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부캠은 풀스택이라고 하긴 하지만 javascript를 배우는 것을 보아 프론트를 희망하는 사람들에겐 좋은 것 같음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;후에 인턴으로 많이들 뽑혀가고 전환된 사례도 있어서 고민했음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 나는 백엔드 개발자가 꿈이고 지원을 많이 해주는 SSAFY를 선택하기로 했음!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/113</guid>
      <comments>https://hillier.tistory.com/113#entry113comment</comments>
      <pubDate>Tue, 13 Jul 2021 23:16:20 +0900</pubDate>
    </item>
    <item>
      <title>[백준 2224] 명제 증명 (python)</title>
      <link>https://hillier.tistory.com/112</link>
      <description>&lt;figure id=&quot;og_1626098345960&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2224번: 명제 증명&quot; data-og-description=&quot;첫째 줄에 출력할 명제의 개수 X개를 출력한다. 다음 X개의 줄에 증명될 수 있는 명제를 한 줄에 하나씩 출력한다. 명제를 출력할 때에는 전건 순으로 정렬하고, 전건이 같은 경우에는 후건 순으&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2224&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2224&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CG8aE/hyKRSCnaOA/3oG3WAQAyxcPGKVscok6WK/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/2224&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2224&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CG8aE/hyKRSCnaOA/3oG3WAQAyxcPGKVscok6WK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2224번: 명제 증명&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 출력할 명제의 개수 X개를 출력한다. 다음 X개의 줄에 증명될 수 있는 명제를 한 줄에 하나씩 출력한다. 명제를 출력할 때에는 전건 순으로 정렬하고, 전건이 같은 경우에는 후건 순으&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;플로이드-워셜&lt;/span&gt; 알고리즘을 사용한다. A -&amp;gt; B, B -&amp;gt; C 일 때, A-&amp;gt; C인가를 확인하는 문제에서 자주 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;A(65)를 0, z(122)를 57로 인덱스를 만들어주는 배열 &lt;span style=&quot;color: #006dd7;&quot;&gt;arr&lt;/span&gt;를 생성한다.&lt;/li&gt;
&lt;li&gt;전, 후가 같은 문자와 같은 명제들은 무시하고 배열에 저장한다.&lt;/li&gt;
&lt;li&gt;플로이드-워셜을 사용하여 서로 연결해준다.&lt;/li&gt;
&lt;li&gt;연결고리 개수를 출력하고 알파벳 순으로 답을 출력한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1626098336264&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

N = int(input())
arr = [[0]*58 for _ in range(58)]
cnt = 0
for _ in range(N):
    _input = input()
    if _input[0] == _input[5]:
        continue
    if not arr[ord(_input[0])-65][ord(_input[5])-65]:
        arr[ord(_input[0])-65][ord(_input[5])-65] = 1
        cnt += 1

for k in range(58):
    for i in range(58):
        for j in range(58):
            if i != j and not arr[i][j] and arr[i][k] and arr[k][j]:
                arr[i][j] = 1
                cnt += 1

print(cnt)
for i in range(58):
    for j in range(58):
        if arr[i][j]:
            print(chr(i+65) + &quot; =&amp;gt; &quot; + chr(j+65))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발/알고리즘</category>
      <category>플로이드-워셜</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/112</guid>
      <comments>https://hillier.tistory.com/112#entry112comment</comments>
      <pubDate>Mon, 12 Jul 2021 23:23:58 +0900</pubDate>
    </item>
    <item>
      <title>SSAFY 6기 합격후기 (전공자)</title>
      <link>https://hillier.tistory.com/111</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;지원자격&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연 령&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만 29세 이하 ※ 1991년 7월 1일 이후 출생자 限&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학 력&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;국내외 4년제 대학 졸업자(학사이상) ※ 졸업자 및 2021년 8월 졸업 예정자, 전공무관&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재직여부&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 미취업자 대상&lt;/li&gt;
&lt;li&gt;인터뷰일부터 본 교육 시작일 전까지 재직(예정)자 지원불가 (사업장 건강보험 및 국민연금 가입 여부기준)&lt;/li&gt;
&lt;li&gt;※ 졸업예정자는 취업여부 무관 지원 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기 타&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;교육기간 중 통학 가능한 자(별도 숙소 제공 없음)&lt;/li&gt;
&lt;li&gt;병역필 또는 면제자로 해외여행에 결격 사유가 없는 자&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;선발 프로세스&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;지원서 접수&lt;/li&gt;
&lt;li&gt;SW 적성진단&lt;/li&gt;
&lt;li&gt;Interview&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 지원서 접수&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;최종학력: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;전공자, 졸업예정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;경력사항: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;인턴경험 2회 (2개월, 4개월)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;병역사항: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;해당없음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;어학사항: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;TOEIC 790점&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;교육 희망지역: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;1순위: 부산 / 2순위: 서울 / 3순위: 선택 X&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;SW 자격/등급: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;정보처리기사&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;교육이수/개발경험/수상경력: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;교내 알고리즘대회 1등, AWS를 이용한 클라우드 구축(프로젝트), CCTV만들기(프로젝트)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;에세이: &lt;span style=&quot;background-color: #f6e199;&quot;&gt;에세이는 인턴했던 경험을 각각 하나씩 나누어서 썼음. 각 700자 정도 작성.&amp;nbsp;&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SW에 관심을 갖게 된 계기와 향후 어떤 SW개발자로 성장하고 싶은지, 이유는 무엇인지 SW관련 경험(학습, 취미, 사용경험 등)을 토대로 작성 바랍니다. (500~1000자)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;취업을 목표로 했던 활동(회사 입사지원 및 면접 참석, 인턴 및 직무체험, 취업을 위한 학습 및 자격증 취득 등) 중에 가장 기억에 남는 경험을 기술하고, 이를 통해 배우고 느낀 점 등을 작성해 주시길 바랍니다. (500~1000자)&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. SW 적성진단&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 수리/추리 논리력 진단 (15문제 30분)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GSAT이랑 비슷하게 나옴. 서점에 GSAT 수리/추리 부분만 따로 모아놓은 책 사서 푸는 것을 추천&lt;/li&gt;
&lt;li&gt;시간이 모자라서 빨리 푸는 것이 중요하다. 온라인 시험이라 화면 보고 풀어야하는 점이 어려웠음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Computational Thinking 진단 (5문제 30분)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;총 5문제가 나오는데 거기에 소문제 5개씩 더있음.&lt;/li&gt;
&lt;li&gt;백준 알고리즘 문제에 입력이 주어지면 코드 짜는 과정은 없고 단지 출력값만을 구해야함.&lt;/li&gt;
&lt;li&gt;맨날 알고리즘 문제를 풀때 입력값들이 적은것들은 금방 계산할 수 있었으나 입력값이 점점 많아지면서 머리가 복잡해지는 느낌..&lt;/li&gt;
&lt;li&gt;이것도 시간이 많이 부족하기 때문에 쉬운 것부터 푸는 것을 추천.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1차 발표&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1차 발표 후에 오픈카톡에서 면접 스터디를 구하는 사람들이 많음.&lt;/li&gt;
&lt;li&gt;나가는 것이 귀찮아서 비대면으로 진행하는 스터디를 했음.&lt;/li&gt;
&lt;li&gt;PT면접과 에세이면접을 나누어서 진행했고 스터디원들이 하도 꼼꼼히 질문해주는 탓에 오히려 면접때는 느슨했음.&lt;/li&gt;
&lt;li&gt;에세이는 각자 공유하고 질문을 미리 만들어온 후에 모의면접 식으로 질문한 후에 피드백 진행&lt;/li&gt;
&lt;li&gt;PT는 4차 산업혁명 대주제 IOT, 빅데이터, 인공지능, 블록체인, 클라우드, AR/VR 같은 것들을 나누고 관련 신문기사를 수집하여 공유. 그 기술에 대한 간단한 설명 + 장단점 + 활용할 수 있는 방안 들을 생각해서 진행.&lt;/li&gt;
&lt;li&gt;스터디에서 내가 맡은 부분이 주제로 나와서 너무너무 도움이 되었음.&lt;/li&gt;
&lt;li&gt;참고로 스터디원들 모두 합격했다고 함.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;001&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Interview&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이전 기수는 서천에 있는 인재개발원에서 봤다고 들었으나 이번 기수는 강남에 있는 멀티캠퍼스에서 봤음.&lt;/li&gt;
&lt;li&gt;면접 시간은 아침이여서 그전날 올라가서 근처 모텔 잡고 잤음. 거주지에 따라 교통비를 지급해줌.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Computational Thinking 진단 (2문제 12분)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이전에 온라인으로 푼 것과 동일.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. PT면접 + 에세이면접&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코로나 때문에 분리된 공간에서 준비되어있는 노트북으로 화상면접 진행.&lt;/li&gt;
&lt;li&gt;교육생을 뽑는만큼 내가 이 교육이 왜 필요하고, 열심히 할 것이라는 열정을 어필.&lt;/li&gt;
&lt;li&gt;마지막에 할 말있냐고 해서 진짜 싸피 하고 싶다고 어필했음 ㅋㅋ&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2차 발표&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;505&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMCvZV/btq8rfvCGrh/Rs0NGDtfHx0pOKkJAWaPV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMCvZV/btq8rfvCGrh/Rs0NGDtfHx0pOKkJAWaPV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMCvZV/btq8rfvCGrh/Rs0NGDtfHx0pOKkJAWaPV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMCvZV%2Fbtq8rfvCGrh%2FRs0NGDtfHx0pOKkJAWaPV0%2Fimg.png&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;505&quot; data-ke-mobilestyle=&quot;widthOrigin&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;007&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>개발</category>
      <author>힐리어</author>
      <guid isPermaLink="true">https://hillier.tistory.com/111</guid>
      <comments>https://hillier.tistory.com/111#entry111comment</comments>
      <pubDate>Wed, 30 Jun 2021 03:17:52 +0900</pubDate>
    </item>
  </channel>
</rss>