<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>대엉코딩</title>
    <link>https://daeuungcode.tistory.com/</link>
    <description>소신</description>
    <language>ko</language>
    <pubDate>Sun, 26 Jul 2026 23:29:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>대엉</managingEditor>
    <image>
      <title>대엉코딩</title>
      <url>https://tistory1.daumcdn.net/tistory/3379224/attach/39b20279956e4533a896abf1661479b5</url>
      <link>https://daeuungcode.tistory.com</link>
    </image>
    <item>
      <title>스케줄러(scheduler) 종류</title>
      <link>https://daeuungcode.tistory.com/245</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;0. 스케줄링의 목적&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; font-family: 'Noto Sans Light';&quot;&gt;- CPU나 자원을 효율적으로 사용하기 위함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; font-family: 'Noto Sans Light';&quot;&gt;- 멀티 프로그래밍에서 CPU 효율을 극대화 하기 위함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;1. 스케줄러 종류&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 장기 스케줄러 ( Long Term )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 단기 스케줄러 ( Short Term )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 중기 스케줄러 ( Medium Term )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;2. 장기 스케줄러&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 디스크와 메모리 사이의 스케줄링을 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 디스크에 비해 메모리 크기는 한정되어 있음으로 수행해야할 일(pool)에서 선택적으로 프로세스에 메모리를 할당하여&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; Ready Queue로 보내는 역할&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 즉, 실행을 위해 메모리에 적재한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- I/O가 자주 필요한 프로세스들은 I/O 시간이 오래 걸리므로 이러한 프로세스들만 많이 올라가면 CPU가 비효율적으로 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; 사용됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- CPU 사용이 많은 프로세스들만 올라가면 사용자는 불편함을 느낄 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 적절히 섞어서 올려주는 것이 장기 스케줄러의 역할&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;753&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/VdAEH/btrfzlhwXnB/pZujKcEbZluNvFWXoV6pt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VdAEH/btrfzlhwXnB/pZujKcEbZluNvFWXoV6pt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VdAEH/btrfzlhwXnB/pZujKcEbZluNvFWXoV6pt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVdAEH%2FbtrfzlhwXnB%2FpZujKcEbZluNvFWXoV6pt1%2Fimg.png&quot; data-origin-width=&quot;753&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;3. 단기 스케줄러&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 메모리와 CPU사이의 스케줄링을 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- Ready Queue에서 어떤 프로세스를 Running 할 지 결정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 10개의 프로세스가 장기 스케줄러에 의해 Ready Queue로 올라왔다고 가정하자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- CPU는 이 중 하나의 프로세스를 선택해서 실행해야 하는데 그것을 스케줄링 해주는 것이 단기 스케줄러&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; (CPU 스케줄러라고도한다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- CPU 자원을 효율적으로 사용하기 위함이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 사용자에게 여러개의 프로세스를 동시실행되고 있는 것 처럼 보이게 하기위해 아주 짧은 시간으로 쪼개서 스케줄링&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 또는 A프로세스를 실행하다가 I/O를 해야하면 이를 기다리는 시간동안 B프로세스를 올려서 작업한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 매우 짧은 시간단위로 수행되므로 단기 스케줄러라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;311&quot; data-filename=&quot;단기 스케줄러.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RWylI/btrfsdZbQRB/VWlijsaROj1B4UOwMETcq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RWylI/btrfsdZbQRB/VWlijsaROj1B4UOwMETcq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RWylI/btrfsdZbQRB/VWlijsaROj1B4UOwMETcq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRWylI%2FbtrfsdZbQRB%2FVWlijsaROj1B4UOwMETcq0%2Fimg.png&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;311&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;4. 중기 스케줄러&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 너무 많은 프로세스가 메모리에 올라와있을 경우 이를 다시 디스크로 보낸다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- CPU를 사용하려는 프로세스들 사이에서 중재하여 일시 보류, 재활성화를 수행한다. (swapper라고도 한다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 일정시간 이상 CPU에서 수행되지 않았거나, 우선순위를 기준으로 판단하여 내려보낸다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>학부생 공부/운영체제(os)</category>
      <category>CPU</category>
      <category>OS</category>
      <category>RAM</category>
      <category>단기</category>
      <category>디스크</category>
      <category>스케줄러</category>
      <category>스케줄링</category>
      <category>운영체제</category>
      <category>장기</category>
      <category>중기</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/245</guid>
      <comments>https://daeuungcode.tistory.com/245#entry245comment</comments>
      <pubDate>Mon, 20 Sep 2021 18:59:22 +0900</pubDate>
    </item>
    <item>
      <title>HTTPS  vs  HTTPS</title>
      <link>https://daeuungcode.tistory.com/244</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. &lt;b&gt;HTTP&lt;/b&gt;란?&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- Hypert Text Transfer Protocol&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 80번 포트 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 암호화되지 않은 평문 데이터를 전송하는 프로토콜&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- Application 레벨의 프로토콜이고, TCP/IP 위에서 작동&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- Stateless 프로토콜&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. &lt;b&gt;HTTPS&lt;/b&gt;란?&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- Hyper Text Transfer Protocol Secure&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 443번 포트 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 데이터 암호화가 추가된 프로토콜&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 공개키 암호화방식 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;(간단하게 말씀드리면 공개키 암호화방식에서는 공개키로 암호화, 개인키로 복호화는 암호화/복호화로 사용되고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;개인키로 암호화, 공개키로 복호화 하는 과정을 통해 자신이 작성한? 것임을 서명하는 용도로 사용)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 통신과정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1) P기업은 HTTPS를 적용하기 위해 공개키/개인키를 발급한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2) &lt;span style=&quot;color: #666666;&quot;&gt;CA(Certificate authority) 기업에 돈을 내고 공개키를 저장하는 인증서 발급을 요청(CA는 엄격하게 인증된 기업)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;3) CA기업은 P기업의공개키 를 포함한 정보들을 기반으로 인증서를 생성하고, 이를 CA기업의 개인키로 암호화하여 P기업에 제공&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;4) P기업은 클라이언트(고객)에게 이 암호화된 인증서를 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;5) 브라우저는 CA기업의 공개키를 가지고 암호화된 인증서를 복호화한다. (브라우저는 인증된 CA기업의 공개키를 가지고 있음)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;6) 5의과정을 통해 P기업의 공개키를 알게되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;7) P기업의 공개키로 데이터를 암호화해서 요청을 보낸다. (P기업의 개인키는 P기업만 알고있으므로 P기업만 요청을 확인가능하다., 중간에 제 3자는 이 암호화된 요청을 볼 수 없다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;3. &lt;b&gt;HTTP&lt;/b&gt;와 &lt;b&gt;HTTPS&lt;/b&gt;의 장단점,활용&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;- HTTP는 보안에 취약, HTTPS는 안전하게 데이터를 주고 받을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;- HTTPS는 암호화/복호화의 추가과정 때문에 시간이 더 소요된다고 하지만&amp;nbsp; 요즘은 체감할 정도로 심하진 않다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;- CA기업 인증서 발급을 위한 추가비용 소모된다(HTTPS).&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;- 거의 대부분 HTTPS를 쓴다. 구글등의 검색포털에서 이를 권장하고 노출도 증가등의 이점이 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>학부생 공부/네트워크</category>
      <category>cs</category>
      <category>http</category>
      <category>https</category>
      <category>SSL인증서</category>
      <category>공개키</category>
      <category>네트워크</category>
      <category>보안</category>
      <category>암호화</category>
      <category>전공</category>
      <category>컴퓨터공학</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/244</guid>
      <comments>https://daeuungcode.tistory.com/244#entry244comment</comments>
      <pubDate>Sun, 19 Sep 2021 21:24:54 +0900</pubDate>
    </item>
    <item>
      <title>멀티 프로세스 VS 멀티 스레드</title>
      <link>https://daeuungcode.tistory.com/243</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. &lt;b&gt;멀티 프로세스&lt;/b&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;- 하지만 멀티 스레드에 비해 더 많은 메모리공간과 컨텍스트 스위치로 인한 시간을 많이 차지한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 여러개의 프로세스가 필요한 작업을 하나의 프로세스내의 여러개의 스레드로 나눠 수행하면 메모리 공간과 시스템 자 원소모, 실행시간을 줄일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. &lt;b&gt;멀티스레드&lt;/b&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;- 하나의 스레드에 문제가 발생하면, 다른 스레드들도 영향을 받을 수 있다.&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; &amp;nbsp;( 스택은 각각 가지지만, 힙 공간은 공유함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이 점은 문제가 되기도 한다.... 멀티 프로세스는 프로세스간 공유하는 자원이 없으므로 동일한 자원에 동시에 접근하지 않지만, 멀티 스레드는 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 잘못 수정하거나, 예상치 못한 값으로 수정되는 경우가 발생할 수 있어서 동기화 작업이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 작업 순서와 공유자원 처리에 대해 신경써야 한다. 이 과정에서 병목현상으로 인한 성능 저하가 나타날 수 있다.&amp;nbsp;&lt;/p&gt;</description>
      <category>학부생 공부/운영체제(os)</category>
      <category>OS</category>
      <category>멀티스레드</category>
      <category>멀티프로세스</category>
      <category>문맵전환</category>
      <category>스레드</category>
      <category>스위칭</category>
      <category>스택</category>
      <category>운영체제</category>
      <category>프로세스</category>
      <category>힙</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/243</guid>
      <comments>https://daeuungcode.tistory.com/243#entry243comment</comments>
      <pubDate>Sun, 19 Sep 2021 13:12:20 +0900</pubDate>
    </item>
    <item>
      <title>백준 1920 [C++]</title>
      <link>https://daeuungcode.tistory.com/242</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1920&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1920&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632020925335&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;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/bpVjbF/hyLFuznJXX/3TrIok4VL99JHiQ7OCblv0/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/bpVjbF/hyLFuznJXX/3TrIok4VL99JHiQ7OCblv0/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;1920번: 수 찾기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&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; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 풀이방법&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- N개의 수중에 주어지는 M개의 수들이 각각 존재하는 지 확인해야합니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 선형탐색을 진행할 경우 O(N*M) 이므로 약 10,000,000,000 는 시간초과에 걸릴 것 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- O(NlogN) 정렬 + O(M*logN) 이분탐색 으로 해결했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 주의사항&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 나의코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1632021101270&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;algorithm&amp;gt;
using namespace std;

int Narr[100000];
int N, M;
bool existnum(int target) {
	int ep = N - 1;
	int sp = 0;
	int mid;
	while (sp&amp;lt;=ep) {
		mid = (sp + ep) / 2;
		if (Narr[mid] == target) { return true; }
		else if (Narr[mid] &amp;lt; target) {
			sp = mid + 1;
		}
		else if (Narr[mid] &amp;gt; target) {
			ep = mid - 1;
		}
	}
	return false;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	
	cin &amp;gt;&amp;gt; N;
	for (int i = 0; i &amp;lt; N; i++) {
		cin &amp;gt;&amp;gt; Narr[i];
	}
	sort(Narr, Narr+N); //이분탐색을 위한 정렬
	cin &amp;gt;&amp;gt; M;
	int target;
	for (int i = 0; i &amp;lt; M; i++) {
		cin &amp;gt;&amp;gt; target;
		cout &amp;lt;&amp;lt; existnum(target)&amp;lt;&amp;lt;&quot;\n&quot;;
	}
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘 문제풀이/탐색</category>
      <category>1920</category>
      <category>BOJ</category>
      <category>c++</category>
      <category>ps</category>
      <category>백준</category>
      <category>수 찾기</category>
      <category>알고리즘</category>
      <category>이분탐색</category>
      <category>정렬</category>
      <category>탐색</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/242</guid>
      <comments>https://daeuungcode.tistory.com/242#entry242comment</comments>
      <pubDate>Sun, 19 Sep 2021 12:12:36 +0900</pubDate>
    </item>
    <item>
      <title>백준 2003 [C++]</title>
      <link>https://daeuungcode.tistory.com/241</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2003&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2003&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632019243254&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;2003번: 수들의 합 2&quot; data-og-description=&quot;첫째 줄에 N(1 &amp;le; N &amp;le; 10,000), M(1 &amp;le; M &amp;le; 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], &amp;hellip;, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2003&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2003&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/n09MV/hyLFuF8IBI/Wi3QI029nQdq2B3kmMpgQk/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/2003&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2003&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/n09MV/hyLFuF8IBI/Wi3QI029nQdq2B3kmMpgQk/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;2003번: 수들의 합 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N(1 &amp;le; N &amp;le; 10,000), M(1 &amp;le; M &amp;le; 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], &amp;hellip;, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 풀이방법&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- N의 숫자의 범위가 큰편입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- O(N^2)은 100,000,000 시간제한 0.5초에 타임리밋 걸릴 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 단, 이는 A[i]가 자연수 (음수 아님) 조건이 있기 때문에 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 주의사항&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 나의코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1632019555742&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;vector&amp;gt;
#include&amp;lt;string&amp;gt;
using namespace std;

int N, M;
vector&amp;lt;long long&amp;gt; arr;

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

	cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
	long long tt;
	for (int i = 0; i &amp;lt; N; i++) {
		cin &amp;gt;&amp;gt; tt;
		arr.push_back(tt);
	}
	int tmpsum = arr[0];
	int resultcount = 0;
	int sp = 0;
	int ep = 0;
	while (1) {
		if (tmpsum == M) {
			resultcount++;
			tmpsum -= arr[sp];
			sp++;
			ep++;
			if (ep == N) break;
			tmpsum += arr[ep];
		}
		else if (tmpsum &amp;lt; M) {
			ep++;
			if (ep == N) break;
			tmpsum += arr[ep];
		}
		else if (tmpsum &amp;gt; M) {
			tmpsum -= arr[sp];
			sp++;
		}
	}
	cout &amp;lt;&amp;lt; resultcount;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘 문제풀이/탐색</category>
      <category>2003</category>
      <category>BOJ</category>
      <category>백준</category>
      <category>수들의 합</category>
      <category>수들의 합 2</category>
      <category>시간복잡도</category>
      <category>시간초과</category>
      <category>알고리즘</category>
      <category>탐색</category>
      <category>투포인터</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/241</guid>
      <comments>https://daeuungcode.tistory.com/241#entry241comment</comments>
      <pubDate>Sun, 19 Sep 2021 11:47:10 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] 디렉토리, 역할, 명령어</title>
      <link>https://daeuungcode.tistory.com/238</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;유닉스에서 모든 것은 파일이다&quot; - 유닉스프로그래밍 수강하면서 기억나는 말... ㅋㅋㅋ&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;h4 data-ke-size=&quot;size20&quot;&gt;1. 리눅스 디렉토리 구조&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- linux file system hierarchy standard가 존재.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 제일 상단에 root filesystem(/)가 있는 트리구조.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 디렉토리 종류 및 역할&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;b&gt; /(root) : 최상위 디렉토리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;/bin (/usr/bin) : 리눅스 기본 명령어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;/sbin (/usr/sbin) : 리눅스 시스템 관리용 명령어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /usr : 애플리케이션, 유틸리티 설치 디렉토리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /etc : 시스템 설정파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;/var : 비교적 변동이 잦은 파일 ( /var/log- 로그파일 존재 )&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /tmp : 임시디렉토리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;/proc : 메모리에서 동작중인 프로세스들 정보를 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;/sys : 시스템 하드웨어 정보나 가상 파일 시스템들&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /root : 시스템 최고 관리자인 root 사용자의 홈 디렉토리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /home : 일반 사용자들의 홈 디렉토리 ( ubuntu가 보통 여기 존재 /home/ubuntu 익숙.....)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /dev : 하드웨어 장치 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- /lib : 라이브러리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 기본적인 리눅스 명령어&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- pwd : 현재 작업중인 디렉토리 [present working directory]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- cd : 디렉토리 이동 [change directory]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ls : 위치한 디렉토리의 파일목록 표시&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- mkdir : 디렉토리 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- cp : 파일을 복사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- mv : 파일을 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- rm : 파일을 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- cat : 파일의 내용을 화면에 출력하거나 파일을 만드는 명령어 [ concatenate ]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- chmod : 권한 변경 (rwxrwxrwx)&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- touch : 파일이나 디렉토리의 최근 업데이트 일자를 현재시간으로 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- find : 특정 파일이나 디렉토리를 검색한다. [ find 경로&amp;nbsp; -name 파일명 ]&lt;/p&gt;</description>
      <category>학부생 공부/리눅스</category>
      <category>Linux</category>
      <category>unix</category>
      <category>디렉토리</category>
      <category>디렉토리구조</category>
      <category>리눅스</category>
      <category>리눅스 명령어</category>
      <category>명령어</category>
      <category>우분투</category>
      <category>유닉스</category>
      <category>파일</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/238</guid>
      <comments>https://daeuungcode.tistory.com/238#entry238comment</comments>
      <pubDate>Wed, 18 Aug 2021 00:16:30 +0900</pubDate>
    </item>
    <item>
      <title>백준 1932 [C++]</title>
      <link>https://daeuungcode.tistory.com/237</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1932&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1932&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1628577429859&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;1932번: 정수 삼각형&quot; data-og-description=&quot;첫째 줄에 삼각형의 크기 n(1 &amp;le; n &amp;le; 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1932&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1932&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b75eRL/hyLcrjaUs9/R4MrBGXGhNFEKd7siJAqcK/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/1932&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1932&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b75eRL/hyLcrjaUs9/R4MrBGXGhNFEKd7siJAqcK/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;1932번: 정수 삼각형&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 삼각형의 크기 n(1 &amp;le; n &amp;le; 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 풀이방법&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 최대 깊이가 500입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 점화식을 세우고, 0과 i==j 일때 (한변에서 양 끝은 선택권이 한개씩 뿐) 처리를 따로 해주시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 주의사항&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 나의코드&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1628577525772&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;vector&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;algorithm&amp;gt;
#include&amp;lt;queue&amp;gt;
using namespace std;

int triangle[500][500];
int dp[500][500];
int n;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin &amp;gt;&amp;gt; n;
	for (int i = 0; i &amp;lt; n; i++) {
		for (int j = 0; j &amp;lt; i + 1; j++) {
			cin &amp;gt;&amp;gt; triangle[i][j];
			dp[i][j] = -1;
		}
	}
	dp[0][0] = triangle[0][0];
	
	for (int i = 1; i &amp;lt; n; i++) {
		for (int j = 0; j &amp;lt; i + 1; j++) {
			if (j == 0) {
				dp[i][j] = dp[i - 1][j] + triangle[i][j];
			}
			else if (j == i) {
				dp[i][j] = dp[i - 1][j - 1] + triangle[i][j];
			}
			else {
				dp[i][j] = max(dp[i - 1][j - 1], dp[i - 1][j]) + triangle[i][j];
			}
		}
	}
	int maxr = -1;
	for (int i = 0; i &amp;lt; n; i++) {
		maxr = max(dp[n - 1][i], maxr);
	}
	cout &amp;lt;&amp;lt; maxr &amp;lt;&amp;lt; &quot;\n&quot;;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘 문제풀이/다이나믹 프로그래밍</category>
      <category>1932</category>
      <category>c++</category>
      <category>dp</category>
      <category>경우의 수</category>
      <category>다이나믹프로그래밍</category>
      <category>동적계획법</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>완탐</category>
      <category>정수 삼각형</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/237</guid>
      <comments>https://daeuungcode.tistory.com/237#entry237comment</comments>
      <pubDate>Tue, 10 Aug 2021 15:39:52 +0900</pubDate>
    </item>
    <item>
      <title>백준 3687 [C++]</title>
      <link>https://daeuungcode.tistory.com/236</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3687&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/3687&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1628489014763&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;3687번: 성냥개비&quot; data-og-description=&quot;각 테스트 케이스에 대해서 입력으로 주어진 성냥개비를 모두 사용해서 만들 수 있는 가장 작은 수와 가장 큰 수를 출력한다. 두 숫자는 모두 양수이어야 하고, 숫자는 0으로 시작할 수 없다.&amp;nbsp;&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/3687&quot; data-og-url=&quot;https://www.acmicpc.net/problem/3687&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/H0bZW/hyLbbHTOxX/riS6qHtq7iyKvSOFaoFp40/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/3687&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/3687&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/H0bZW/hyLbbHTOxX/riS6qHtq7iyKvSOFaoFp40/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;3687번: 성냥개비&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;각 테스트 케이스에 대해서 입력으로 주어진 성냥개비를 모두 사용해서 만들 수 있는 가장 작은 수와 가장 큰 수를 출력한다. 두 숫자는 모두 양수이어야 하고, 숫자는 0으로 시작할 수 없다.&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 풀이방법&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;span style=&quot;font-family: 'Noto Sans Light';&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;span style=&quot;font-family: 'Noto Sans Light';&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- dp로 좀 더 쉽게 접근했고 오랜만에 dp하려니까 머리가 너무 안돌아갔습니다 ㅠㅠ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- makenum배열에 성냥으로 만드는 수를 넣어놓고, 바텀업으로 아래의 점화식과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;9;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;101;&amp;nbsp;i++)&amp;nbsp;{ &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dp[i] = dp[i - 2] * 10 + makenum[2]; //init 설정 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int j = 3; j &amp;lt; 8; j++) { &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dp[i] = min(dp[i], dp[i - j] * 10 + makenum[j]); &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 주의사항&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 0으로 시작하면 안된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 그러므로 dp[6]은 6으로 초기화 하고 makenum[6]에는 0을 넣습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 즉 makenum[6]은 6 성냥으로 만들 수 있는 수 인데, 이후 점화식에서는 6개의 성냥으로는 0을 만들어 쓰겠다입니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 나의코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1628489599021&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;queue&amp;gt;
#include&amp;lt;algorithm&amp;gt;
#include&amp;lt;vector&amp;gt;
using namespace std;

int T, n;
int makenum[9] = { 0, 0, 1, 7, 4, 2, 0, 8, 10 }; //일단 6은 0을 넣어놓자 (초기 값 셋팅 이후에는 6개 성냥으로는 0을 만들어야함)
long long dp[101];

void getmin() {
	for (int i = 1; i &amp;lt; 9; i++) {
		dp[i] = makenum[i]; // 성냥 i 개를 가지고 만들 수 있는 min값
	}
	dp[6] = 6; //0으로 시작하는 것을 방지하기 위해

	for (int i = 9; i &amp;lt; 101; i++) {
		dp[i] = dp[i - 2] * 10 + makenum[2]; //init 설정

		for (int j = 3; j &amp;lt; 8; j++) {
			dp[i] = min(dp[i], dp[i - j] * 10 + makenum[j]);
		}
	}
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	int T,n;
	cin &amp;gt;&amp;gt; T;
	getmin();
	while (T--) {
		cin &amp;gt;&amp;gt; n;
		cout &amp;lt;&amp;lt; dp[n];
		cout &amp;lt;&amp;lt; &quot; &quot;;
		//가장 큰수
		if (n % 2 == 1) { //홀수
			cout &amp;lt;&amp;lt; 7; n -= 3;
		}
		while (n != 0) {
			cout &amp;lt;&amp;lt; 1; n -= 2;
		}
		cout &amp;lt;&amp;lt; &quot;\n&quot;;
	}
	return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘 문제풀이/다이나믹 프로그래밍</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/236</guid>
      <comments>https://daeuungcode.tistory.com/236#entry236comment</comments>
      <pubDate>Mon, 9 Aug 2021 15:13:35 +0900</pubDate>
    </item>
    <item>
      <title>백준 1103 [C++]</title>
      <link>https://daeuungcode.tistory.com/233</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1103&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1103&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1625530782362&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;1103번: 게임&quot; data-og-description=&quot;줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 보드의 상태가 주어진다. 쓰여 있는 숫자는 1부터 9까지의 자연수 또는 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1103&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1103&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AFjQZ/hyKNYhmST6/cYUKv8fr6b5jgKuofyW2FK/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/1103&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1103&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AFjQZ/hyKNYhmST6/cYUKv8fr6b5jgKuofyW2FK/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;1103번: 게임&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 보드의 상태가 주어진다. 쓰여 있는 숫자는 1부터 9까지의 자연수 또는&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;1. 풀이방법&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 처음에는 단순 dfs로 접근하긴 했지만 (오랜만에 풀이라 일단 접근했음)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;span style=&quot;font-family: 'Noto Sans Light';&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 시간초과라면 dp테이블을 이용해보자는 생각 !&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 아, 근데 오랜만에 푸니까 dp적 머리가 잘 돌아가지 않아서 고생을 좀 했습니다....&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 우선 테이블을 모두 -1 처리를 하고 visit이 이미 true인 곳에 다시 오면 그건 싸이클이므로&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- -1을 출력 (무한정 왔다리갔다리 가능)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- dp가 -1이 아닐경우 기존에 저장되어 있는 수와 현재의 루트에서 +1 (한번 더 이동) 해서 더 많은 이동횟수로 업데이트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- dfs +dp 라고 할 수 있겠네요. dfs는 간단한 수준이라 생략하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;2. 주의사항&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;3. 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1625531302547&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;cstring&amp;gt;
#include&amp;lt;vector&amp;gt;
#include&amp;lt;queue&amp;gt;
#include&amp;lt;algorithm&amp;gt;
#define endl &quot;\n&quot;
using namespace std;

int N, M;
int ground[50][50];
int dp[50][50];
bool visited[50][50];

int dx[] = { 0, 0, 1, -1 };
int dy[] = { 1, -1, 0, 0 };


void Input(){
    cin &amp;gt;&amp;gt; N &amp;gt;&amp;gt; M;
    for (int i = 0; i &amp;lt; N; i++){
        string inputs;
        cin &amp;gt;&amp;gt; inputs;
        for (int j = 0; j &amp;lt; inputs.length(); j++){
            if (inputs[j] == 'H') ground[i][j] = 0;
            else ground[i][j] = inputs[j] - '0';
        }
    }
}

int DFS(int x, int y){
    if (x &amp;lt; 0 || y &amp;lt; 0 || x &amp;gt;= N || y &amp;gt;= M || ground[x][y] == 0) return 0;
    if (visited[x][y] == true) // 무한반복이 가능
    {
        cout &amp;lt;&amp;lt; -1 &amp;lt;&amp;lt; endl;
        exit(0);
    }
    if (dp[x][y] != -1) return dp[x][y]; // 바로 dp 테이블에서 리턴

    visited[x][y] = true;
    dp[x][y] = 0;
    for (int i = 0; i &amp;lt; 4; i++){
        int tx = x + (ground[x][y] * dx[i]);
        int ty = y + (ground[x][y] * dy[i]);
        dp[x][y] = max(dp[x][y], DFS(tx, ty) + 1);
    }
    visited[x][y] = false;
    return dp[x][y];
}

int main(void){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    Input();
    memset(dp, -1, sizeof(dp)); //dp 테이블 초기화
    cout &amp;lt;&amp;lt; DFS(0, 0) &amp;lt;&amp;lt; endl;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 문제풀이/다이나믹 프로그래밍</category>
      <category>1103</category>
      <category>dfs</category>
      <category>dp</category>
      <category>게임</category>
      <category>깊이우선탐색</category>
      <category>다이나믹프로그래밍</category>
      <category>동적계획법</category>
      <category>백준</category>
      <category>시간초과</category>
      <category>알고리즘</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/233</guid>
      <comments>https://daeuungcode.tistory.com/233#entry233comment</comments>
      <pubDate>Tue, 6 Jul 2021 09:29:23 +0900</pubDate>
    </item>
    <item>
      <title>쿠키 (cookie) 와 세션 (Session)</title>
      <link>https://daeuungcode.tistory.com/232</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;0. &lt;b&gt;HTTP&lt;/b&gt;의 특징&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 쿠키와 세션의 필요성을 알아보기 위해 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;HTTP 프로토콜의 특징을 먼저 간단하게 파악해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; 0-1. &lt;b&gt;Connectionless 프로토콜&lt;/b&gt;&amp;nbsp;(비연결지향)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 클라이언트가 요청(Request) 을 보내고, 서버가 응답(Response) 을 보낸 후 연결을 유지하지 않고 끊는 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; 0-2. &lt;b&gt;Stateless 프로토콜&lt;/b&gt; (상태정보 유지 안함)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 클라이언트의 상태 정보를 저장하지 않는 서버 처리 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 그러나, 사용자의 편의를 고려하면 데이터 유지가 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 로그인 상태 유지, 장바구니 내역 등 필요한 경우가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;( stateful하게 사용해야할 때 쿠키와 세션을 사용한다. ) - &lt;u&gt;&lt;b&gt;정보유지&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 이는 &lt;b&gt;서버의 자원을 절약&lt;/b&gt;하기 위한 설정이라고 보면 되겠습니다. ( &lt;b&gt;비연결성 + 비상태성&lt;/b&gt; )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;1. 쿠키 와 세션&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 우선 표를 먼저 확인해보자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;215&quot; data-filename=&quot;제목 없음.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iaorl/btq54oWw1ES/heMfdUZk2kZdfzkxH8kZdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iaorl/btq54oWw1ES/heMfdUZk2kZdfzkxH8kZdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iaorl/btq54oWw1ES/heMfdUZk2kZdfzkxH8kZdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIaorl%2Fbtq54oWw1ES%2FheMfdUZk2kZdfzkxH8kZdK%2Fimg.png&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;215&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;2. 쿠키( Cookie )&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 웹 사이트에 접속할 때 생성되는 정보를 담은 파일 ( 임시 파일 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 쿠키는 서버가 사용자의 웹 브라우저에 저장하는 데이터이다. ( 클라이언트 측에 저장 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 소프트웨어는 아니다. 단지 (key/value) 쌍의 string 형태이다. + ( 만료일, 경로 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 브라우저 간의 공유는 되지 않는다 ( 당연한가 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 아이디 저장 , 장바구니, &quot; 더 이상 보지 않기&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 저장 용량의 한계가 있다. ( 4KB, 총 300개, 도메인당 20개 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- Session Cookie ( 브라우저 종료시 쿠키 삭제 ), Persistent Cookie ( 장기간, 브라우조 종료와 관계 x )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; Secure Cookie (HTTPS에서 사용, 쿠키 정보가 암호화되어 전송) 등 여러가지 종료가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;nbsp; 2.1 사용목적&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 세션관리 ( 아이디, 장바구니 등 ) : 서버가 알아야할 정보들을 저장해놓는다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 개인화 : 사용자마다 다르게 정보를 제공할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 트래킹 : 사용자의 행동을 기록하고 분석한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;nbsp; 2.2 단점&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 쿠키에 대한 정보를 헤더에 매번 담아보내야하므로, 오버헤드가 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 쿠키의 정보가 유출되는 보안에 취약한 문제점이 있다. (클라이언트 측에 저장되므로)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 쿠키를 거부하도록 설정할 수 있지만, 사용에 있어 불편함을 느낄 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;3. 세션( Session )&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 쿠키 기반이며, 동작원리도 비슷합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 클라이언트가 요청을 보내면, 서버는 헤더를 보고 session-id를 보냈는지 확인한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 존재하지 않으면, 서버는 세션 ID를 생성해 클라이언트에게 돌려주고, 클라이언트는 이를 사용해 서버에 저장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 세션 ID가 1개씩 생성되어 웹 컨테이너에 저장된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 클라이언트 측이 아닌 서버측에 저장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 이로인해, 많은 요청이 일어날 경우 서버에 과부화를 줄 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 서버리소스를 초과하지 않는 함 상대적으로 용량의 한계가 없는 편&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;- 서버 측에 저장하기 때문에 보안적인 측면에서 유리하다. (서버 측에서 관리)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;nbsp;3.1 사용목적&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 쿠키와 크게 다르지 않다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&amp;nbsp;3.2 단점&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 서버에 과부화를 줄 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 쿠키보다 속도가 느리다. 서버에서 추가적인 처리가 필요하기 때문&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;4. 쿠키와 세션의 차이점&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; - 가장 큰 차이점은 저장위치 ( 클라이언트(쿠키), 서버(세션) )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; - 그에 따른 보안과 속도의 차이 ( 위의 표에 적혀 있음 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; - 라이프 사이클 (만료기간) 관점에서 쿠키는 만료기간 설정에 따라 넉넉하게 잡으면 오래 유지가 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;반면 세션은 만료시간을 정해두어도 브라우저가 종료되면 만료시간에 상관없이 삭제된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; - 보안과 성능의 관점에서 저장할 정보들을 보고 적절하게 두가지를 잘 사용할 필요가 있겠습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>학부생 공부/네트워크</category>
      <category>cookie</category>
      <category>session</category>
      <category>네트워크</category>
      <category>로그인</category>
      <category>서버</category>
      <category>세션</category>
      <category>세션과 쿠키</category>
      <category>차이점</category>
      <category>쿠키</category>
      <category>클라이언트</category>
      <author>대엉</author>
      <guid isPermaLink="true">https://daeuungcode.tistory.com/232</guid>
      <comments>https://daeuungcode.tistory.com/232#entry232comment</comments>
      <pubDate>Mon, 31 May 2021 01:51:57 +0900</pubDate>
    </item>
  </channel>
</rss>