<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>유경쓰 개발일기</title>
    <link>https://cheerup313.tistory.com/</link>
    <description>기록하는 습관을 기르자</description>
    <language>ko</language>
    <pubDate>Fri, 10 Apr 2026 02:44:27 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>유경(shin-6-0)</managingEditor>
    <image>
      <title>유경쓰 개발일기</title>
      <url>https://tistory1.daumcdn.net/tistory/5364037/attach/e0d19b0464f74001bbc7d71a508f1dc2</url>
      <link>https://cheerup313.tistory.com</link>
    </image>
    <item>
      <title>[Programmers/Java]프로그래머스 2018 카카오 블라인드 채용 - n진수 게임</title>
      <link>https://cheerup313.tistory.com/119</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7GvUE/btsyNuUZTeS/Ig1CMNDuj6gsIjiX4JKpK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7GvUE/btsyNuUZTeS/Ig1CMNDuj6gsIjiX4JKpK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7GvUE/btsyNuUZTeS/Ig1CMNDuj6gsIjiX4JKpK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7GvUE%2FbtsyNuUZTeS%2FIg1CMNDuj6gsIjiX4JKpK1%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size14&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17687&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/17687&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697704789521&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17687&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bchr5S/hyUgHRQwKK/JntQ19Q3Zg24JsOKkZd4B1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ds8ghb/hyUgGFoyKi/AakVYRkkGgpbk8ofvR3o30/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17687&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17687&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bchr5S/hyUgHRQwKK/JntQ19Q3Zg24JsOKkZd4B1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ds8ghb/hyUgGFoyKi/AakVYRkkGgpbk8ofvR3o30/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-size: 1.62em; letter-spacing: -1px;&quot;&gt;문제조건&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;h1&gt;&lt;b&gt;N진수 게임&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, &amp;hellip; 열 번째 사람은 9를 말한다.&lt;/li&gt;
&lt;li&gt;10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다.&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, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, &amp;hellip;&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;0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, &amp;hellip;&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진법&amp;nbsp;n, 미리 구할 숫자의 갯수&amp;nbsp;t, 게임에 참가하는 인원&amp;nbsp;m, 튜브의 순서&amp;nbsp;p&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;2 ≦&amp;nbsp;n&amp;nbsp;≦ 16&lt;/li&gt;
&lt;li&gt;0 ＜&amp;nbsp;t&amp;nbsp;≦ 1000&lt;/li&gt;
&lt;li&gt;2 ≦&amp;nbsp;m&amp;nbsp;≦ 100&lt;/li&gt;
&lt;li&gt;1 ≦&amp;nbsp;p&amp;nbsp;≦&amp;nbsp;m&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;출력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜브가 말해야 하는 숫자&amp;nbsp;t개를 공백 없이 차례대로 나타낸 문자열. 단,&amp;nbsp;10~15는 각각 대문자&amp;nbsp;A~F로 출력한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n t m p result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&quot;0111&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&quot;02468ACE11111111&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&quot;13579BDF01234567&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이(성공)&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최대 반복문 횟수는 t (튜브가 말해야 할 갯수) * m (인원수) 이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;for문을 돌리면서 i값은 Integer.toString(숫자, 진법)을 사용해서 convert에 저장한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드(성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1697450645237&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;


class Solution {
    public static ArrayList&amp;lt;Integer&amp;gt; solution(String msg) {
        ArrayList&amp;lt;Integer&amp;gt; ans = new ArrayList&amp;lt;Integer&amp;gt;();
        int index = 1;
        int w=0,c=1;
        HashMap&amp;lt;String, Integer&amp;gt; dictionary = new HashMap&amp;lt;String,Integer&amp;gt;();
        for(char i='A';i&amp;lt;='Z';i++){
            dictionary.put(String.valueOf(i),index++);
        }
        while(true){
            if(c==msg.length()){
                String word=msg.substring(w,c);
                int value=dictionary.get(word);
                ans.add(value);//사전 색인 번호 등록
                break;
            } else{
                //System.out.print(w+&quot;:&quot;+c);
                String wWord=msg.substring(w,c);
                String cWord=msg.substring(c,c+1);
                int wValue=dictionary.get(msg.substring(w,c));
                int cValue=dictionary.get(msg.substring(c,c+1));
                //System.out.println(&quot;        |w인덱스 = &quot;+wValue+&quot;, w단어 =  &quot;+wWord+&quot;, c인덱스 = &quot;+cValue+&quot; c단어 = &quot;+cWord);
                String chkWord=msg.substring(w,c+1);
                if(dictionary.containsKey(chkWord)){//현재글자+다음글자가 사전에 있음
                    c++;
                }else{//현재글자+다음글자가 사전에 없음
                    //System.out.println(&quot;[&quot;+chkWord+&quot;:&quot;+index+&quot;] &amp;lt;&amp;lt; 사전에 등록&quot;);
                    dictionary.put(chkWord,index);
                    ans.add(wValue);//사전 색인 번호 등록
                    w=c;
                    c++;
                    index++;
                }
            }
        }
        return ans;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/119</guid>
      <comments>https://cheerup313.tistory.com/119#entry119comment</comments>
      <pubDate>Fri, 20 Oct 2023 10:09:30 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 2018 카카오 블라인드 채용 - 압축</title>
      <link>https://cheerup313.tistory.com/118</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7oeHz/btsyQfPF6CF/zifkAQ4JrMBHAp9WlpJvuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7oeHz/btsyQfPF6CF/zifkAQ4JrMBHAp9WlpJvuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7oeHz/btsyQfPF6CF/zifkAQ4JrMBHAp9WlpJvuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7oeHz%2FbtsyQfPF6CF%2FzifkAQ4JrMBHAp9WlpJvuK%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-size: 1.62em; letter-spacing: -1px;&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17684&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/17684&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697704367902&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17684&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/42iIA/hyUgSeLoO0/aA9TFfAcmcgckXiCO2NENk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bmob2v/hyUdOrzs4V/kK9j4iSnLqiCDDLYye3L81/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17684&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17684&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/42iIA/hyUgSeLoO0/aA9TFfAcmcgckXiCO2NENk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bmob2v/hyUdOrzs4V/kK9j4iSnLqiCDDLYye3L81/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-size: 1.62em; letter-spacing: -1px;&quot;&gt;문제조건&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;h1&gt;&lt;b&gt;압축&lt;/b&gt;&lt;/h1&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;b&gt;LZW&lt;/b&gt;(Lempel&amp;ndash;Ziv&amp;ndash;Welch) 압축을 구현하기로 했다. LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LZW&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인 모든 단어를 포함하도록 사전을 초기화한다.&lt;/li&gt;
&lt;li&gt;사전에서 현재 입력과 일치하는 가장 긴 문자열&amp;nbsp;w를 찾는다.&lt;/li&gt;
&lt;li&gt;w에 해당하는 사전의 색인 번호를 출력하고, 입력에서&amp;nbsp;w를 제거한다.&lt;/li&gt;
&lt;li&gt;입력에서 처리되지 않은 다음 글자가 남아있다면(c),&amp;nbsp;w+c에 해당하는 단어를 사전에 등록한다.&lt;/li&gt;
&lt;li&gt;단계 2로 돌아간다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축 알고리즘이 영문 대문자만 처리한다고 할 때, 사전은 다음과 같이 초기화된다. 사전의 색인 번호는 정수값으로 주어지며, 1부터 시작한다고 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;색인 번호 1 2 3 ... 24 25 26&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;단어&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;td&gt;Y&lt;/td&gt;
&lt;td&gt;Z&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 입력으로&amp;nbsp;KAKAO가 들어온다고 하자.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 사전에는&amp;nbsp;KAKAO의 첫 글자&amp;nbsp;K는 등록되어 있으나, 두 번째 글자까지인&amp;nbsp;KA는 없으므로, 첫 글자&amp;nbsp;K에 해당하는 색인 번호 11을 출력하고, 다음 글자인&amp;nbsp;A를 포함한&amp;nbsp;KA를 사전에 27 번째로 등록한다.&lt;/li&gt;
&lt;li&gt;두 번째 글자&amp;nbsp;A는 사전에 있으나, 세 번째 글자까지인&amp;nbsp;AK는 사전에 없으므로,&amp;nbsp;A의 색인 번호 1을 출력하고,&amp;nbsp;AK를 사전에 28 번째로 등록한다.&lt;/li&gt;
&lt;li&gt;세 번째 글자에서 시작하는&amp;nbsp;KA가 사전에 있으므로,&amp;nbsp;KA에 해당하는 색인 번호 27을 출력하고, 다음 글자&amp;nbsp;O를 포함한&amp;nbsp;KAO를 29 번째로 등록한다.&lt;/li&gt;
&lt;li&gt;마지막으로 처리되지 않은 글자&amp;nbsp;O에 해당하는 색인 번호 15를 출력한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 입력(w) 다음 글자(c) 출력 사전 추가(w+c)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 63.3721%; height: 130px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;27: KA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;28: AK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KA&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;29: KAO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정을 거쳐 다섯 글자의 문장&amp;nbsp;KAKAO가 4개의 색인 번호 [11, 1, 27, 15]로 압축된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력으로&amp;nbsp;TOBEORNOTTOBEORTOBEORNOT가 들어오면 다음과 같이 압축이 진행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 입력(w) 다음 글자(c) 출력 사전 추가(w+c)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 64.3023%; height: 472px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;27: TO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;28: OB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;29: BE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;30: EO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;31: OR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;32: RN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;33: NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;34: OT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;35: TT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TO&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;36: TOB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BE&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;37: BEO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OR&lt;/td&gt;
&lt;td&gt;T&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;38: ORT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TOB&lt;/td&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;39: TOBE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EO&lt;/td&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;40: EOR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RN&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;41: RNO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OT&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력으로 영문 대문자로만 이뤄진 문자열&amp;nbsp;msg가 주어진다.&amp;nbsp;msg의 길이는 1 글자 이상, 1000 글자 이하이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;출력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 문자열을 압축한 후의 사전 색인 번호를 배열로 출력하라.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;msg answer&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;KAKAO&lt;/td&gt;
&lt;td&gt;[11, 1, 27, 15]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TOBEORNOTTOBEORTOBEORNOT&lt;/td&gt;
&lt;td&gt;[20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ABABABABABABABAB&lt;/td&gt;
&lt;td&gt;[1, 2, 27, 29, 28, 31, 30]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이1(성공)&lt;/h2&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;경우를 두가지로 나눌 수 있는데, 현재 문자와 관련된 msg의 인덱스를 w, 다음 문자를 c로 할 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;c인덱스를 가진 문자 (cWord)가 사전에 없으면&lt;/b&gt;&lt;/span&gt; &amp;gt; w인덱스문자(wWord) + c인덱스문자(cWord)를 사전에 등록하고 w는 c가되고, c는 +1을 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;c인덱스를 가진 문자 (cWord)가 사전에 있으면&lt;/b&gt;&lt;/span&gt; &amp;gt; c값만 하나 늘린다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 방법으로 진행하고, 등록은 현재 문자 (wWord) 에 해당하는 사전의 인덱스 값을 저장하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제상에서는 기본으로 int배열을 사용했는데, int배열은 사이즈 조절이 어려우므로 ArrayList자료형을 사용했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드1(성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1697450645237&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;


class Solution {
    public static ArrayList&amp;lt;Integer&amp;gt; solution(String msg) {
        ArrayList&amp;lt;Integer&amp;gt; ans = new ArrayList&amp;lt;Integer&amp;gt;();
        int index = 1;
        int w=0,c=1;
        HashMap&amp;lt;String, Integer&amp;gt; dictionary = new HashMap&amp;lt;String,Integer&amp;gt;();
        for(char i='A';i&amp;lt;='Z';i++){
            dictionary.put(String.valueOf(i),index++);
        }
        while(true){
            if(c==msg.length()){
                String word=msg.substring(w,c);
                int value=dictionary.get(word);
                ans.add(value);//사전 색인 번호 등록
                break;
            } else{
                //System.out.print(w+&quot;:&quot;+c);
                String wWord=msg.substring(w,c);
                String cWord=msg.substring(c,c+1);
                int wValue=dictionary.get(msg.substring(w,c));
                int cValue=dictionary.get(msg.substring(c,c+1));
                //System.out.println(&quot;        |w인덱스 = &quot;+wValue+&quot;, w단어 =  &quot;+wWord+&quot;, c인덱스 = &quot;+cValue+&quot; c단어 = &quot;+cWord);
                String chkWord=msg.substring(w,c+1);
                if(dictionary.containsKey(chkWord)){//현재글자+다음글자가 사전에 있음
                    c++;
                }else{//현재글자+다음글자가 사전에 없음
                    //System.out.println(&quot;[&quot;+chkWord+&quot;:&quot;+index+&quot;] &amp;lt;&amp;lt; 사전에 등록&quot;);
                    dictionary.put(chkWord,index);
                    ans.add(wValue);//사전 색인 번호 등록
                    w=c;
                    c++;
                    index++;
                }
            }
        }
        return ans;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/118</guid>
      <comments>https://cheerup313.tistory.com/118#entry118comment</comments>
      <pubDate>Thu, 19 Oct 2023 17:38:16 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 2022 카카오 블라인드 채용 - k진수에서 소수 개수 구하기</title>
      <link>https://cheerup313.tistory.com/117</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CtVUm/btsyuk6HBDi/bE6zOmMIBqi46kvEJFfDNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CtVUm/btsyuk6HBDi/bE6zOmMIBqi46kvEJFfDNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CtVUm/btsyuk6HBDi/bE6zOmMIBqi46kvEJFfDNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCtVUm%2Fbtsyuk6HBDi%2FbE6zOmMIBqi46kvEJFfDNk%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/92335&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/92335&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697431525359&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/92335&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/NjsiI/hyUdYthvNj/B6PKUBRK25hIkTcrUoDCiK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cSf3kI/hyUdQhKiLd/kMZgkkNQLw4f8rwZtVYo9k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/92335&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/92335&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/NjsiI/hyUdYthvNj/B6PKUBRK25hIkTcrUoDCiK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cSf3kI/hyUdQhKiLd/kMZgkkNQLw4f8rwZtVYo9k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양의 정수&amp;nbsp;n이 주어집니다. 이 숫자를&amp;nbsp;k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0P0처럼 소수 양쪽에 0이 있는 경우&lt;/li&gt;
&lt;li&gt;P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우&lt;/li&gt;
&lt;li&gt;0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우&lt;/li&gt;
&lt;li&gt;P처럼 소수 양쪽에 아무것도 없는 경우&lt;/li&gt;
&lt;li&gt;단,&amp;nbsp;P는 각 자릿수에 0을 포함하지 않는 소수입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들어, 101은&amp;nbsp;P가 될 수 없습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 437674을 3진수로 바꾸면&amp;nbsp;211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, 11을&amp;nbsp;k진법으로 보았을 때가 아닌, 10진법으로 보았을 때 소수여야 한다는 점에 주의합니다.) 211은&amp;nbsp;P0&amp;nbsp;형태에서 찾을 수 있으며, 2는&amp;nbsp;0P0에서, 11은&amp;nbsp;0P에서 찾을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수&amp;nbsp;n과&amp;nbsp;k가 매개변수로 주어집니다.&amp;nbsp;n을&amp;nbsp;k진수로 바꿨을 때, 변환된 수 안에서 찾을 수 있는&amp;nbsp;&lt;b&gt;위 조건에 맞는 소수&lt;/b&gt;의 개수를 return 하도록 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&amp;nbsp;n&amp;nbsp;&amp;le; 1,000,000&lt;/li&gt;
&lt;li&gt;3 &amp;le;&amp;nbsp;k&amp;nbsp;&amp;le; 10&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n k result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 73.2558%; height: 55px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;437674&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;110011&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&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;b&gt;입출력 예 #2&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;110011을 10진수로 바꾸면 110011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 11, 11 2개입니다. 이와 같이, 중복되는 소수를 발견하더라도 모두 따로 세어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이1(실패)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 hashMap을 이용하면 쉽게 풀 수 있다. Map에는 containsKey, containsValue라는 내장 함수가 있는데, Key또는 Value에 phone_book 배열 내부의 내용을 넣어서 포함되는지 확인하면, false를 리턴하는 방식으로 진행한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chkPrimeNum을 돌릴때 Integer.ParseInt로 했더니 엄청나게 큰 수에 대해서 시간초과or 런타임오류가 발생하여 Double.parstDouble로 바꾸어서 진행했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드1(실패)&lt;/h2&gt;
&lt;pre id=&quot;code_1697180986760&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n, int k) {
        String transNum=&quot;&quot;;
        int zinsu=k;
        while(n!=0){
            transNum=(n%k)+transNum;
            n/=k;
        }
        int primeNumber = 0;
        String[] array=transNum.split(&quot;0&quot;);
        for(String s:array){

            if(s.length()&amp;gt;=1&amp;amp;&amp;amp;chkPrimeNum(s)&amp;amp;&amp;amp;!s.equals(&quot;1&quot;)){
                System.out.print(s+&quot; &quot;);
                primeNumber++;
            }
        }
        return primeNumber;
    }
    
    public static boolean chkPrimeNum(String s){
        for(int i=2;(i*i)&amp;lt;=Double.parseDouble(s);i++){
            if(Double.parseDouble(s)%i==0){
                return false;
            }
        }
        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/maTnr/btsyudl3R7F/dFcnqhl51tKsrHSvarNywK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/maTnr/btsyudl3R7F/dFcnqhl51tKsrHSvarNywK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/maTnr/btsyudl3R7F/dFcnqhl51tKsrHSvarNywK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmaTnr%2Fbtsyudl3R7F%2FdFcnqhl51tKsrHSvarNywK%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;473&quot; height=&quot;485&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 테스트를 시간초과로 통과하지 못했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이2(성공)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;zinsu는 사용하지 않아서 지웠고,chkPrimeNum 안에서 for문을 돌 때 (i*i)&amp;lt;=Double.pasreDouble(s) 보다, i&amp;lt;=(int)Math.sqrt(Double.parseDouble(s))가 더 적게 돌 것이라고 생각해서 (double &amp;gt; int형으로 반올림하면서 계산하지 않는 값이 존재) 아래와 같이 바꾸고, 1인경우에는 무조건 소수가 아니고&amp;nbsp; 2인 경우에는 무조건 소수이기때문에 통과로 바꾸었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드2(성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1697450645237&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n, int k) {
        String transNum=&quot;&quot;;
        while(n!=0){
            transNum=(n%k)+transNum;
            n/=k;
        }
        int primeNumber = 0;
        String[] array=transNum.split(&quot;0&quot;);
        for(String s:array){
            if(s.length()&amp;gt;=1&amp;amp;&amp;amp;chkPrimeNum(s)){
                //System.out.print(s+&quot; &quot;);
                primeNumber++;
            }
        }
        return primeNumber;
    }
    
    public static boolean chkPrimeNum(String s){
        if(s.equals(&quot;1&quot;)){
            return false;
        } else if (s.equals(&quot;2&quot;)) {
            return true;
        }
        for(int i=2;i&amp;lt;=(int)Math.sqrt(Double.parseDouble(s));i++){
            if(Double.parseDouble(s)%i==0){
                return false;
            }
        }
        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;173&quot; data-origin-height=&quot;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x4TxM/btsyulR3ct4/Koa0oiXRBmU7B4jfjVxXCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x4TxM/btsyulR3ct4/Koa0oiXRBmU7B4jfjVxXCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x4TxM/btsyulR3ct4/Koa0oiXRBmU7B4jfjVxXCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx4TxM%2FbtsyulR3ct4%2FKoa0oiXRBmU7B4jfjVxXCk%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;186&quot; height=&quot;89&quot; data-origin-width=&quot;173&quot; data-origin-height=&quot;83&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>시간복잡도</category>
      <category>정수크기</category>
      <category>진수</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/117</guid>
      <comments>https://cheerup313.tistory.com/117#entry117comment</comments>
      <pubDate>Mon, 16 Oct 2023 19:06:56 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제(해시) - 전화번호 목록</title>
      <link>https://cheerup313.tistory.com/116</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uCfgu/btsyzaIl6c7/KMgUBkta7kWhOFoPYO4F91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uCfgu/btsyzaIl6c7/KMgUBkta7kWhOFoPYO4F91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uCfgu/btsyzaIl6c7/KMgUBkta7kWhOFoPYO4F91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuCfgu%2FbtsyzaIl6c7%2FKMgUBkta7kWhOFoPYO4F91%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42577&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42577&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697424138031&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42577&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bG2Lxo/hyUdTZOky6/h9YRDDKiJQ1hLlKRa7Lbf1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/db6AfK/hyUdR1XXm3/SaoFKEADHF6xqxrQSwRz31/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42577&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42577&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bG2Lxo/hyUdTZOky6/h9YRDDKiJQ1hLlKRa7Lbf1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/db6AfK/hyUdR1XXm3/SaoFKEADHF6xqxrQSwRz31/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구조대 : 119&lt;/li&gt;
&lt;li&gt;박준영 : 97 674 223&lt;/li&gt;
&lt;li&gt;지영석 : 11 9552 4421&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한 사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;phone_book의 길이는 1 이상 1,000,000 이하입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 전화번호의 길이는 1 이상 20 이하입니다.&lt;/li&gt;
&lt;li&gt;같은 전화번호가 중복해서 들어있지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;phone_book return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[&quot;119&quot;, &quot;97674223&quot;, &quot;1195524421&quot;]&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[&quot;123&quot;,&quot;456&quot;,&quot;789&quot;]&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[&quot;12&quot;,&quot;123&quot;,&quot;1235&quot;,&quot;567&quot;,&quot;88&quot;]&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #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;입출력 예 #2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 번호가 다른 번호의 접두사인 경우가 없으므로, 답은 true입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 전화번호, &amp;ldquo;12&amp;rdquo;가 두 번째 전화번호 &amp;ldquo;123&amp;rdquo;의 접두사입니다. 따라서 답은 false입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 hashMap을 이용하면 쉽게 풀 수 있다. Map에는 containsKey, containsValue라는 내장 함수가 있는데, Key또는 Value에 phone_book 배열 내부의 내용을 넣어서 포함되는지 확인하면, false를 리턴하는 방식으로 진행한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1697180986760&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public boolean solution(String[] phone_book) {
        boolean answer = true;
        Map hash= new HashMap&amp;lt;&amp;gt;();
        for(int i=0;i&amp;lt; phone_book.length;i++){
            hash.put(phone_book[i],i);
        }
        for(int i=0;i&amp;lt;phone_book.length;i++){
            for(int j=0;j&amp;lt;phone_book[i].length();j++){
                if(hash.containsKey(phone_book[i].substring(0,j))) return false;
            }
        }
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>hash</category>
      <category>java</category>
      <category>map</category>
      <category>맵</category>
      <category>프로그래머스</category>
      <category>해시</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/116</guid>
      <comments>https://cheerup313.tistory.com/116#entry116comment</comments>
      <pubDate>Mon, 16 Oct 2023 13:44:28 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 타겟넘버</title>
      <link>https://cheerup313.tistory.com/115</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpW75q/btsytYoq4cy/mMY04b4VRbef9BdilxBIFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpW75q/btsytYoq4cy/mMY04b4VRbef9BdilxBIFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpW75q/btsytYoq4cy/mMY04b4VRbef9BdilxBIFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpW75q%2FbtsytYoq4cy%2FmMY04b4VRbef9BdilxBIFK%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/43165&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697417564422&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/czaLM6/hyUdW9RwgB/mJBsgUbTEKIjgZpNyNhZpk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/IVq7P/hyUdPpoh15/DHLueEI7jsLzsYcrXgbRIk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/43165&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/czaLM6/hyUdW9RwgB/mJBsgUbTEKIjgZpNyNhZpk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/IVq7P/hyUdPpoh15/DHLueEI7jsLzsYcrXgbRIk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어지는 숫자의 개수는 2개 이상 20개 이하입니다.&lt;/li&gt;
&lt;li&gt;각 숫자는 1 이상 50 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;타겟 넘버는 1 이상 1000 이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;numbers target return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[1, 1, 1, 1, 1]&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[4, 1, 2, 1]&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&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;b&gt;입출력 예 #2&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+4+1-2+1 = 4 +4-1+2-1 = 4&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;총 2가지 방법이 있으므로, 2를 return 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 간단한 dfs문제이다. depth와 총 합 (sum)을 매번 체크하면서 재귀형식으로 dfs라는 함수를 돌리면 해결된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dfs내에서 dfs를 +인 경우와 -인 경우 두가지를 실행해서 +,- 인 경우를 모두 체크한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1697180986760&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    static int answer = 0;
    public int solution(int[] numbers, int target) {
        answer=0;
        dfs(numbers,0,target,0);
        return answer;
    }
    
    private static void dfs(int[] numbers, int depth, int target, int sum) {
        //System.out.println(&quot;depth = &quot;+depth+&quot;, target = &quot;+target+&quot;, sum = &quot;+sum+&quot;, answer = &quot;+answer);
        if(depth==numbers.length){
            if(target==sum) answer++;
        }else{
            dfs(numbers,depth+1,target,sum+numbers[depth]);
            dfs(numbers,depth+1,target,sum-numbers[depth]);
        }
    }
}&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;참고자료 (DFS, BFS)&lt;br /&gt;&lt;a href=&quot;https://yunyoung1819.tistory.com/86&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://yunyoung1819.tistory.com/86&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697423834325&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;[알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS)&quot; data-og-description=&quot;[알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS) ※ 그래프의 개념 - 정점과 간선으로 이루어진 자료구조의 일종. G = (V, E) ※ 그래프 탐색 - 하나의 정점으로부터 시작하여 차례대로 모든 정&quot; data-og-host=&quot;yunyoung1819.tistory.com&quot; data-og-source-url=&quot;https://yunyoung1819.tistory.com/86&quot; data-og-url=&quot;https://yunyoung1819.tistory.com/86&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ckBdf2/hyUdPXoMSA/GCSus2km4UeF4ViBjyfz61/img.png?width=800&amp;amp;height=619&amp;amp;face=0_0_800_619,https://scrap.kakaocdn.net/dn/eLU3F/hyUdZsaxXX/DUr6cGPUCKUKsNU8MpmnEK/img.png?width=900&amp;amp;height=1120&amp;amp;face=0_0_900_1120&quot;&gt;&lt;a href=&quot;https://yunyoung1819.tistory.com/86&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yunyoung1819.tistory.com/86&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ckBdf2/hyUdPXoMSA/GCSus2km4UeF4ViBjyfz61/img.png?width=800&amp;amp;height=619&amp;amp;face=0_0_800_619,https://scrap.kakaocdn.net/dn/eLU3F/hyUdZsaxXX/DUr6cGPUCKUKsNU8MpmnEK/img.png?width=900&amp;amp;height=1120&amp;amp;face=0_0_900_1120');&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;[알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS) ※ 그래프의 개념 - 정점과 간선으로 이루어진 자료구조의 일종. G = (V, E) ※ 그래프 탐색 - 하나의 정점으로부터 시작하여 차례대로 모든 정&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yunyoung1819.tistory.com&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;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>dfs</category>
      <category>java</category>
      <category>완전탐색</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/115</guid>
      <comments>https://cheerup313.tistory.com/115#entry115comment</comments>
      <pubDate>Mon, 16 Oct 2023 11:35:54 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제(완전탐색) - 피로도</title>
      <link>https://cheerup313.tistory.com/114</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VTywm/btsyyofgZuK/CGP4dT8k4cFPxomkDUZR3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VTywm/btsyyofgZuK/CGP4dT8k4cFPxomkDUZR3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VTywm/btsyyofgZuK/CGP4dT8k4cFPxomkDUZR3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVTywm%2FbtsyyofgZuK%2FCGP4dT8k4cFPxomkDUZR3k%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87946&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/87946&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697414884687&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87946&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bkroUn/hyUdWWlEZ9/bWSek0PwuhPUsIu2NOJKr0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/wBR0g/hyUdMzpyl0/aK489NmKWGnvbRXIwik9j1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87946&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87946&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bkroUn/hyUdWWlEZ9/bWSek0PwuhPUsIu2NOJKr0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/wBR0g/hyUdMzpyl0/aK489NmKWGnvbRXIwik9j1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 &quot;최소 필요 피로도&quot;와 던전 탐험을 마쳤을 때 소모되는 &quot;소모 피로도&quot;가 있습니다. &quot;최소 필요 피로도&quot;는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, &quot;소모 피로도&quot;는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 &quot;최소 필요 피로도&quot;가 80, &quot;소모 피로도&quot;가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들을 최대한 많이 탐험하려 합니다. 유저의 현재 피로도 k와 각 던전별 &quot;최소 필요 피로도&quot;, &quot;소모 피로도&quot;가 담긴 2차원 배열 dungeons 가 매개변수로 주어질 때, 유저가 탐험할수 있는 최대 던전 수를 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;k는 1 이상 5,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;dungeons의 세로(행) 길이(즉, 던전의 개수)는 1 이상 8 이하입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;dungeons의 가로(열) 길이는 2 입니다.&lt;/li&gt;
&lt;li&gt;dungeons의 각 행은 각 던전의 [&quot;최소 필요 피로도&quot;, &quot;소모 피로도&quot;] 입니다.&lt;/li&gt;
&lt;li&gt;&quot;최소 필요 피로도&quot;는 항상 &quot;소모 피로도&quot;보다 크거나 같습니다.&lt;/li&gt;
&lt;li&gt;&quot;최소 필요 피로도&quot;와 &quot;소모 피로도&quot;는 1 이상 1,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;서로 다른 던전의 [&quot;최소 필요 피로도&quot;, &quot;소모 피로도&quot;]가 서로 같을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k dungeons result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;[[80,20],[50,40],[30,10]]&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 피로도는 80입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약, 첫 번째 &amp;rarr; 두 번째 &amp;rarr; 세 번째 던전 순서로 탐험한다면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 피로도는 80이며, 첫 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot; 또한 80이므로, 첫 번째 던전을 탐험할 수 있습니다. 첫 번째 던전의 &quot;소모 피로도&quot;는 20이므로, 던전을 탐험한 후 남은 피로도는 60입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 60이며, 두 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 50이므로, 두 번째 던전을 탐험할 수 있습니다. 두 번째 던전의 &quot;소모 피로도&quot;는 40이므로, 던전을 탐험한 후 남은 피로도는 20입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 20이며, 세 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 30입니다. 따라서 세 번째 던전은 탐험할 수 없습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약, 첫 번째 &amp;rarr; 세 번째 &amp;rarr; 두 번째 던전 순서로 탐험한다면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 피로도는 80이며, 첫 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot; 또한 80이므로, 첫 번째 던전을 탐험할 수 있습니다. 첫 번째 던전의 &quot;소모 피로도&quot;는 20이므로, 던전을 탐험한 후 남은 피로도는 60입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 60이며, 세 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 30이므로, 세 번째 던전을 탐험할 수 있습니다. 세 번째 던전의 &quot;소모 피로도&quot;는 10이므로, 던전을 탐험한 후 남은 피로도는 50입니다.&lt;/li&gt;
&lt;li&gt;남은 피로도는 50이며, 두 번째 던전을 돌기위해 필요한 &quot;최소 필요 피로도&quot;는 50이므로, 두 번째 던전을 탐험할 수 있습니다. 두 번째 던전의 &quot;소모 피로도&quot;는 40이므로, 던전을 탐험한 후 남은 피로도는 10입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 이 경우 세 던전을 모두 탐험할 수 있으며, 유저가 탐험할 수 있는 최대 던전 수는 3입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 문제는 완전탐색(DFS,BFS)이라는 점에서 힌트를 얻었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;던전 중 1곳을 방문했을 때, 방문 여부를 저장해야하고 (갔던 던전은 다시 가지 않음), 들른 던전을 체크 (count)해야하고, 마지막으로 던전의 값 만큼 피로도를 감소시켜야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위해서 던전의 방문여부를 저장하는 visit을 solution에 선언해서 사용하고, dungeonExplore라는 탐색 함수를 만들어 반복문을 통해 탐색합니다. 방문여부(visit[i]==0)와 최소필요피로도(dungeons[i][0])가 현재피로도(k)보다 작은 경우에만 방문을 하고 다시 이 상태에서 던전 방문을 해서 재귀함수처럼 계속 들어가는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 던전 방문 후 빠져나왔을 때, 다시 visit[i]의 값을 0으로 만들어서 이전의 방문 여부가 for문을 돌 때 영향을 주지 않도록 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1697180986760&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int k, int[][] dungeons) {
                int[] visit=new int[dungeons.length];
        //던전탐색함수는 던전정보(dungeons), 방문수(visit), 현재피로도(k), 방문한던전수(count)를 가지고 계산한다.
        dungeonExplore(dungeons,visit,k,0);

        return max;
    }
    
    private static int max=0;
    private static void dungeonExplore(int[][] dungeons, int[] visit, int k, int count) {
        for(int i=0;i&amp;lt;dungeons.length;i++){
            if(visit[i]==0&amp;amp;&amp;amp;dungeons[i][0]&amp;lt;=k){
                visit[i]=1;
                dungeonExplore(dungeons,visit,k-dungeons[i][1],count+1);
                visit[i]=0; //이전 방문여부가 다음 회차에 영향을 주지 않기 위함
            }
        }
        if(max&amp;lt;count){
            max=count;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>BFS</category>
      <category>dfs</category>
      <category>java</category>
      <category>완전탐색</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/114</guid>
      <comments>https://cheerup313.tistory.com/114#entry114comment</comments>
      <pubDate>Mon, 16 Oct 2023 09:48:58 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 2018 카카오 블라인드 채용 - 뉴스 클러스터링</title>
      <link>https://cheerup313.tistory.com/113</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eFOEaW/btsykm4EUWa/kLjv25XxdvVgPpPOAOxvkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eFOEaW/btsykm4EUWa/kLjv25XxdvVgPpPOAOxvkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eFOEaW/btsykm4EUWa/kLjv25XxdvVgPpPOAOxvkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeFOEaW%2Fbtsykm4EUWa%2FkLjv25XxdvVgPpPOAOxvkk%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17677&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/17677&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697175204142&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17677&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/NKxZM/hyUdRzZJKI/wlRKirhfTBhFKVYHccsQk1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/k7jKn/hyT9IxWnqH/Ib730GXMQrMeNuK8YS2XKK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17677&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17677&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/NKxZM/hyUdRzZJKI/wlRKirhfTBhFKVYHccsQk1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/k7jKn/hyT9IxWnqH/Ib730GXMQrMeNuK8YS2XKK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;h1&gt;&lt;b&gt;뉴스 클러스터링&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 &quot;카카오 신입 개발자 공채&quot; 관련 기사를 검색해보았다.&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;li&gt;카카오 공채, 신입 개발자 코딩 능력만 본다&lt;/li&gt;
&lt;li&gt;카카오, 신입 공채.. &quot;코딩 실력만 본다&quot;&lt;/li&gt;
&lt;li&gt;카카오 &quot;코딩 능력만으로 2018 신입 개발자 뽑는다&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기사의 제목을 기준으로 &quot;블라인드 전형&quot;에 주목하는 기사와 &quot;코딩 테스트&quot;에 주목하는 기사로 나뉘는 걸 발견했다. 튜브는 이들을 각각 묶어서 보여주면 카카오 공채 관련 기사를 찾아보는 사용자에게 유용할 듯싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유사한 기사를 묶는 기준을 정하기 위해서 논문과 자료를 조사하던 튜브는 &quot;자카드 유사도&quot;라는 방법을 찾아냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자카드 유사도는 집합 간의 유사도를 검사하는 여러 방법 중의 하나로 알려져 있다. 두 집합&amp;nbsp;A,&amp;nbsp;B&amp;nbsp;사이의 자카드 유사도&amp;nbsp;J(A, B)는 두 집합의 교집합 크기를 두 집합의 합집합 크기로 나눈 값으로 정의된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 집합&amp;nbsp;A&amp;nbsp;= {1, 2, 3}, 집합&amp;nbsp;B&amp;nbsp;= {2, 3, 4}라고 할 때, 교집합&amp;nbsp;A &amp;cap; B&amp;nbsp;= {2, 3}, 합집합&amp;nbsp;A &amp;cup; B&amp;nbsp;= {1, 2, 3, 4}이 되므로, 집합&amp;nbsp;A,&amp;nbsp;B&amp;nbsp;사이의 자카드 유사도&amp;nbsp;J(A, B)&amp;nbsp;= 2/4 = 0.5가 된다. 집합 A와 집합 B가 모두 공집합일 경우에는 나눗셈이 정의되지 않으니 따로&amp;nbsp;J(A, B)&amp;nbsp;= 1로 정의한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자카드 유사도는 원소의 중복을 허용하는 다중집합에 대해서 확장할 수 있다. 다중집합&amp;nbsp;A는 원소 &quot;1&quot;을 3개 가지고 있고, 다중집합&amp;nbsp;B는 원소 &quot;1&quot;을 5개 가지고 있다고 하자. 이 다중집합의 교집합&amp;nbsp;A &amp;cap; B는 원소 &quot;1&quot;을 min(3, 5)인 3개, 합집합&amp;nbsp;A &amp;cup; B는 원소 &quot;1&quot;을 max(3, 5)인 5개 가지게 된다. 다중집합&amp;nbsp;A&amp;nbsp;= {1, 1, 2, 2, 3}, 다중집합&amp;nbsp;B&amp;nbsp;= {1, 2, 2, 4, 5}라고 하면, 교집합&amp;nbsp;A &amp;cap; B&amp;nbsp;= {1, 2, 2}, 합집합&amp;nbsp;A &amp;cup; B&amp;nbsp;= {1, 1, 2, 2, 3, 4, 5}가 되므로, 자카드 유사도&amp;nbsp;J(A, B)&amp;nbsp;= 3/7, 약 0.42가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 이용하여 문자열 사이의 유사도를 계산하는데 이용할 수 있다. 문자열 &quot;FRANCE&quot;와 &quot;FRENCH&quot;가 주어졌을 때, 이를 두 글자씩 끊어서 다중집합을 만들 수 있다. 각각 {FR, RA, AN, NC, CE}, {FR, RE, EN, NC, CH}가 되며, 교집합은 {FR, NC}, 합집합은 {FR, RA, AN, NC, CE, RE, EN, CH}가 되므로, 두 문자열 사이의 자카드 유사도&amp;nbsp;J(&quot;FRANCE&quot;, &quot;FRENCH&quot;)&amp;nbsp;= 2/8 = 0.25가 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력으로는&amp;nbsp;str1과&amp;nbsp;str2의 두 문자열이 들어온다. 각 문자열의 길이는 2 이상, 1,000 이하이다.&lt;/li&gt;
&lt;li&gt;입력으로 들어온 문자열은 두 글자씩 끊어서 다중집합의 원소로 만든다. 이때 영문자로 된 글자 쌍만 유효하고, 기타 공백이나 숫자, 특수 문자가 들어있는 경우는 그 글자 쌍을 버린다. 예를 들어 &quot;ab+&quot;가 입력으로 들어오면, &quot;ab&quot;만 다중집합의 원소로 삼고, &quot;b+&quot;는 버린다.&lt;/li&gt;
&lt;li&gt;다중집합 원소 사이를 비교할 때, 대문자와 소문자의 차이는 무시한다. &quot;AB&quot;와 &quot;Ab&quot;, &quot;ab&quot;는 같은 원소로 취급한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;출력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력으로 들어온 두 문자열의 자카드 유사도를 출력한다. 유사도 값은 0에서 1 사이의 실수이므로, 이를 다루기 쉽도록 65536을 곱한 후에 소수점 아래를 버리고 정수부만 출력한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;예제 입출력&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;str1 str2 answer&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FRANCE&lt;/td&gt;
&lt;td&gt;french&lt;/td&gt;
&lt;td&gt;16384&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;handshake&lt;/td&gt;
&lt;td&gt;shake hands&lt;/td&gt;
&lt;td&gt;65536&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aa1+aa2&lt;/td&gt;
&lt;td&gt;AAAA12&lt;/td&gt;
&lt;td&gt;43690&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E=M*C^2&lt;/td&gt;
&lt;td&gt;e=m*c^2&lt;/td&gt;
&lt;td&gt;65536&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 전 인덱스 string값과 현재 인덱스 string값이 전부 문자일 때만 List에 넣고,&amp;nbsp; List를 정렬한 후, str1 집합에 대해서 탐색시 str2에 있는 집합일 경우 2에 있는걸 삭제하고 intersection(교집합)에 추가한다. union에는 전부 다 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 삭제된 str2에 대한 집합을 전부 union(합집합)에 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1697180986760&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(String str1, String str2) {
         //J(a,b) 자카드 유사도 = 교집합 크기를 합집합 크기로 나눈 것
        int answer = 0;
        double jaccard = 0.0;
        str1=str1.toUpperCase();
        str2=str2.toUpperCase();
        List&amp;lt;String&amp;gt; intersection=new ArrayList&amp;lt;&amp;gt;();
        List&amp;lt;String&amp;gt; union=new ArrayList&amp;lt;&amp;gt;();
        List&amp;lt;String&amp;gt; newStr1= new ArrayList&amp;lt;&amp;gt;();
        List&amp;lt;String&amp;gt; newStr2= new ArrayList&amp;lt;&amp;gt;();
        for(int i=1;i&amp;lt;str1.length();i++){
            if((str1.charAt(i)&amp;gt;=65&amp;amp;&amp;amp;str1.charAt(i)&amp;lt;=90)&amp;amp;&amp;amp;(str1.charAt(i-1)&amp;gt;=65&amp;amp;&amp;amp;str1.charAt(i-1)&amp;lt;=90)){
                String input= String.valueOf(str1.charAt(i-1))+String.valueOf(str1.charAt(i));
                newStr1.add(input);
            }
        }
        for(int i=1;i&amp;lt;str2.length();i++){
            if((str2.charAt(i)&amp;gt;=65&amp;amp;&amp;amp;str2.charAt(i)&amp;lt;=90)&amp;amp;&amp;amp;(str2.charAt(i-1)&amp;gt;=65&amp;amp;&amp;amp;str2.charAt(i-1)&amp;lt;=90)){
                String input= String.valueOf(str2.charAt(i-1))+String.valueOf(str2.charAt(i));
                newStr2.add(input);
            }
        }
        Collections.sort(newStr1);
        Collections.sort(newStr2);
        for(String s:newStr1){
            if(newStr2.remove(s)){
                intersection.add(s);
            }
            union.add(s);
        }
        for(String s:newStr2){
            union.add(s);
        }

        jaccard= (double) intersection.size() /union.size();
        if(intersection.size()==0&amp;amp;&amp;amp;union.size()==0){
            jaccard=1;
        }
        answer= (int) (jaccard*65536);
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>String</category>
      <category>문자</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/113</guid>
      <comments>https://cheerup313.tistory.com/113#entry113comment</comments>
      <pubDate>Fri, 13 Oct 2023 16:12:41 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 프로세스</title>
      <link>https://cheerup313.tistory.com/112</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecQ6cH/btsyquUw5jB/KAAKv2DE6Vi1kfqAM62YMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecQ6cH/btsyquUw5jB/KAAKv2DE6Vi1kfqAM62YMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecQ6cH/btsyquUw5jB/KAAKv2DE6Vi1kfqAM62YMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecQ6cH%2FbtsyquUw5jB%2FKAAKv2DE6Vi1kfqAM62YMK%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42587#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42587#&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697163242033&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42587#&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cGcdMl/hyUdP9ZmAL/AvaA5d9fEJLOnjQShZJXa0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/byKROF/hyT9JwNSpV/xJq0pMQeWcvAGoXzBR1zX1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42587#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42587#&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cGcdMl/hyUdP9ZmAL/AvaA5d9fEJLOnjQShZJXa0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/byKROF/hyT9JwNSpV/xJq0pMQeWcvAGoXzBR1zX1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다. 2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다. 3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 실행 대기 큐(Queue)에 있는 프로세스의 중요도가 순서대로 담긴 배열&amp;nbsp;priorities와, 몇 번째로 실행되는지 알고싶은 프로세스의 위치를 알려주는&amp;nbsp;location이 매개변수로 주어질 때, 해당 프로세스가 몇 번째로 실행되는지 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;priorities의 길이는 1 이상 100 이하입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;priorities의 원소는 1 이상 9 이하의 정수입니다.&lt;/li&gt;
&lt;li&gt;priorities의 원소는 우선순위를 나타내며 숫자가 클 수록 우선순위가 높습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;location은 0 이상 (대기 큐에 있는 프로세스 수 - 1) 이하의 값을 가집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;priorities의 가장 앞에 있으면 0, 두 번째에 있으면 1 &amp;hellip; 과 같이 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;priorities location return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 40.814%; height: 17px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 41.6619%;&quot;&gt;[2, 1, 3, 2]&lt;/td&gt;
&lt;td style=&quot;width: 25.0931%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 33.0539%;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 41.6619%;&quot;&gt;[1, 1, 9, 1, 1, 1]&lt;/td&gt;
&lt;td style=&quot;width: 25.0931%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 33.0539%;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 #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;예제 #2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6개의 프로세스 [A, B, C, D, E, F]가 대기 큐에 있고 중요도가 [1, 1, 9, 1, 1, 1] 이므로 [C, D, E, F, A, B] 순으로 실행됩니다. 따라서 A는 5번째로 실행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Queue 자료형을 사용한다. Queue에서 poll은 가장 바깥 값을 Queue에서 삭제하고 그 값을 반환하고, peek는 삭제하지는 않고 보여주기만 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 처음에 이해가 어려웠는데, 생각보다 간단한 방식이다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 55.3488%; height: 150px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 49.1596%; height: 16px;&quot;&gt;input&lt;/td&gt;
&lt;td style=&quot;width: 50.8404%; height: 16px;&quot;&gt;output (실제 문제의 output아님)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 49.1596%; height: 16px;&quot;&gt;2,1,3,2&lt;/td&gt;
&lt;td style=&quot;width: 50.8404%; height: 16px;&quot;&gt;2,3,0,1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 15px;&quot;&gt;
&lt;td style=&quot;width: 49.1596%; height: 15px;&quot;&gt;1,1,7,1,9,1,1&lt;/td&gt;
&lt;td style=&quot;width: 50.8404%; height: 15px;&quot;&gt;4,2,3,5,6,9,1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 49.1596%; height: 16px;&quot;&gt;2,1,2,1,2,1,2,1,2&lt;/td&gt;
&lt;td style=&quot;width: 50.8404%; height: 16px;&quot;&gt;0,2,4,6,8,1,3,5,7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;input에서 숫자가 가장 높은 값이 먼저 output으로 들어온다. (다만 0부터 시작하므로 C가 되는 값은 output에서는 2가 된다.) 이후 같은 중요도를 가지는 값이 있으면 input에서 오른쪽으로 가면서 읽어서 또 존재하면 뽑고, 아니면 그 아래 중요순위인 값을 오른쪽으로 가면서 읽고 뽑는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 문제를 2시간 가량 해결하지 못하여 코드를 검색했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PriorityQueue자료형과 람다함수로 비교식을 쓰는 방법을 좀 공부해야 할 것 같다.&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;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1697174870652&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
                int answer = 0;

        PriorityQueue&amp;lt;Integer&amp;gt; pq = new PriorityQueue&amp;lt;&amp;gt;((o1, o2) -&amp;gt; o2 - o1); // 내림차순 정렬

        for (int priority : priorities) {
            pq.offer(priority);
        }

        while (!pq.isEmpty()) {
            for (int i = 0; i &amp;lt; priorities.length; i++) {
                if (priorities[i] == pq.peek()) {
                    if (i == location) {
                        return ++answer;
                    }
                    pq.poll();
                    answer++;
                }
            }
        }
        return answer;
    }
    
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>PriorityQueue</category>
      <category>queue</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/112</guid>
      <comments>https://cheerup313.tistory.com/112#entry112comment</comments>
      <pubDate>Fri, 13 Oct 2023 14:28:47 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 기능개발</title>
      <link>https://cheerup313.tistory.com/111</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5JLsO/btsyeqqNOO3/dzZVwhTpLKslPExgWSXVR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5JLsO/btsyeqqNOO3/dzZVwhTpLKslPExgWSXVR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5JLsO/btsyeqqNOO3/dzZVwhTpLKslPExgWSXVR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5JLsO%2FbtsyeqqNOO3%2FdzZVwhTpLKslPExgWSXVR1%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42586&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42586&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697074489134&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42586&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6WN7x/hyT9HlfEib/6qDZ17kOelXomCOBU17sAK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bO8MF9/hyT9yaRu6r/8FxX0XjNMatIz6WXdkOjuk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42586&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42586&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6WN7x/hyT9HlfEib/6qDZ17kOelXomCOBU17sAK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bO8MF9/hyT9yaRu6r/8FxX0XjNMatIz6WXdkOjuk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한 사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.&lt;/li&gt;
&lt;li&gt;작업 진도는 100 미만의 자연수입니다.&lt;/li&gt;
&lt;li&gt;작업 속도는 100 이하의 자연수입니다.&lt;/li&gt;
&lt;li&gt;배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;progresses speeds return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[93, 30, 55]&lt;/td&gt;
&lt;td&gt;[1, 30, 5]&lt;/td&gt;
&lt;td&gt;[2, 1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[95, 90, 99, 99, 80, 99]&lt;/td&gt;
&lt;td&gt;[1, 1, 1, 1, 1, 1]&lt;/td&gt;
&lt;td&gt;[1, 3, 2]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 기능은 93% 완료되어 있고 하루에 1%씩 작업이 가능하므로 7일간 작업 후 배포가 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 기능은 30%가 완료되어 있고 하루에 30%씩 작업이 가능하므로 3일간 작업 후 배포가 가능합니다. 하지만 이전 첫 번째 기능이 아직 완성된 상태가 아니기 때문에 첫 번째 기능이 배포되는 7일째 배포됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 번째 기능은 55%가 완료되어 있고 하루에 5%씩 작업이 가능하므로 9일간 작업 후 배포가 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 7일째에 2개의 기능, 9일째에 1개의 기능이 배포됩니다.&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;모든 기능이 하루에 1%씩 작업이 가능하므로, 작업이 끝나기까지 남은 일수는 각각 5일, 10일, 1일, 1일, 20일, 1일입니다. 어떤 기능이 먼저 완성되었더라도 앞에 있는 모든 기능이 완성되지 않으면 배포가 불가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 5일째에 1개의 기능, 10일째에 3개의 기능, 20일째에 2개의 기능이 배포됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 공지 - 2020년 7월 14일 테스트케이스가 추가되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 예전에 풀어본 문제였습니다!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Queue 자료형을 이용하여 쉽게 풀 수 있었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;걸리는날짜 (date)는 '(100 - 현재진행상태) / 속도' 로 구합니다. 9.3일이 걸린다고 하면 실제로는 일은 9일만에 끝내지 못하고 10일이 걸리므로 반올림합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 값이 Queue에 존재하는 가장 마지막 값보다 클 경우 정답 list에 넣어 반환합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1697074423521&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        Queue&amp;lt;Integer&amp;gt; q = new LinkedList&amp;lt;&amp;gt;();
        List&amp;lt;Integer&amp;gt; answerList = new ArrayList&amp;lt;&amp;gt;();

        for (int i = 0; i &amp;lt; speeds.length; i++) {
            double remain = (100 - progresses[i]) / (double) speeds[i];
            int date = (int) Math.ceil(remain);

            if (!q.isEmpty() &amp;amp;&amp;amp; q.peek() &amp;lt; date) {
                answerList.add(q.size());
                q.clear();
            }

            q.offer(date);
        }

        answerList.add(q.size());

        int[] answer = new int[answerList.size()];

        for (int i = 0; i &amp;lt; answer.length; i++) {
            answer[i] = answerList.get(i);
        }

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>programmers</category>
      <category>queue</category>
      <category>자료구조</category>
      <category>큐</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/111</guid>
      <comments>https://cheerup313.tistory.com/111#entry111comment</comments>
      <pubDate>Thu, 12 Oct 2023 10:39:30 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 2019 카카오 겨울 인턴십 - 튜플</title>
      <link>https://cheerup313.tistory.com/110</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/59laJ/btsx2LDzW1H/3OHnUvW1obWeY76x7rPJmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/59laJ/btsx2LDzW1H/3OHnUvW1obWeY76x7rPJmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/59laJ/btsx2LDzW1H/3OHnUvW1obWeY76x7rPJmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F59laJ%2Fbtsx2LDzW1H%2F3OHnUvW1obWeY76x7rPJmk%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;728&quot; height=&quot;463&quot; data-filename=&quot;programmers.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/64065&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697074015641&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/3u1qn/hyT9N60F8p/rUuZXb35nGO58gXcUUY8u0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/s6q1Y/hyT9CdbUmC/3Nm1IguNjAEnuOFP5bStl1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/64065&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/3u1qn/hyT9N60F8p/rUuZXb35nGO58gXcUUY8u0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/s6q1Y/hyT9CdbUmC/3Nm1IguNjAEnuOFP5bStl1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(a1, a2, a3, ..., an)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜플은 다음과 같은 성질을 가지고 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2)&lt;/li&gt;
&lt;li&gt;원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) &amp;ne; (1, 3, 2)&lt;/li&gt;
&lt;li&gt;튜플의 원소 개수는 유한합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원소의 개수가 n개이고,&amp;nbsp;&lt;b&gt;중복되는 원소가 없는&lt;/b&gt;&amp;nbsp;튜플&amp;nbsp;(a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'를 이용해 표현할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;{{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 튜플이 (2, 1, 3, 4)인 경우 이는&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}&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;{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}&lt;/li&gt;
&lt;li&gt;{{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}}&lt;/li&gt;
&lt;li&gt;{{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}}&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;는 모두 같은 튜플 (2, 1, 3, 4)를 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[제한사항]&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;s의 길이는 5 이상 1,000,000 이하입니다.&lt;/li&gt;
&lt;li&gt;s는 숫자와 '{', '}', ',' 로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;숫자가 0으로 시작하는 경우는 없습니다.&lt;/li&gt;
&lt;li&gt;s는 항상 중복되는 원소가 없는 튜플을 올바르게 표현하고 있습니다.&lt;/li&gt;
&lt;li&gt;s가 표현하는 튜플의 원소는 1 이상 100,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;return 하는 배열의 길이가 1 이상 500 이하인 경우만 입력으로 주어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[입출력 예]&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&quot;{{2},{2,1},{2,1,3},{2,1,3,4}}&quot;&lt;/td&gt;
&lt;td&gt;[2, 1, 3, 4]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;{{1,2,3},{2,1},{1,2,4,3},{2}}&quot;&lt;/td&gt;
&lt;td&gt;[2, 1, 3, 4]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;{{20,111},{111}}&quot;&lt;/td&gt;
&lt;td&gt;[111, 20]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;{{123}}&quot;&lt;/td&gt;
&lt;td&gt;[123]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;{{4,2,3},{3},{2,3,4,1},{2,3}}&quot;&lt;/td&gt;
&lt;td&gt;[3, 2, 4, 1]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예에 대한 설명&lt;/b&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 예시와 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 예시와 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예 #3&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(111, 20)을 집합 기호를 이용해 표현하면 {{111}, {111,20}}이 되며, 이는 {{20,111},{111}}과 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예 #4&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(123)을 집합 기호를 이용해 표현하면 {{123}} 입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예 #5&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(3, 2, 4, 1)을 집합 기호를 이용해 표현하면 {{3},{3,2},{3,2,4},{3,2,4,1}}이 되며, 이는 {{4,2,3},{3},{2,3,4,1},{2,3}}과 같습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;substring과 split으로 한개의 String으로 주어진 입력값을 분해하고, 각각의원소를 list에 존재하지 않을 경우에만 넣으면 완료!&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1697074003772&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public List&amp;lt;Integer&amp;gt; solution(String s) {
        int[] answer = {};
        List&amp;lt;Integer&amp;gt; tuple=new ArrayList&amp;lt;&amp;gt;();
        s=s.substring(2,s.length()-2).replace(&quot;},{&quot;,&quot;!&quot;); //맨앞 {{, 맨뒤 }} 삭제 후 {,} 형태를 전부 !로 변경
        String[] arr=s.split(&quot;!&quot;);//!를 기준으로 나누면, },{ 를 기준으로 나눠지기 때문에 바로 분리해서 넣기가 가능.
        Arrays.sort(arr, new Comparator&amp;lt;String&amp;gt;() { //arr내의 string길이에 따라 재정렬
            @Override
            public int compare(String o1, String o2) {
                return Integer.compare(o1.length(),o2.length());
            }
        });
        for(String d:arr){
            String[] temp=d.split(&quot;,&quot;);
            for(int i=0;i&amp;lt;temp.length;i++){
                int n=Integer.parseInt(temp[i]);
                if(!tuple.contains(n)){
                    tuple.add(n);
                }
            }
        }

        return tuple;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/110</guid>
      <comments>https://cheerup313.tistory.com/110#entry110comment</comments>
      <pubDate>Thu, 12 Oct 2023 10:29:36 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 의상</title>
      <link>https://cheerup313.tistory.com/109</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42578&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42578&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696935497147&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42578&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b9NCLB/hyT9z1dknT/oDfMQMX8ykv4SRXthY8PDK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/eFZtC/hyT9M7iRkl/J2NtKWf38KPWERMdbVFiu1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42578&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42578&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b9NCLB/hyT9z1dknT/oDfMQMX8ykv4SRXthY8PDK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/eFZtC/hyT9M7iRkl/J2NtKWf38KPWERMdbVFiu1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 설명&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&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;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;얼굴&lt;/td&gt;
&lt;td&gt;동그란 안경, 검정 선글라스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상의&lt;/td&gt;
&lt;td&gt;파란색 티셔츠&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;하의&lt;/td&gt;
&lt;td&gt;청바지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;겉옷&lt;/td&gt;
&lt;td&gt;긴 코트&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;코니는 하루에 최소 한 개의 의상은 입습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코니가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;코니가 가진 의상의 수는 1개 이상 30개 이하입니다.&lt;/li&gt;
&lt;li&gt;같은 이름을 가진 의상은 존재하지 않습니다.&lt;/li&gt;
&lt;li&gt;clothes의 모든 원소는 문자열로 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;모든 문자열의 길이는 1 이상 20 이하인 자연수이고 알파벳 소문자 또는 '_' 로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;clothes return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[[&quot;yellow_hat&quot;, &quot;headgear&quot;], [&quot;blue_sunglasses&quot;, &quot;eyewear&quot;], [&quot;green_turban&quot;, &quot;headgear&quot;]]&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[[&quot;crow_mask&quot;, &quot;face&quot;], [&quot;blue_sunglasses&quot;, &quot;face&quot;], [&quot;smoky_makeup&quot;, &quot;face&quot;]]&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 #1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;headgear에 해당하는 의상이 yellow_hat, green_turban이고 eyewear에 해당하는 의상이 blue_sunglasses이므로 아래와 같이 5개의 조합이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. yellow_hat 2. blue_sunglasses 3. green_turban 4. yellow_hat + blue_sunglasses 5. green_turban + blue_sunglasses&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;face에 해당하는 의상이 crow_mask, blue_sunglasses, smoky_makeup이므로 아래와 같이 3개의 조합이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. crow_mask 2. blue_sunglasses 3. smoky_makeup&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조합과 순열을 생각하면, 0개일 수도 있고, 전부다 0개인 것은 빼야하므로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(종류별갯수+1)*(종류별갯수+1)*...-1 을 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1696935489841&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public int solution(String[][] clothes) {
                int answer = 1;
        List&amp;lt;Map&amp;lt;String,Integer&amp;gt;&amp;gt; list=new ArrayList&amp;lt;&amp;gt;();
        Map&amp;lt;String,Integer&amp;gt; map=new HashMap&amp;lt;&amp;gt;();
        //의상종류별로 (종류+1)*(종류+1)*(종류+1)-1
        for(int i=0;i&amp;lt;clothes.length;i++){
            if(map.containsKey(clothes[i][1])){
                int n=map.get(clothes[i][1]);
                map.put(clothes[i][1],n+1);
            }else{
                map.put(clothes[i][1],1);
            }
            list.add(map);
        }

        // 방법2
        for( Map.Entry&amp;lt;String, Integer&amp;gt; e : map.entrySet() ){
            //System.out.println( String.format(&quot;키 : %s, 값 : %s&quot;, e.getKey(), e.getValue()) );
            answer*=(e.getValue()+1);
        }
        return answer-1;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>프로그래머스</category>
      <category>해시</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/109</guid>
      <comments>https://cheerup313.tistory.com/109#entry109comment</comments>
      <pubDate>Tue, 10 Oct 2023 20:00:14 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 2018 카카오 블라인드 기출문제 - 캐시</title>
      <link>https://cheerup313.tistory.com/108</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17680&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/17680&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696925640000&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17680&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cxUHFC/hyT9LUZCdI/ajdv0I1QW9ZlhkjW4YqcKK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/tOSDf/hyT9FmVbo5/6dR7xuep3mDfksPNwK8Wm0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17680&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/17680&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cxUHFC/hyT9LUZCdI/ajdv0I1QW9ZlhkjW4YqcKK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/tOSDf/hyT9FmVbo5/6dR7xuep3mDfksPNwK8Wm0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 조건&lt;/h2&gt;
&lt;h1&gt;&lt;b&gt;캐시&lt;/b&gt;&lt;/h1&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;어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도하고 있지만 캐시 크기를 얼마로 해야 효율적인지 몰라 난감한 상황이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어피치에게 시달리는 제이지를 도와, DB 캐시를 적용할 때 캐시 크기에 따른 실행시간 측정 프로그램을 작성하시오.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;캐시 크기(cacheSize)와 도시이름 배열(cities)을 입력받는다.&lt;/li&gt;
&lt;li&gt;cacheSize는 정수이며, 범위는 0 ≦&amp;nbsp;cacheSize&amp;nbsp;≦ 30 이다.&lt;/li&gt;
&lt;li&gt;cities는 도시 이름으로 이뤄진 문자열 배열로, 최대 도시 수는 100,000개이다.&lt;/li&gt;
&lt;li&gt;각 도시 이름은 공백, 숫자, 특수문자 등이 없는 영문자로 구성되며, 대소문자 구분을 하지 않는다. 도시 이름은 최대 20자로 이루어져 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;출력 형식&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력된 도시이름 배열을 순서대로 처리할 때, &quot;총 실행시간&quot;을 출력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;캐시 교체 알고리즘은&amp;nbsp;LRU(Least Recently Used)를 사용한다.&lt;/li&gt;
&lt;li&gt;cache hit일 경우 실행시간은&amp;nbsp;1이다.&lt;/li&gt;
&lt;li&gt;cache miss일 경우 실행시간은&amp;nbsp;5이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐시크기(cacheSize) 도시이름(cities) 실행시간&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;[&quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;, &quot;NewYork&quot;, &quot;LA&quot;, &quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;, &quot;NewYork&quot;, &quot;LA&quot;]&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;[&quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;, &quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;, &quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;]&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;[&quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;, &quot;NewYork&quot;, &quot;LA&quot;, &quot;SanFrancisco&quot;, &quot;Seoul&quot;, &quot;Rome&quot;, &quot;Paris&quot;, &quot;Jeju&quot;, &quot;NewYork&quot;, &quot;Rome&quot;]&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;[&quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;, &quot;NewYork&quot;, &quot;LA&quot;, &quot;SanFrancisco&quot;, &quot;Seoul&quot;, &quot;Rome&quot;, &quot;Paris&quot;, &quot;Jeju&quot;, &quot;NewYork&quot;, &quot;Rome&quot;]&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;[&quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;NewYork&quot;, &quot;newyork&quot;]&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;[&quot;Jeju&quot;, &quot;Pangyo&quot;, &quot;Seoul&quot;, &quot;NewYork&quot;, &quot;LA&quot;]&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐시는 총 저장할 수 있는 도시 수 라고 보면되고, 새로 저장될 경우 +5, 이미 캐시에 있는 경우 +1을 진행한다. 이는 링크드리스트를 이용하여 풀면 쉽게 풀 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크드리스트에는 remove라는 함수가 있다. 이 안에 object값을 넣으면 해당하는 값을 삭제하면서 true를 반환하고 , 아닐 경우 false를 반환한다. remove에 숫자(index)를 넣으면 인덱스 값을 찾아서 그 값을 삭제하고 반환한다. 이를 통해서 cities배열에 존재하는 city 이름을 하나하나 분석하여 캐시 값을 구한다.&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;+ 그냥 작성할 경우 보통 예외 케이스로 인해 통과하지 못했다. 자세히 문제를 살펴보니, 캐시사이즈가 0도 가능하다는 사실을 알았다.. 0일 경우를 따로 작성해준다.&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;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1696927196889&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int cacheSize, String[] cities) {
        int answer = 0;
        if(cacheSize==0){
            return cities.length*5;
        }
        LinkedList&amp;lt;String&amp;gt; cache = new LinkedList&amp;lt;&amp;gt;();
        for(int i=0;i&amp;lt;cities.length;i++){
            String s=cities[i].toUpperCase(); //대소문자 구분을 하지 않아 전부다 upperCase로 대문자처리
            if(cache.remove(s)){ //s값이 존재할 경우 이 값을 지우고 true를 반환
                answer++;
                cache.add(s);
            }else{
                answer+=5;
                if(cache.size()&amp;gt;=cacheSize){
                    cache.remove(0);//0번째 리스트 삭제
                }
                cache.add(s);
            }
        }

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>링크드리스트</category>
      <category>캐시</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/108</guid>
      <comments>https://cheerup313.tistory.com/108#entry108comment</comments>
      <pubDate>Tue, 10 Oct 2023 17:41:05 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 행렬의곱셈</title>
      <link>https://cheerup313.tistory.com/107</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12949&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12949&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696925400356&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12949&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yDiVV/hyT9Lm8T1D/VG1NSdXyFXq8GlBEnyKH80/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/xmqgR/hyT9EVQ9qG/JYyeDdZ9Uy5bOHSG1QQTZ1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12949&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12949&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yDiVV/hyT9Lm8T1D/VG1NSdXyFXq8GlBEnyKH80/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/xmqgR/hyT9EVQ9qG/JYyeDdZ9Uy5bOHSG1QQTZ1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한 조건&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.&lt;/li&gt;
&lt;li&gt;행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;곱할 수 있는 배열만 주어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;arr1 arr2 return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[[1, 4], [3, 2], [4, 1]]&lt;/td&gt;
&lt;td&gt;[[3, 3], [3, 3]]&lt;/td&gt;
&lt;td&gt;[[15, 15], [15, 15], [15, 15]]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[[2, 3, 2], [4, 2, 4], [3, 1, 4]]&lt;/td&gt;
&lt;td&gt;[[5, 4, 3], [2, 4, 1], [3, 1, 1]]&lt;/td&gt;
&lt;td&gt;[[22, 22, 11], [36, 28, 18], [29, 20, 14]]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a*b X c*d 행렬을 곱할 경우, b와 c는 값이 같아야 하고 --&amp;gt; 코드에서 k로 표기 정답인 행렬은 a*d로 표기된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jjw7808.tistory.com/7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jjw7808.tistory.com/7&lt;/a&gt;&amp;nbsp;참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1696925458736&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
                //3*2 2*2 = 3*2 -&amp;gt; a*b X c*d = a*d 사이즈. b와 c는 숫자가 같아야함. =k
        int ansRow=arr1.length;
        int ansCol=arr2[0].length;
        System.out.println(&quot;ansRow = &quot;+ansRow+&quot;, ansCol = &quot;+ansCol);
        int[][] ans=new int[ansRow][ansCol];
        for(int i = 0; i &amp;lt; ans.length; i++){
            for(int j = 0; j &amp;lt; ans[0].length; j++){
                int sum = 0;
                for(int k = 0; k &amp;lt; arr2.length; k++){
                    sum += arr1[i][k] * arr2[k][j];
                }
                ans[i][j] = sum;
            }
        }
        return ans;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>배열</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/107</guid>
      <comments>https://cheerup313.tistory.com/107#entry107comment</comments>
      <pubDate>Tue, 10 Oct 2023 17:11:53 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - H-dex</title>
      <link>https://cheerup313.tistory.com/106</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42747&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696911498774&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/M2Dr3/hyT9EuJJGj/HRZYVqI299RL1wpFvv8ke0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cgxy7Z/hyT9GTCGsb/b05pKvN7oq6FG36LjZsBb1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/M2Dr3/hyT9EuJJGj/HRZYVqI299RL1wpFvv8ke0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cgxy7Z/hyT9GTCGsb/b05pKvN7oq6FG36LjZsBb1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747#fn1&quot;&gt;1&lt;/a&gt;에 따르면, H-Index는 다음과 같이 구합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 과학자가 발표한 논문&amp;nbsp;n편 중,&amp;nbsp;h번 이상 인용된 논문이&amp;nbsp;h편 이상이고 나머지 논문이 h번 이하 인용되었다면&amp;nbsp;h의 최댓값이 이 과학자의 H-Index입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.&lt;/li&gt;
&lt;li&gt;논문별 인용 횟수는 0회 이상 10,000회 이하입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;citations return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[3, 0, 6, 1, 5]&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문으로 h값이 size와 일치할때 까지 돌리고, while문 내부에서 h개 이상인 논문 수를 체크하여 반환할 값 (chkH)을 계속 변환합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1696911611267&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    public int solution(int[] citations) {
        //h번 이상 인용된 논문이 h개 &amp;gt; 이때 h의 최댓값
        int size=citations.length;
        int h=0;
        int chkH=0;
        while(h!=size){
            h++;
            int count=0;
            for(int i=0;i&amp;lt;size;i++){
                if(citations[i]&amp;gt;=h){
                    count++;
                }
            }
            if(count&amp;gt;=h){
                chkH=h;
            };
        }

        return chkH;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;효율성이 좋은 코드는 아니라고 생각했는데, 한번에 통과하게 되었습니다 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>알고리즘</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/106</guid>
      <comments>https://cheerup313.tistory.com/106#entry106comment</comments>
      <pubDate>Tue, 10 Oct 2023 13:20:59 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - n^2 배열자르기</title>
      <link>https://cheerup313.tistory.com/105</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/87390&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696642820238&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cbgCTu/hyT9Knhis8/TRYcP9G2FuYICxRrL6nDYk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/jblkl/hyT5ZfjJt7/Qogz8MRKfpNHmN4hIyf7XK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cbgCTu/hyT9Knhis8/TRYcP9G2FuYICxRrL6nDYk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/jblkl/hyT5ZfjJt7/Qogz8MRKfpNHmN4hIyf7XK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수&amp;nbsp;n,&amp;nbsp;left,&amp;nbsp;right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;n행&amp;nbsp;n열 크기의 비어있는 2차원 배열을 만듭니다.&lt;/li&gt;
&lt;li&gt;i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1행 1열부터&amp;nbsp;i행&amp;nbsp;i열까지의 영역 내의 모든 빈 칸을 숫자&amp;nbsp;i로 채웁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1행, 2행, ...,&amp;nbsp;n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다.&lt;/li&gt;
&lt;li&gt;새로운 1차원 배열을&amp;nbsp;arr이라 할 때,&amp;nbsp;arr[left],&amp;nbsp;arr[left+1], ...,&amp;nbsp;arr[right]만 남기고 나머지는 지웁니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수&amp;nbsp;n,&amp;nbsp;left,&amp;nbsp;right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&amp;nbsp;n&amp;nbsp;&amp;le; 10&lt;/li&gt;
&lt;li&gt;7&lt;/li&gt;
&lt;li&gt;0 &amp;le;&amp;nbsp;left&amp;nbsp;&amp;le;&amp;nbsp;right&amp;nbsp;&amp;lt; n&lt;/li&gt;
&lt;li&gt;2&lt;/li&gt;
&lt;li&gt;right&amp;nbsp;-&amp;nbsp;left&amp;nbsp;&amp;lt; 10&lt;/li&gt;
&lt;li&gt;5&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n left right result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 44.7674%; height: 43px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;[3,2,2,3]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;[4,3,3,3,4,4,4,4]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이1(실패)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행렬을 인덱스로 구분할 때, 행렬안에 들어갈 값은 row,column 인덱스값 둘 중 최댓값 + 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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드1 (실패)&lt;/h2&gt;
&lt;pre id=&quot;code_1696402180451&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int[] solution(int n, long left, long right) {
                int[] answer = {};
        int size= (int) (right-left+1);
        int[] arr=new int[size];
        List&amp;lt;Long&amp;gt; ans = new ArrayList&amp;lt;&amp;gt;();
        // 행렬에 들어가는 값은 인덱스 (0,0)부터 시작이라고 쳤을 때
        // 인덱스의 최댓값 +1 이다.
        /*
            (0,0) (0,1) (0,2)
            (1,0) (1,1) (1,2)
            (2,0) (2,1) (2,2)
         */
        for(long i=0;i&amp;lt;n;i++){
            for(int j=0;j&amp;lt;n;j++){
                int index=(int)(i*n+j);
                if(index&amp;gt;=left&amp;amp;&amp;amp;index&amp;lt;=right){
                    ans.add(Math.max(i,j)+1);
                }
            }
        }
        for(int i=0;i&amp;lt;ans.size();i++){
            arr[i]= Math.toIntExact(ans.get(i));
        }
        return arr;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lcvYy/btsxg1Hf6gx/DqYDtUBDGmBdDUrv6JQlO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lcvYy/btsxg1Hf6gx/DqYDtUBDGmBdDUrv6JQlO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lcvYy/btsxg1Hf6gx/DqYDtUBDGmBdDUrv6JQlO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlcvYy%2Fbtsxg1Hf6gx%2FDqYDtUBDGmBdDUrv6JQlO0%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;641&quot; height=&quot;628&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간초과+실패가 나면서 실패했다. 이중for문으로 인해서 long타입에서 시간초과가 난 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이2(성공)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더욱 간단하게 생각해봐야겠다. 시간복잡도를 줄이기 위해서 반환 사이즈는 그대로 반환할 사이즈만 선택하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중 for문을 사용하지 않고 행렬을 탐색할 방법이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(0,0) (0,1) (0,2)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 2 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1,0) (1,1) (1,2)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;gt;&amp;nbsp; 2 2 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2,0) (2,1) (2,2)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 3 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행렬이 있을 때, 3~6번째 값만 반환한다면 3,2,2,3 이 되는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 풀이에서 생각한 '&lt;b&gt;행렬안에 들어갈 값은 row,column 인덱스값 둘 중 최댓값 + 1&lt;/b&gt;' 을 이중for문으로 인덱스를 제시하지 않고 답을 반환하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1번 풀이&lt;/b&gt; : 이중for문으로 인덱스 설정 -&amp;gt; 인덱스를 바탕으로 행렬에 들어갈 값 구함 -&amp;gt; n번째에 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금의 풀이&lt;/b&gt; : n번째 값의 인덱스를 구함 -&amp;gt; 인덱스를 바탕으로 행렬에 들어갈 값 구함 -&amp;gt; n번째에 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 위 행렬에서 3번째 값을 기준으로 구한다면 row의 값은 (i+left)/n , column의 값은 (i+left)%n 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드2(성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1696643555424&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int[] solution(int n, long left, long right) {
        int size= (int) (right-left+1);
        int[] arr=new int[size];

        for(int i = 0; i &amp;lt; arr.length; i++){
            int row = (int)((i + left) / n) + 1; // row
            int col = (int)((i + left) % n) + 1; // column
            arr[i] = Math.max(row, col);
        }
        return arr;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/105</guid>
      <comments>https://cheerup313.tistory.com/105#entry105comment</comments>
      <pubDate>Sat, 7 Oct 2023 10:58:35 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 할인행사</title>
      <link>https://cheerup313.tistory.com/104</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/131127&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696401986120&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bsCCmm/hyT52bewQU/kRAVKKOWXRbrnW4hrO4TaK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cx0okO/hyT50kb5v8/17LQUKMvi3YAYFDaMp4we0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bsCCmm/hyT52bewQU/kRAVKKOWXRbrnW4hrO4TaK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cx0okO/hyT50kb5v8/17LQUKMvi3YAYFDaMp4we0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 정현이가 원하는 제품이 바나나 3개, 사과 2개, 쌀 2개, 돼지고기 2개, 냄비 1개이며, XYZ 마트에서 15일간 회원을 대상으로 할인하는 제품이 날짜 순서대로 치킨, 사과, 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나, 사과, 바나나인 경우에 대해 알아봅시다. 첫째 날부터 열흘 간에는 냄비가 할인하지 않기 때문에 첫째 날에는 회원가입을 하지 않습니다. 둘째 날부터 열흘 간에는 바나나를 원하는 만큼 할인구매할 수 없기 때문에 둘째 날에도 회원가입을 하지 않습니다. 셋째 날, 넷째 날, 다섯째 날부터 각각 열흘은 원하는 제품과 수량이 일치하기 때문에 셋 중 하루에 회원가입을 하려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정현이가 원하는 제품을 나타내는 문자열 배열&amp;nbsp;want와 정현이가 원하는 제품의 수량을 나타내는 정수 배열&amp;nbsp;number, XYZ 마트에서 할인하는 제품을 나타내는 문자열 배열&amp;nbsp;discount가 주어졌을 때, 회원등록시 정현이가 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 일수를 return 하는 solution 함수를 완성하시오. 가능한 날이 없으면 0을 return 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&amp;nbsp;want의 길이 =&amp;nbsp;number의 길이 &amp;le; 10
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&amp;nbsp;number의 원소 &amp;le; 10&lt;/li&gt;
&lt;li&gt;number[i]는&amp;nbsp;want[i]의 수량을 의미하며,&amp;nbsp;number의 원소의 합은 10입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;10 &amp;le;&amp;nbsp;discount의 길이 &amp;le; 100,000&lt;/li&gt;
&lt;li&gt;want와&amp;nbsp;discount의 원소들은 알파벳 소문자로 이루어진 문자열입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;le;&amp;nbsp;want의 원소의 길이,&amp;nbsp;discount의 원소의 길이 &amp;le; 12&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;want number discount result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 58.8372%; height: 92px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[&quot;banana&quot;, &quot;apple&quot;, &quot;rice&quot;, &quot;pork&quot;, &quot;pot&quot;]&lt;/td&gt;
&lt;td&gt;[3, 2, 2, 2, 1]&lt;/td&gt;
&lt;td&gt;[&quot;chicken&quot;, &quot;apple&quot;, &quot;apple&quot;, &quot;banana&quot;, &quot;rice&quot;, &quot;apple&quot;, &quot;pork&quot;, &quot;banana&quot;, &quot;pork&quot;, &quot;rice&quot;, &quot;pot&quot;, &quot;banana&quot;, &quot;apple&quot;, &quot;banana&quot;]&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[&quot;apple&quot;]&lt;/td&gt;
&lt;td&gt;[10]&lt;/td&gt;
&lt;td&gt;[&quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;, &quot;banana&quot;]&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&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&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;사과가 할인하는 날이 없으므로 0을 return 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 해시맵(map)안에 구매하려는 물품 정보를 물품명,갯수 로 key-value 짝을 지어 작성합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후, 10일간 할인을 받을 수 있으므로, discount 배열을 탐색하면서 10개까지만 탐색해서 checkMap에 저장 후 , map과 일치하면 결과값을 +1 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1696402180451&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
                int answer = 0;
        String[] want2=want;
        Map&amp;lt;String,Integer&amp;gt; map=new HashMap&amp;lt;&amp;gt;();
        //해시맵으로 갯수와 정보 저장
        for(int i=0;i&amp;lt;want.length;i++){
            map.put(want[i],number[i]);
        }
        //discount 배열을 탐색하면서 시작일부터의 정보 저장, map과 일치하면 answer++;
        int days=0;
        for(int j=0;j&amp;lt;discount.length-10+1;j++) {
            Map&amp;lt;String,Integer&amp;gt; checkMap=new HashMap&amp;lt;&amp;gt;();
            for (int i = j; i &amp;lt; 10 + j; i++) {
                if (checkMap.containsKey(discount[i])) {
                    int input = checkMap.get(discount[i]) + 1;
                    checkMap.put(discount[i], input);
                } else {
                    checkMap.put(discount[i], 1);
                }
            }
            Boolean chkSame = true;
            for (String key : map.keySet()) {
                if (map.get(key) != checkMap.get(key)) {
                    chkSame = false;
                    break;
                }
            }
            answer += chkSame ? 1 : 0;
        }
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYbdxk/btswbfs5m6e/sqcXk6iuX51huMnRwTQFRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYbdxk/btswbfs5m6e/sqcXk6iuX51huMnRwTQFRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYbdxk/btswbfs5m6e/sqcXk6iuX51huMnRwTQFRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYbdxk%2Fbtswbfs5m6e%2FsqcXk6iuX51huMnRwTQFRK%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;187&quot; height=&quot;77&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/104</guid>
      <comments>https://cheerup313.tistory.com/104#entry104comment</comments>
      <pubDate>Wed, 4 Oct 2023 15:50:52 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 괄호 회전하기</title>
      <link>https://cheerup313.tistory.com/103</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo3a6Y/btsv8Qe3ra6/KvfBiki7pUFqKjdU4TSZu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo3a6Y/btsv8Qe3ra6/KvfBiki7pUFqKjdU4TSZu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo3a6Y/btsv8Qe3ra6/KvfBiki7pUFqKjdU4TSZu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo3a6Y%2Fbtsv8Qe3ra6%2FKvfBiki7pUFqKjdU4TSZu1%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/76502&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/76502&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696073515363&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/76502&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cI6DSt/hyT2zOlLed/fo8K3TCKYpr8F1fJ5INDk1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cBOLOr/hyT2wqzvdv/6JWSbQj9SGJwDm23PsgNP0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/76502&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/76502&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cI6DSt/hyT2zOlLed/fo8K3TCKYpr8F1fJ5INDk1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cBOLOr/hyT2wqzvdv/6JWSbQj9SGJwDm23PsgNP0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제내용&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&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;(),&amp;nbsp;[],&amp;nbsp;{}&amp;nbsp;는 모두 올바른 괄호 문자열입니다.&lt;/li&gt;
&lt;li&gt;만약&amp;nbsp;A가 올바른 괄호 문자열이라면,&amp;nbsp;(A),&amp;nbsp;[A],&amp;nbsp;{A}&amp;nbsp;도 올바른 괄호 문자열입니다. 예를 들어,&amp;nbsp;[]&amp;nbsp;가 올바른 괄호 문자열이므로,&amp;nbsp;([])&amp;nbsp;도 올바른 괄호 문자열입니다.&lt;/li&gt;
&lt;li&gt;만약&amp;nbsp;A,&amp;nbsp;B가 올바른 괄호 문자열이라면,&amp;nbsp;AB&amp;nbsp;도 올바른 괄호 문자열입니다. 예를 들어,&amp;nbsp;{}&amp;nbsp;와&amp;nbsp;([])&amp;nbsp;가 올바른 괄호 문자열이므로,&amp;nbsp;{}([])&amp;nbsp;도 올바른 괄호 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열&amp;nbsp;s가 매개변수로 주어집니다. 이&amp;nbsp;s를 왼쪽으로 x (0 &amp;le; x &amp;lt; (s의 길이)) 칸만큼 회전시켰을 때&amp;nbsp;s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;s의 길이는 1 이상 1,000 이하입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 27.7907%; height: 44px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&quot;{}&quot;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;}]()[{&quot;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;[)(]&quot;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;}}}&quot;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&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;다음 표는&amp;nbsp;&quot;[](){}&quot;&amp;nbsp;를 회전시킨 모습을 나타낸 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x s를 왼쪽으로 x칸만큼 회전 올바른 괄호 문자열?&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 41.3953%; height: 27px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&quot;{}&quot;&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&quot;](){}[&quot;&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&quot;(){}[]&quot;&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&quot;){}[](&quot;&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&quot;{}&quot;&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&quot;}{&quot;&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;올바른 괄호 문자열이 되는 x가 3개이므로, 3을 return 해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #2&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;다음 표는&amp;nbsp;&quot;}]()[{&quot;&amp;nbsp;를 회전시킨 모습을 나타낸 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x s를 왼쪽으로 x칸만큼 회전 올바른 괄호 문자열?&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 40%; height: 46px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&quot;}]()[{&quot;&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&quot;]()[{}&quot;&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&quot;()[{}]&quot;&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&quot;)[{}](&quot;&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&quot;&lt;a&gt;{}&lt;/a&gt;&quot;&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&quot;{}]()[&quot;&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;올바른 괄호 문자열이 되는 x가 2개이므로, 2를 return 해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #3&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;s를 어떻게 회전하더라도 올바른 괄호 문자열을 만들 수 없으므로, 0을 return 해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #4&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;s를 어떻게 회전하더라도 올바른 괄호 문자열을 만들 수 없으므로, 0을 return 해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stack과 Queue를 사용하자는 생각이 들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stack : 선입후출 , Queue : 선입선출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;괄호는 계속 순서를 지키며 회전해야하고, 이때 올바른 괄호 구조인지 체크해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Queue에 넣어서 괄호 자체를 회전시키고, Stack을 이용해서 peek()로 마지막 값을 확인하여 원하는 값이 맞는지 체크를 하며 괄호를 돌립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1696076570249&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public int solution(String s) {
                //괄호가 잘 닫겨야함! stack을 사용해서 풀어보자
        int answer = 0;
        Queue&amp;lt;String&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();

        for(int i = 0; i &amp;lt; s.length(); i++){
            String str = s.substring(i,i+1);
            queue.add(str);
        }
        for(int i=0;i&amp;lt;s.length();i++) {
            String firstS = queue.poll();
            queue.add(firstS);
            Stack&amp;lt;String&amp;gt; stack = new Stack&amp;lt;&amp;gt;();
            for (int j = 0; j &amp;lt; s.length(); j++) {
                String otherS = queue.poll();//맨앞거 빼고 나머지애들을 빼냄
                queue.add(otherS);
                if (stack.isEmpty()) {
                    stack.push(otherS);
                } else if (otherS.equals(&quot;)&quot;) &amp;amp;&amp;amp; stack.peek().equals(&quot;(&quot;)) {
                    //남은 것이 stack에 짝과 맞을 경우
                    stack.pop();
                } else if (otherS.equals(&quot;]&quot;) &amp;amp;&amp;amp; stack.peek().equals(&quot;[&quot;)) {
                    //남은 것이 stack에 짝과 맞을 경우
                    stack.pop();
                } else if (otherS.equals(&quot;}&quot;) &amp;amp;&amp;amp; stack.peek().equals(&quot;{&quot;)) {
                    //남은 것이 stack에 짝과 맞을 경우
                    stack.pop();
                }else{
                    stack.push(otherS);
                }
            }
            if(stack.isEmpty()){
                answer++;
            }
        }

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rOAAy/btsv93FdGJz/PgIkHlXQ3DxRbvkk6lXGX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rOAAy/btsv93FdGJz/PgIkHlXQ3DxRbvkk6lXGX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rOAAy/btsv93FdGJz/PgIkHlXQ3DxRbvkk6lXGX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrOAAy%2Fbtsv93FdGJz%2FPgIkHlXQ3DxRbvkk6lXGX0%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;604&quot; height=&quot;514&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>queue</category>
      <category>Stack</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/103</guid>
      <comments>https://cheerup313.tistory.com/103#entry103comment</comments>
      <pubDate>Sat, 30 Sep 2023 21:27:18 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 연속 부분 수열 합의 개수</title>
      <link>https://cheerup313.tistory.com/102</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3gD4y/btsv8cCHXdQ/48SwVOtIHrN3UJqpdu1Li0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3gD4y/btsv8cCHXdQ/48SwVOtIHrN3UJqpdu1Li0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3gD4y/btsv8cCHXdQ/48SwVOtIHrN3UJqpdu1Li0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3gD4y%2Fbtsv8cCHXdQ%2F48SwVOtIHrN3UJqpdu1Li0%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/131701&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696066491235&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131701&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rGboH/hyT2sPbugZ/WfAL2wXoYSd25BHkeJ34LK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/edMleO/hyT5Sk7W3A/saCqUDkCiyxB5GnDpB6tqK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131701&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rGboH/hyT2sPbugZ/WfAL2wXoYSd25BHkeJ34LK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/edMleO/hyT5Sk7W3A/saCqUDkCiyxB5GnDpB6tqK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 내용&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;철호는 수열을 가지고 놀기 좋아합니다. 어느 날 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다. 예를 들어 수열 [7, 9, 1, 1, 4] 로 원형 수열을 만들면 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;!&lt;a href=&quot;https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/f207cd37-34dc-4cbd-96bb-83435bd6efd4/그림.png&quot;&gt;https://grepp-programmers.s3.ap-northeast-2.amazonaws.com/files/production/f207cd37-34dc-4cbd-96bb-83435bd6efd4/그림.png&lt;/a&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;elements가 순서대로 주어질 때, 원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3 &amp;le;&amp;nbsp;elements의 길이 &amp;le; 1,000&lt;/li&gt;
&lt;li&gt;1 &amp;le;&amp;nbsp;elements의 원소 &amp;le; 1,000&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 23.8372%; height: 27px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;elements&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;[7,9,1,1,4]&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이가 1인 연속 부분 수열로부터 [1, 4, 7, 9] 네 가지의 합이 나올 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이가 2인 연속 부분 수열로부터 [2, 5, 10, 11, 16] 다섯 가지의 합이 나올 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이가 3인 연속 부분 수열로부터 [6, 11, 12, 17, 20] 다섯 가지의 합이 나올 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이가 4인 연속 부분 수열로부터 [13, 15, 18, 21] 네 가지의 합이 나올 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이가 5인 연속 부분 수열로부터 [22] 한 가지의 합이 나올 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이들 중 중복되는 값을 제외하면 다음과 같은 18가지의 수들을 얻습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이1&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원순열 풀이법을 검색해보니, 두배로 길이를 늘려서 풀으라는 키포인트가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;elements의 길이를 2배로 늘리고, Set에 더한 값을 넣기로 했습니다. (Set은 중복 값을 저장하지 않음)&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;h2 data-ke-size=&quot;size26&quot;&gt;작성코드1&lt;/h2&gt;
&lt;pre id=&quot;code_1696071361382&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int[] elements) {
                int[] newElements = new int[elements.length * 2];


        // {4,7,9,1,1} -&amp;gt; {4,7,9,1,1,4,7,9,1} 원순열은 두배로 길이를 늘려서 계산
        for(int i = 0; i &amp;lt; elements.length; i++) {
            newElements[i] = newElements[i + elements.length] = elements[i];
        }

        Set&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;();

        for (int i = 0; i &amp;lt; elements.length; i++) {
            int sum = 0;
            // 원소의 길이만큼 더하되, 자기 자신부터 up
            for (int k = i; k &amp;lt; i + elements.length; k++) {
                sum += newElements[k];
                set.add(sum);
            }
        }
        return set.size();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byy2zD/btsv8OBxFZT/kcV7LDMU9BklvjfKQXtQN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byy2zD/btsv8OBxFZT/kcV7LDMU9BklvjfKQXtQN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byy2zD/btsv8OBxFZT/kcV7LDMU9BklvjfKQXtQN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbyy2zD%2Fbtsv8OBxFZT%2FkcV7LDMU9BklvjfKQXtQN0%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;446&quot; height=&quot;291&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>알고리즘</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/102</guid>
      <comments>https://cheerup313.tistory.com/102#entry102comment</comments>
      <pubDate>Sat, 30 Sep 2023 19:56:21 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 예상대진표</title>
      <link>https://cheerup313.tistory.com/101</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRta3V/btswarTvyX7/sh4SAtmWYpD44gNh0fdId1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRta3V/btswarTvyX7/sh4SAtmWYpD44gNh0fdId1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRta3V/btswarTvyX7/sh4SAtmWYpD44gNh0fdId1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRta3V%2FbtswarTvyX7%2Fsh4SAtmWYpD44gNh0fdId1%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12985&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12985&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695371313426&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12985&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bBMmw9/hyTZdYyRwi/Qkj7NHOgrO6JhDnzacojnk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/hhLhH/hyTZbGr6Dh/GZj5ySNnfTiBOzXsBFmqM0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12985&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12985&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bBMmw9/hyTZdYyRwi/Qkj7NHOgrO6JhDnzacojnk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/hhLhH/hyTZbGr6Dh/GZj5ySNnfTiBOzXsBFmqM0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번&amp;harr;2번, 3번&amp;harr;4번, ... , N-1번&amp;harr;N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번&amp;harr;2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번&amp;harr;4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지 궁금해졌습니다. 게임 참가자 수 N, 참가자 번호 A, 경쟁자 번호 B가 함수 solution의 매개변수로 주어질 때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지 return 하는 solution 함수를 완성해 주세요.&amp;nbsp;&lt;b&gt;단, A번 참가자와 B번 참가자는 서로 붙게 되기 전까지 항상 이긴다고 가정합니다.&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;N : 2&amp;nbsp;이상 2&amp;nbsp;이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.)20&lt;/li&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;li&gt;A, B : N 이하인 자연수 (단, A &amp;ne; B 입니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 35%; height: 59px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;N&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;A&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;B&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 라운드에서 4번 참가자는 3번 참가자와 붙게 되고, 7번 참가자는 8번 참가자와 붙게 됩니다. 항상 이긴다고 가정했으므로 4번 참가자는 다음 라운드에서 2번이 되고, 7번 참가자는 4번이 됩니다. 두 번째 라운드에서 2번은 1번과 붙게 되고, 4번은 3번과 붙게 됩니다. 항상 이긴다고 가정했으므로 2번은 다음 라운드에서 1번이 되고, 4번은 2번이 됩니다. 세 번째 라운드에서 1번과 2번으로 두 참가자가 붙게 되므로 3을 return 하면 됩니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;풀이1(성공)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토너먼트 방식은 2로 나누어서 누구와 대결하는지 계산할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1,2 -&amp;gt; 1번&amp;nbsp; 3,4 -&amp;gt;2번&amp;nbsp; 5,6 -&amp;gt; 3번&amp;nbsp; 7,8 -&amp;gt; 4번&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 값이 나오려면 개인의 번호/2 인 몫과, 2로 나눈 나머지 값을 더하면 몇번째 대진자가 되는지 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만날때까지 무조건 이기기 때문에, 이기고 나서는 다시 2로나눈몫 + 나머지 를 더한 값이 번호가 되어 또 계산한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드1(성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1695565458637&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution
{
    public int solution(int n, int a, int b)
    {
        int answer = 0;
        while(true){
            a=a/2+a%2;
            b=b/2+b%2;
            answer++;
            if(a==b) break;
        }
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnkYxW/btsvksUbaA2/WYuvFDlymD5EoHpzhwQHlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnkYxW/btsvksUbaA2/WYuvFDlymD5EoHpzhwQHlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnkYxW/btsvksUbaA2/WYuvFDlymD5EoHpzhwQHlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnkYxW%2FbtsvksUbaA2%2FWYuvFDlymD5EoHpzhwQHlK%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;304&quot; height=&quot;221&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>토너먼트</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/101</guid>
      <comments>https://cheerup313.tistory.com/101#entry101comment</comments>
      <pubDate>Sun, 24 Sep 2023 23:27:31 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 구명보트 (그리디 Greedy 알고리즘)</title>
      <link>https://cheerup313.tistory.com/100</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dG5E7L/btswatjtJdX/dmAxvf5IrcpfFtC2JmA9l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dG5E7L/btswatjtJdX/dmAxvf5IrcpfFtC2JmA9l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dG5E7L/btswatjtJdX/dmAxvf5IrcpfFtC2JmA9l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdG5E7L%2FbtswatjtJdX%2FdmAxvf5IrcpfFtC2JmA9l1%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42885&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42885&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695360086024&quot; style=&quot;color: #333333; text-align: start;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42885&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bUsZTu/hyTYZd9CEC/KVetBHeiSkYmSVmGWzhIXk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dVe1Du/hyTVSntHA2/CWxKP5Vi69F22RxwrKcxJK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42885&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42885&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bUsZTu/hyTYZd9CEC/KVetBHeiSkYmSVmGWzhIXk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dVe1Du/hyTVSntHA2/CWxKP5Vi69F22RxwrKcxJK/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; style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;문제조건&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;풀이(성공)&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;307&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xt9Rd/btsuRHQEnnh/XFX8ha2xBLtFQK2YaGWmE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xt9Rd/btsuRHQEnnh/XFX8ha2xBLtFQK2YaGWmE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xt9Rd/btsuRHQEnnh/XFX8ha2xBLtFQK2YaGWmE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXt9Rd%2FbtsuRHQEnnh%2FXFX8ha2xBLtFQK2YaGWmE1%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;307&quot; height=&quot;36&quot; data-origin-width=&quot;307&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;일단 이 문제는 Greedy (탐욕 알고리즘)을 이용해서 풀어야 하는 것 같았다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;나는 탐욕법에 대하여 전혀 모르고 있기 때문에.. 이를 이해하기 위해 검색을 실시했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;탐욕 알고리즘(Greedy)&lt;/b&gt;&lt;/span&gt;이란, 무언가를 선택해야할때(탐색해야할때) 눈 앞의 최적의 상황만 찾아서 답을 찾는 방법이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;문제 해결 방법은 다음과 같다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 선택 - 현재 상태에서 최적의 해답을 선택&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 적합성 검사 - 선택된 해가 문제의 조건을 만족하는지 검사&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 정답 검사 - 1,2 를 거친 해답으로 문제가 해결되었는지 확인 후 해결되지 않았다면 1,2의 절차로 돌아가서 위의 과정을 반복&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;나는, 최소+최대값을 limit에 들어가는지 확인하고 들어가면 2개의 숫자를 array에서 없애고 count를 +1, 안들어갈경우 최대값만 없애고 count를 +1하는 방식으로 작성했다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;작성코드(성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1695360086037&quot; class=&quot;arduino&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;

class Solution {
    public int solution(int[] people, int limit) {
                int answer = 0;
        //정렬 후 최솟값 + 최댓값이 limit 안에 들으면 같이가고 , 아니면 최댓값을 그 다음으로 큰 값으로 변경
        Arrays.sort(people);
        int maxIndex=people.length-1;
        int max=people[maxIndex];
        int minIndex=0;
        int min=people[minIndex];
        while(true){
            max=people[maxIndex];
            min=people[minIndex];
           // System.out.println(&quot;maxIndex = &quot;+maxIndex+&quot;, minIndex = &quot;+minIndex+&quot;, answer = &quot;+answer);
            if(minIndex==maxIndex){
                answer++;
                break;
            } else if (minIndex&amp;gt;maxIndex) {
                break;
            }
            //System.out.println(&quot;min+max = &quot;+(min+max));
            if(min+max&amp;lt;=limit){
                answer++;
                minIndex++;
                maxIndex--;

            }else{
                answer++;
                maxIndex--;
            }
        }
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>greedy</category>
      <category>java</category>
      <category>그리디</category>
      <category>알고리즘</category>
      <category>탐욕법</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/100</guid>
      <comments>https://cheerup313.tistory.com/100#entry100comment</comments>
      <pubDate>Fri, 22 Sep 2023 14:21:47 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 영어끝말잇기</title>
      <link>https://cheerup313.tistory.com/99</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3LDT2/btsuG46qXEy/mvxbsYnlJpGy0dPf5rMtKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3LDT2/btsuG46qXEy/mvxbsYnlJpGy0dPf5rMtKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3LDT2/btsuG46qXEy/mvxbsYnlJpGy0dPf5rMtKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3LDT2%2FbtsuG46qXEy%2FmvxbsYnlJpGy0dPf5rMtKk%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;171&quot; height=&quot;109&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제링크&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12981&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12981&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695093991018&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12981&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/i6LOO/hyTVVEhkqA/obK3Cm6UuiY1EZAZ5c4N6k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/kcULC/hyTZb6xhI0/Ydchy8mcMjr16vk0LysJo1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12981&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12981&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/i6LOO/hyTVVEhkqA/obK3Cm6UuiY1EZAZ5c4N6k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/kcULC/hyTZb6xhI0/Ydchy8mcMjr16vk0LysJo1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제조건&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.&lt;/li&gt;
&lt;li&gt;마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.&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;다음은 3명이 끝말잇기를 하는 상황을 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tank &amp;rarr; kick &amp;rarr; know &amp;rarr; wheel &amp;rarr; land &amp;rarr; dream &amp;rarr; mother &amp;rarr; robot &amp;rarr; tank&lt;/p&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;1번 사람이 자신의 첫 번째 차례에 tank를 말합니다.&lt;/li&gt;
&lt;li&gt;2번 사람이 자신의 첫 번째 차례에 kick을 말합니다.&lt;/li&gt;
&lt;li&gt;3번 사람이 자신의 첫 번째 차례에 know를 말합니다.&lt;/li&gt;
&lt;li&gt;1번 사람이 자신의 두 번째 차례에 wheel을 말합니다.&lt;/li&gt;
&lt;li&gt;(계속 진행)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝말잇기를 계속 진행해 나가다 보면, 3번 사람이 자신의 세 번째 차례에 말한 tank 라는 단어는 이전에 등장했던 단어이므로 탈락하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한 사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;끝말잇기에 참여하는 사람의 수 n은 2 이상 10 이하의 자연수입니다.&lt;/li&gt;
&lt;li&gt;words는 끝말잇기에 사용한 단어들이 순서대로 들어있는 배열이며, 길이는 n 이상 100 이하입니다.&lt;/li&gt;
&lt;li&gt;단어의 길이는 2 이상 50 이하입니다.&lt;/li&gt;
&lt;li&gt;모든 단어는 알파벳 소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;끝말잇기에 사용되는 단어의 뜻(의미)은 신경 쓰지 않으셔도 됩니다.&lt;/li&gt;
&lt;li&gt;정답은 [ 번호, 차례 ] 형태로 return 해주세요.&lt;/li&gt;
&lt;li&gt;만약 주어진 단어들로 탈락자가 생기지 않는다면, [0, 0]을 return 해주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n words result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 112px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px; width: 4.41861%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 85.465%;&quot;&gt;[&quot;tank&quot;, &quot;kick&quot;, &quot;know&quot;, &quot;wheel&quot;, &quot;land&quot;, &quot;dream&quot;, &quot;mother&quot;, &quot;robot&quot;, &quot;tank&quot;]&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 9.88373%;&quot;&gt;[3,3]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px; width: 4.41861%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 85.465%;&quot;&gt;[&quot;hello&quot;, &quot;observe&quot;, &quot;effect&quot;, &quot;take&quot;, &quot;either&quot;, &quot;recognize&quot;, &quot;encourage&quot;, &quot;ensure&quot;, &quot;establish&quot;, &quot;hang&quot;, &quot;gather&quot;, &quot;refer&quot;, &quot;reference&quot;, &quot;estimate&quot;, &quot;executive&quot;]&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 9.88373%;&quot;&gt;[0,0]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot;&gt;
&lt;td style=&quot;height: 34px; width: 4.41861%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 85.465%;&quot;&gt;[&quot;hello&quot;, &quot;one&quot;, &quot;even&quot;, &quot;never&quot;, &quot;now&quot;, &quot;world&quot;, &quot;draw&quot;]&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 9.88373%;&quot;&gt;[1,3]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3명의 사람이 끝말잇기에 참여하고 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1번 사람 : tank, wheel, mother&lt;/li&gt;
&lt;li&gt;2번 사람 : kick, land, robot&lt;/li&gt;
&lt;li&gt;3번 사람 : know, dream,&amp;nbsp;tank&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같은 순서로 말을 하게 되며, 3번 사람이 자신의 세 번째 차례에 말한&amp;nbsp;tank라는 단어가 1번 사람이 자신의 첫 번째 차례에 말한&amp;nbsp;tank와 같으므로 3번 사람이 자신의 세 번째 차례로 말을 할 때 처음 탈락자가 나오게 됩니다.&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;5명의 사람이 끝말잇기에 참여하고 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1번 사람 : hello, recognize, gather&lt;/li&gt;
&lt;li&gt;2번 사람 : observe, encourage, refer&lt;/li&gt;
&lt;li&gt;3번 사람 : effect, ensure, reference&lt;/li&gt;
&lt;li&gt;4번 사람 : take, establish, estimate&lt;/li&gt;
&lt;li&gt;5번 사람 : either, hang, executive&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같은 순서로 말을 하게 되며, 이 경우는 주어진 단어로만으로는 탈락자가 발생하지 않습니다. 따라서 [0, 0]을 return하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2명의 사람이 끝말잇기에 참여하고 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1번 사람 : hello, even,&amp;nbsp;now, draw&lt;/li&gt;
&lt;li&gt;2번 사람 : one, never, world&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같은 순서로 말을 하게 되며, 1번 사람이 자신의 세 번째 차례에 'r'로 시작하는 단어 대신, n으로 시작하는&amp;nbsp;now를 말했기 때문에 이때 처음 탈락자가 나오게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;풀이 (성공)&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HashSet에 word가 있는지여부 &amp;amp;&amp;amp; 직전 word의 마지막글자와 현재 word의 일치 여부를 확인후, 분기하여 작성한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;x번째 사람은 %값으로 구하였기 때문에 마지막에 %값이 0이면 n값으로 변경한다.&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;작성코드 (성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1695093353079&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution {
    public int[] solution(int n, String[] words) {
         int[] answer = {0,0};
        int findN=0,findCount=0;
        HashSet&amp;lt;String&amp;gt; wordlist=new HashSet&amp;lt;&amp;gt;();
        wordlist.add(words[0]);
        for(int i=1;i&amp;lt;words.length;i++){
            if(!wordlist.contains(words[i])&amp;amp;&amp;amp;words[i-1].substring(words[i-1].length()-1,words[i-1].length()).equals(words[i].substring(0,1))){
                wordlist.add(words[i]);
            }else{
                findN=(i+1)%n;
                findCount=(int)Math.round((i)/n+1);
                answer[0]=findN;
                answer[1]=findCount;
                break;
            }
        }
        if(findN==0&amp;amp;&amp;amp;findCount!=0){
            answer[0]=n;
        }
        System.out.println(answer[0]+&quot;, &quot;+answer[1]);
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번에 통과한건 오랜만이다!&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/99</guid>
      <comments>https://cheerup313.tistory.com/99#entry99comment</comments>
      <pubDate>Tue, 19 Sep 2023 13:56:07 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 카펫</title>
      <link>https://cheerup313.tistory.com/98</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvLUEp/btsuqz7kkAN/7oKYt2toKNoqAJ8fnFX8G0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvLUEp/btsuqz7kkAN/7oKYt2toKNoqAJ8fnFX8G0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvLUEp/btsuqz7kkAN/7oKYt2toKNoqAJ8fnFX8G0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvLUEp%2Fbtsuqz7kkAN%2F7oKYt2toKNoqAJ8fnFX8G0%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제링크&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42842&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/42842&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695087145916&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42842&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qm1vd/hyTVUSUQgD/MghEEg2YMup1O55kvXMI41/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/YNPN0/hyTVPKPj4I/RH11GuRqUXlmxMLxOFP6U0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42842&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42842&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qm1vd/hyTVUSUQgD/MghEEg2YMup1O55kvXMI41/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/YNPN0/hyTVPKPj4I/RH11GuRqUXlmxMLxOFP6U0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;문제조건&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;843&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P00CA/btsuIAXZtz0/tuk6tWYhoykkBpNUuQWMF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P00CA/btsuIAXZtz0/tuk6tWYhoykkBpNUuQWMF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P00CA/btsuIAXZtz0/tuk6tWYhoykkBpNUuQWMF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP00CA%2FbtsuIAXZtz0%2Ftuk6tWYhoykkBpNUuQWMF0%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;298&quot; height=&quot;225&quot; data-origin-width=&quot;843&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;brown yellow return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;[4, 3]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;[3, 3]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;[8, 6]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://hsin.hr/coci/archive/2010_2011/contest4_tasks.pdf&quot;&gt;출처&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 공지 - 2020년 2월 3일 테스트케이스가 추가되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 공지 - 2020년 5월 11일 웹접근성을 고려하여 빨간색을 노란색으로 수정하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이 1(실패)&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;292&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRt3iP/btsufXOATdh/uJxyjQnKmsAgJhpefW6zP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRt3iP/btsufXOATdh/uJxyjQnKmsAgJhpefW6zP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRt3iP/btsufXOATdh/uJxyjQnKmsAgJhpefW6zP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRt3iP%2FbtsufXOATdh%2FuJxyjQnKmsAgJhpefW6zP1%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;292&quot; height=&quot;36&quot; data-origin-width=&quot;292&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i와 j가 주어질때 brown과 yellow를 구하는 방법은 생각이 났으나, 그 반대는 생각나지 않아 이중for문으로 찾았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완전탐색이므로, 반복문을 이용해야겠다는 생각이 바로 들었다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드 1(실패)&lt;/h2&gt;
&lt;pre id=&quot;code_1695089853385&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        //4, 3 일때 brown&amp;amp;yellow 계산법 -&amp;gt; 4*2+(3-2)*2 = brown , (4-2)*(3-2)=yellow
        int max = Math.max(brown, yellow);
        for(int i=0;i&amp;lt;max;i++){
            for(int j=0;j&amp;lt;max;j++){
                if(i*j==(brown+yellow)&amp;amp;&amp;amp;((i*2+(j-2)*2)==brown)&amp;amp;&amp;amp;((i-2)*(j-2)==yellow)){
                    answer[0]=i;
                    answer[1]=j;
                    break;
                }
            }
        }
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XgQIT/btsuIE7b5df/z3TorEQ5wIGjf3nme9rgWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XgQIT/btsuIE7b5df/z3TorEQ5wIGjf3nme9rgWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XgQIT/btsuIE7b5df/z3TorEQ5wIGjf3nme9rgWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXgQIT%2FbtsuIE7b5df%2Fz3TorEQ5wIGjf3nme9rgWk%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;623&quot; height=&quot;487&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시 2중for문은 바로 시간초과 가 떠버렸다.&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;풀이 2(성공)&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;for문을 전부 다 돌리는 것은 비효율적이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;일단 가로길이는 brown/2 의 값보다 무조건 작기 때문에, (column이 3이상이어야 yellow가 존재해서 brown길이/2 보다 가로는 짧을 수 밖에 없다. brown/2가 가로길이가 되면 yellow는 존재할 수 없음.)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;세로 길이는 가로길이에 영향을 받지만, 일단 넓이의제곱근/2 보다는 크고, 넓이의 제곱근 값보다 작거나 같다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이를 이용해서 코드를 작성하였다.&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;작성코드 2(성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1695093353079&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        //넓이가 brown+yellow인 점을 활용
        int area = brown+yellow;
        int root = (int) Math.ceil(Math.sqrt(area));
        //가로길이는 brown/2보다 무조건 작고 세로길이의 합은 root*2 보다작음
        for(int row=1;row&amp;lt;brown/2;row++){
            for(int column=(root-1)*2-row;column&amp;lt;=root*2;column++){
                if(row*column==area&amp;amp;&amp;amp;(row-2)*(column-2)==yellow&amp;amp;&amp;amp;(row*2+(column-2)*2)==brown){
                   // System.out.println(&quot;brown : &quot;+brown+&quot;, yellow : &quot;+yellow);
                    answer[0]=row;
                    answer[1]=column;
                    break;
                }
            }
        }
        //System.out.println(answer[0]+&quot;, &quot;+answer[1]);
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+ 검색을 해 보니 약수를 이용해서 통과한 경우가 꽤 있다.&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>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>완전탐색</category>
      <category>프로그래머스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/98</guid>
      <comments>https://cheerup313.tistory.com/98#entry98comment</comments>
      <pubDate>Tue, 19 Sep 2023 12:20:36 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 짝지어 제거하기</title>
      <link>https://cheerup313.tistory.com/97</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xz7BA/btsuglBRwvR/xe9EZGQsGnIgvboDdmgOcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xz7BA/btsuglBRwvR/xe9EZGQsGnIgvboDdmgOcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xz7BA/btsuglBRwvR/xe9EZGQsGnIgvboDdmgOcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXz7BA%2FbtsuglBRwvR%2Fxe9EZGQsGnIgvboDdmgOcK%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12973&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12973&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695082848894&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12973&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vMVOP/hyTY0YcMYt/bzE3iX2wCoq8OzeDv6efkK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/buFKiW/hyTY8opltE/wUz1ES9aOKvgp8e0lI3LcK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12973&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12973&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vMVOP/hyTY0YcMYt/bzE3iX2wCoq8OzeDv6efkK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/buFKiW/hyTY8opltE/wUz1ES9aOKvgp8e0lI3LcK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 문자열 S =&amp;nbsp;baabaa&amp;nbsp;라면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;b&amp;nbsp;aa&amp;nbsp;baa &amp;rarr;&amp;nbsp;bb&amp;nbsp;aa &amp;rarr;&amp;nbsp;aa&amp;nbsp;&amp;rarr;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열의 길이 : 1,000,000이하의 자연수&lt;/li&gt;
&lt;li&gt;문자열은 모두 소문자로 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;baabaa&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cdcd&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예 #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;입출력 예 #2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열이 남아있지만 짝지어 제거할 수 있는 문자열이 더 이상 존재하지 않기 때문에 0을 반환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 공지 - 2020년 6월 8일 테스트케이스가 추가되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 공지 - 2023년 8월 31일 테스트케이스가 추가되었습니다. 기존에 제출한 코드가 통과하지 못할 수도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이 1 (실패)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문 내에서 string을 짤라서 인덱스 하나하나 비교하고, 값이 변하게 되면 다시 한번 더 확인하는 방식으로 진행해 보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드 1 (실패)&lt;/h2&gt;
&lt;pre id=&quot;code_1694848594915&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static int solution(String input) {
        int ans=0;
        String changeInput=input;
        int i=1;
        while(true){
            int size=changeInput.length();
            if(changeInput.charAt(i-1)==changeInput.charAt(i)){
                changeInput=changeInput.substring(0,i-1)+changeInput.substring(i+1,size);
                size=changeInput.length();
                i=1;
            }else{
                i++;
            }
            if(size==0||i==size){
                break;
            }
        }

        if(changeInput.length()==0){
            ans=1;
        }
        return ans;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;637&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTGz3e/btsuejqJ22k/V8qn8M7tK8SrRRv9MuZvOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTGz3e/btsuejqJ22k/V8qn8M7tK8SrRRv9MuZvOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTGz3e/btsuejqJ22k/V8qn8M7tK8SrRRv9MuZvOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTGz3e%2FbtsuejqJ22k%2FV8qn8M7tK8SrRRv9MuZvOK%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;565&quot; height=&quot;637&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;637&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 9번을 실패하고, 효율성 부분에서는 아예 실패를 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단.. while문이 아닌 Stack을 이용해서 풀어야 겠다는 생각이 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stack은 LIFO (Last In First Out)의 특징을 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;풀이 2 (성공)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stack 자료형을 하나 만들고, input을 하나하나 탐색하면서, 스택이 비어있지 않고 스택의 가장 윗 값이 현재 탐색중인 input의 문자(=c)와 같으면 스택의 맨윗값을 빼고 ( pop() ), 아닐 경우에는 탐색중인 input의 문자(=c)를 오히려 스택에 넣어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;작성코드 2 (성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1694850347795&quot; class=&quot;java&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
class Solution
{
    public int solution(String input)
    {
        int ans=0;
        Stack&amp;lt;Character&amp;gt; stInput = new Stack&amp;lt;Character&amp;gt;();
        for(char c:input.toCharArray()){
            if(!stInput.isEmpty()&amp;amp;&amp;amp; stInput.peek()==c){
                stInput.pop();
            }else{
                stInput.push(c);
            }
        }

        if(stInput.isEmpty()){
            ans=1;
        }
        return ans;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lWlZT/btsuGmFP7w0/iung8DpvDELL2nDmyEjySk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lWlZT/btsuGmFP7w0/iung8DpvDELL2nDmyEjySk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lWlZT/btsuGmFP7w0/iung8DpvDELL2nDmyEjySk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlWlZT%2FbtsuGmFP7w0%2Fiung8DpvDELL2nDmyEjySk%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;567&quot; height=&quot;667&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;667&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;p data-ke-size=&quot;size16&quot;&gt;쓸데없이 while문을 통해서 모든 경우의 수를 다 따져가면서 계산하면 효율성은 항상 통과하지 못하는 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stack, Queue, HashMap을 항상 염두해 두고 짜야 겠다는 생각이 들었다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>Stack</category>
      <category>알고리즘</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/97</guid>
      <comments>https://cheerup313.tistory.com/97#entry97comment</comments>
      <pubDate>Tue, 19 Sep 2023 10:03:46 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 피보나치수</title>
      <link>https://cheerup313.tistory.com/96</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnuMwe/btsugjD1xtN/keQMvdmrJ5TbieReiKlwbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnuMwe/btsugjD1xtN/keQMvdmrJ5TbieReiKlwbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnuMwe/btsugjD1xtN/keQMvdmrJ5TbieReiKlwbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnuMwe%2FbtsugjD1xtN%2FkeQMvdmrJ5TbieReiKlwbk%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12945&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12945&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1694848903301&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12945&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/btRMIn/hyTVT6SJzP/sApNzPyPIHkP4XpHk7v6Ck/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/GnL26/hyTVTlutjQ/lIkE80J1sLr7xIQiKPK1FK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12945&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12945&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/btRMIn/hyTVT6SJzP/sApNzPyPIHkP4XpHk7v6Ck/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/GnL26/hyTVTlutjQ/lIkE80J1sLr7xIQiKPK1FK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.&lt;/p&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;F(2) = F(0) + F(1) = 0 + 1 = 1&lt;/li&gt;
&lt;li&gt;F(3) = F(1) + F(2) = 1 + 1 = 2&lt;/li&gt;
&lt;li&gt;F(4) = F(2) + F(3) = 1 + 2 = 3&lt;/li&gt;
&lt;li&gt;F(5) = F(3) + F(4) = 2 + 3 = 5&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와 같이 이어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2 이상의 n이 입력되었을 때, &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수&lt;/b&gt;&lt;/span&gt;, solution을 완성해 주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한 사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n은 2 이상 100,000 이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n return&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이 1 (실패)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피보나치수? 그냥 0일때 0, 1일때 1, 2이상일때 n-1, n-2를 더하면 되는거아닌가? 라고 간단하게 생각하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제조건에 n번째 피보나치수를 1234567로 나눈 나머지를 리턴하라고 되어 있어 2 이상일 때만 1234567로 나누었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드 1 (실패)&lt;/h2&gt;
&lt;pre id=&quot;code_1694848594915&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n) {
        int ans=0;
        if(n==0){
            ans=0;
        } else if (n==1) {
            ans=1;
        } else {
            ans = (solution(n-2)+solution(n-1))%1234567;
        }
        return ans;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vszXa/btsuglmPGmp/9aRkUyOuHBi7Sn5capeDT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vszXa/btsuglmPGmp/9aRkUyOuHBi7Sn5capeDT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vszXa/btsuglmPGmp/9aRkUyOuHBi7Sn5capeDT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvszXa%2FbtsuglmPGmp%2F9aRkUyOuHBi7Sn5capeDT0%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;684&quot; height=&quot;417&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;417&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;풀이 2 (성공)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산을 할 때마다, solution이 계속 도는 재귀함수의 형태가 시간초과의 문제인 것 같아,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;solution이 반환하는 값을 int 배열에 넣기로 결정하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;작성코드 2 (성공)&lt;/h2&gt;
&lt;pre id=&quot;code_1694850347795&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n) {
        int ans=0;
        int[] arr=new int[n+1];
        
        for(int i=0;i&amp;lt;=n;i++){
            if(i==0){
                arr[i]=0;
            }else if(i==1){
                arr[i]=1;
            }else{
                arr[i]=(arr[i-1]+arr[i-2])%1234567;
            }
        }
        return arr[n];
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biG7pm/btsudkoQ94i/y6auszmVJKBZQgL1HU98L1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biG7pm/btsudkoQ94i/y6auszmVJKBZQgL1HU98L1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biG7pm/btsudkoQ94i/y6auszmVJKBZQgL1HU98L1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiG7pm%2FbtsudkoQ94i%2Fy6auszmVJKBZQgL1HU98L1%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;672&quot; height=&quot;509&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;509&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;solution을 계속 도는 재귀형식은 숫자가 클수록 제곱의 형태로 점점 계산수가 많아지므로, 배열에 값을 저장하여 진행하였더니 통과했다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>toBinaryString</category>
      <category>알고리즘</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/96</guid>
      <comments>https://cheerup313.tistory.com/96#entry96comment</comments>
      <pubDate>Sat, 16 Sep 2023 16:47:40 +0900</pubDate>
    </item>
    <item>
      <title>[Programmers/Java]프로그래머스 연습문제 - 다음 큰 숫자</title>
      <link>https://cheerup313.tistory.com/95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW1T0s/btsuIAYknkd/6yQkz3zC0bH6LVtVl7OiuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW1T0s/btsuIAYknkd/6yQkz3zC0bH6LVtVl7OiuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW1T0s/btsuIAYknkd/6yQkz3zC0bH6LVtVl7OiuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW1T0s%2FbtsuIAYknkd%2F6yQkz3zC0bH6LVtVl7OiuK%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;728&quot; height=&quot;463&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제링크&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12911&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/12911&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1694848360824&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12911&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iE81u/hyTV05Zrqh/0cYCKwAI5Vsl5QDpcWiu21/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/9xOQO/hyTV4HjpWk/NEhC41hmudpqJnsDoQNzz0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12911&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12911&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iE81u/hyTV05Zrqh/0cYCKwAI5Vsl5QDpcWiu21/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/9xOQO/hyTV4HjpWk/NEhC41hmudpqJnsDoQNzz0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 조건&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.&lt;/li&gt;
&lt;li&gt;조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.&lt;/li&gt;
&lt;li&gt;조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제한 사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n은 1,000,000 이하의 자연수 입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n result&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;83&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입출력 예 설명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입출력 예#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;입출력 예#2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15(1111)의 다음 큰 숫자는 23(10111)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 떠올린것은, toBinaryString 입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java에는 Integer값을 toBinaryString으로 1010101 형태로 변경할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 이 값에 대해서 1값의 갯수를 세고(=count1Input), (subString사용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인풋(=n) 을 하나씩 늘리면서(findN) 이 값도 1의 갯수를 세서(count1FindNum)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인풋의 1갯수와 같으면 그때의 findN을 반환하는 방식으로 작성하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작성코드&lt;/h2&gt;
&lt;pre id=&quot;code_1694848594915&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n) {
        int answer = 0;
        String binaryN=Integer.toBinaryString(n);
        int count1Input=0;
        for(int i=0;i&amp;lt;binaryN.length();i++){
            String index=binaryN.substring(i,i+1);
            if(index.equals(&quot;1&quot;)){
                count1Input++;
            }
        }
        String binaryFindN=&quot;&quot;;
        int findN=n;
        while(true){
            findN++;
            binaryFindN=Integer.toBinaryString(findN);
            int count1FindNum=0;
            for(int i=0;i&amp;lt;binaryFindN.length();i++){
                String index=binaryFindN.substring(i,i+1);
                if(index.equals(&quot;1&quot;)){
                    count1FindNum++;
                }
            }
            if(count1FindNum==count1Input){
                break;
            }
        }
        return findN;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vFgjd/btsuegGkcHJ/KkinQb0x1t3ImuSnJ1HdN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vFgjd/btsuegGkcHJ/KkinQb0x1t3ImuSnJ1HdN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vFgjd/btsuegGkcHJ/KkinQb0x1t3ImuSnJ1HdN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvFgjd%2FbtsuegGkcHJ%2FKkinQb0x1t3ImuSnJ1HdN1%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;677&quot; height=&quot;600&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건이 자연수 1000000이하여서 그런지, 효율성 테스트도 통과했습니다!&lt;/p&gt;</description>
      <category>Computer Science/JAVA알고리즘</category>
      <category>java</category>
      <category>toBinaryString</category>
      <category>알고리즘</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/95</guid>
      <comments>https://cheerup313.tistory.com/95#entry95comment</comments>
      <pubDate>Sat, 16 Sep 2023 16:20:05 +0900</pubDate>
    </item>
    <item>
      <title>Mysql(MariaDB) 함수 모음 (집계, 문자열, 수학, 날짜)</title>
      <link>https://cheerup313.tistory.com/94</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문자열함수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;limit&lt;/code&gt; : limit 0,10 붙이면 1 부터 10번째 까지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;concat&lt;/code&gt; : concat ( A, B) 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;upper&lt;/code&gt; , &lt;code&gt;ucase&lt;/code&gt; : 대문자로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;lower&lt;/code&gt; , &lt;code&gt;lcase&lt;/code&gt; : 소문자로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;substring('문자열' , 시작index , 시작으로부터몇개인지)&lt;/code&gt; :문자열 자르기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;lpad&lt;/code&gt; , &lt;code&gt;rpad&lt;/code&gt; : lpad(&amp;rsquo;내용&amp;rsquo;, 전체칸수, &amp;lsquo;나머지채울내용&amp;rsquo;) &lt;b&gt;왼쪽정렬&lt;/b&gt; / rpad는 &lt;b&gt;오른쪽 정렬&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;trim&lt;/code&gt; , &lt;code&gt;ltrim&lt;/code&gt; , &lt;code&gt;rtrim&lt;/code&gt; : MySQL 문자열에 공백 또는 문자 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;length&lt;/code&gt; : 문자 길이 (공백 포함)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;수학함수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;abs&lt;/code&gt; : 절댓값 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;floor&lt;/code&gt; : 소숫점 내림(버림)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;ceil&lt;/code&gt; : 소숫점 올림&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;mod(a,b)&lt;/code&gt; : a%b 의 값. 나머지 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;power(x,y)&lt;/code&gt; : x의 y승&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;pow(x,y)&lt;/code&gt; : x의 y제곱근&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;round(x)&lt;/code&gt; , &lt;code&gt;round(x,y)&lt;/code&gt; : x에 가장 가까운 정수 (반올림) / x값 중에서 소수점 y자리에 가장 근접한 실수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;greatest&lt;/code&gt; , &lt;code&gt;least&lt;/code&gt; : 주어진 값들 중에서 최댓값 , 최솟값 반환&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;날짜함수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;curdate()&lt;/code&gt; , &lt;code&gt;current_date&lt;/code&gt; : 현재시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;now()&lt;/code&gt; vs &lt;code&gt;sysdate()&lt;/code&gt; : 현재시간 시분초까지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;now()의 경우 쿼리가 실행되는 그 순간을 기점으로 삼는다. 반면 sysdate()의 경우 함수가 실행되는 순간을 기점으로 삼는다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;date_format&lt;/code&gt; :&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;%Y&lt;/th&gt;
&lt;th&gt;4자리 년도&lt;/th&gt;
&lt;th&gt;%m&lt;/th&gt;
&lt;th&gt;숫자 월 ( 두자리 )&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;%y&lt;/td&gt;
&lt;td&gt;2자리 년도&lt;/td&gt;
&lt;td&gt;%c&lt;/td&gt;
&lt;td&gt;숫자 월(한자리는 한자리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%M&lt;/td&gt;
&lt;td&gt;긴 월(영문)&lt;/td&gt;
&lt;td&gt;%d&lt;/td&gt;
&lt;td&gt;일자 (두자리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%b&lt;/td&gt;
&lt;td&gt;짧은 월(영문)&lt;/td&gt;
&lt;td&gt;%e&lt;/td&gt;
&lt;td&gt;일자(한자리는 한자리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%W&lt;/td&gt;
&lt;td&gt;긴 요일 이름(영문)&lt;/td&gt;
&lt;td&gt;%I&lt;/td&gt;
&lt;td&gt;시간 (12시간)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%a&lt;/td&gt;
&lt;td&gt;짧은 요일 이름(영문)&lt;/td&gt;
&lt;td&gt;%H&lt;/td&gt;
&lt;td&gt;시간(24시간)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%i&lt;/td&gt;
&lt;td&gt;분&lt;/td&gt;
&lt;td&gt;%r&lt;/td&gt;
&lt;td&gt;hh:mm:ss AM,PM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;%T&lt;/td&gt;
&lt;td&gt;hh:mm:SS&lt;/td&gt;
&lt;td&gt;%S&lt;/td&gt;
&lt;td&gt;초&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;period_diff(p1,p2)&lt;/code&gt; :p1 - p2 만큼 개월 수 를 구함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;date_add(adddate,더할날짜길이)&lt;/code&gt; : 더할날짜만큼 날짜 더하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;date_sub(=subdate)&lt;/code&gt; : 뺄날짜만큼 날짜 빼기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;cast('내용' as 타입)&lt;/code&gt; : type 변경&lt;/p&gt;
&lt;aside&gt;  &lt;b&gt;자료형&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자: varchar, char, text, CLOB&lt;br /&gt;정수: tiny, medium, signed(int, integer), usigned, big int&lt;br /&gt;실수: float, double&lt;br /&gt;시간: date, datetime&lt;br /&gt;LOB: CLOB(Character Large Object), BLOB(Binary Large OBject)&lt;/p&gt;
&lt;/aside&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;집계함수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;avg&lt;/code&gt; : 평균&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;max&lt;/code&gt; , &lt;code&gt;min&lt;/code&gt; : 최댓값, 최솟값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;count&lt;/code&gt; : 갯수 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;sum&lt;/code&gt; : 합 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;stddev&lt;/code&gt; : 표준편차 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;select절에 그룹함수(통계함수) 있는 경우, 어떤 컬럼도 select절에 올 수 없다 &amp;rarr; 와도 의미가 없음&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;쿼리 순서&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;from: 테이블에 접근&lt;/li&gt;
&lt;li&gt;where: 조건에 맞는 row를 선택&lt;/li&gt;
&lt;li&gt;projection: 집계(임시 테이블, 메모리 캐시)&lt;/li&gt;
&lt;li&gt;결과를 반환: 출력&lt;br /&gt;&lt;b&gt;group by 한 컬럼은 select절에 올 수 있다.&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;Having 절&lt;/code&gt; : 집계결과(결과 테이블) 에서 row를 선택해야 하는 경우 , 이미 where절은 실행 후 이기 때문에 having 절에서 조건을 줘야 한다.&lt;/p&gt;</description>
      <category>Backend/Mysql(MariaDB)</category>
      <category>MariaDB</category>
      <category>MySQL</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/94</guid>
      <comments>https://cheerup313.tistory.com/94#entry94comment</comments>
      <pubDate>Wed, 30 Aug 2023 16:09:33 +0900</pubDate>
    </item>
    <item>
      <title>JAVA Collection Framework (Vector, List, Stack, Queue, Set, Map)</title>
      <link>https://cheerup313.tistory.com/93</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Collection&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;897&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/butwb7/btsrglre5yr/MjaY2IKojkhY1TIbDDQkh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/butwb7/btsrglre5yr/MjaY2IKojkhY1TIbDDQkh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/butwb7/btsrglre5yr/MjaY2IKojkhY1TIbDDQkh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbutwb7%2Fbtsrglre5yr%2FMjaY2IKojkhY1TIbDDQkh0%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;594&quot; height=&quot;499&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;897&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Collection에는 List,Set,Map이 있고 세부로는 더 나뉜다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Collection은 Iterator를 상속받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ArrayList &amp;lt; List &amp;lt; Collection &amp;lt; Iterable&lt;/b&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;&lt;b&gt;Java Collection Hierarchy&lt;/b&gt;&lt;/h4&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;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwE9pW/btsroKDvIIU/bIaUN4SpyKK2DWRUtO7XR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwE9pW/btsroKDvIIU/bIaUN4SpyKK2DWRUtO7XR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwE9pW/btsroKDvIIU/bIaUN4SpyKK2DWRUtO7XR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwE9pW%2FbtsroKDvIIU%2FbIaUN4SpyKK2DWRUtO7XR0%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;595&quot; height=&quot;541&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이것도 2020년 자료이다. 더 많이 생겼다. (ConcurrentMap, TreeMap, EnumMap 등..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LinkedHashXXXX&lt;/b&gt; : 저장된 순서가 유지되는 자료구조(Set,Map..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;TreeXXX&lt;/b&gt; : key 값을 기준 (set은 내용비교) 으로 기본 정렬되는 자료구조(Set,Map..)&lt;/p&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;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;Generic 은 기본형을 사용할 수 없다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692186839172&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Map&amp;lt;String, Integer&amp;gt; m =new HashMap&amp;lt;&amp;gt;();
m.put(&quot;one&quot;, 1); //auto boxing. int형으로 넣었지만, Integer로 알아서 들어감&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본형을 사용할 경우, Wrapper타입으로 변환한다 (&lt;b&gt;Auto Boxing&lt;/b&gt;)&lt;/p&gt;
&lt;pre id=&quot;code_1692186852348&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Map&amp;lt;String, Integer&amp;gt; m =new HashMap&amp;lt;&amp;gt;();
m.put(&quot;one&quot;, 1);//auto boxing
int i = m.get(&quot;one&quot;); //객체로 넣엇는데 기본형으로나옴. auto unboxing&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 &lt;b&gt;Auto Unboxing&lt;/b&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;b&gt;&lt;span data-token-index=&quot;0&quot;&gt;Iterator를 상속 받는 Generic은 For-each문을 쓸 수 있다&lt;/span&gt;&lt;/b&gt;&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;b&gt;요소 열람하는법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. for문&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692186926374&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=0;i&amp;lt;list.size();i++) {
	System.out.print(list.get(i)+(i != list.size()-1 ? &quot; &quot; : &quot;\n&quot;));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. for each문&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692186962472&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(Double d:list)
	System.out.println(d+&quot; &quot;);
System.out.println();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Iterator(StringTokenizer 와 비슷)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692186968941&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Iterator&amp;lt;Double&amp;gt; iter=list.iterator(); // 반복 접근 가능한 객체
while(iter.hasNext()) {
	Double d=iter.next();
	System.out.print(d+&quot; &quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Vector&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Vector&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;벡터는 객체만 저장 가능&lt;/li&gt;
&lt;li&gt;벡터의 참조 결과는 항상 Object타입이므로, 적절한 타입 변환 후 사용&lt;/li&gt;
&lt;li&gt;다른 타입의 객체를 섞어서 저장할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Vector의 함수들&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Object 는 o, int 는 i&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;addElement(o)&lt;/b&gt; : o라는 값을 맨 뒤에 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;insertElementAt(o , i)&lt;/b&gt; : o라는 객체를 i인덱스에 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;elementAt(i)&lt;/b&gt; : 인덱스로 개체 구하기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;indexOf(o)&lt;/b&gt; : 인덱스 번호 구하기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;setElementAt(i)&lt;/b&gt; : i 인덱스를 가진 객체를 변경&lt;/li&gt;
&lt;li&gt;&lt;b&gt;remove(o), remove(i)&lt;/b&gt; : o라는 객체 삭제 , i인덱스 객체 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;contains(o)&lt;/b&gt; : 벡터가 o를 가지고 있는지에 따른 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;size()&lt;/b&gt; : 벡터의 크기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;capacity()&lt;/b&gt; : 벡터의 용량&lt;/li&gt;
&lt;li&gt;&lt;b&gt;clone()&lt;/b&gt; : 벡터 복사&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✨&lt;b&gt;벡터와 리스트의 차이&lt;/b&gt; - 벡터는 자료구조에 항목을 삽입, 삭제할 때 동기화가 되지만 리스트는 되지 않는다. (벡터가 멀티쓰레드 환경에서 안전)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;List&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;List의 함수들&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;add(값)&lt;/b&gt;&amp;nbsp;: 마지막에 값 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;add(i ,값)&lt;/b&gt;&amp;nbsp;: i 번째 인덱스에 값 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;set(i ,값)&lt;/b&gt;&amp;nbsp;: i 번째 인덱스를 '값'으로 변경&lt;/li&gt;
&lt;li&gt;&lt;b&gt;remove(i)&lt;/b&gt;&amp;nbsp;: i 번째 인덱스 요소를 제거 ( 타입 있음 )&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) Double justRemoved = list.remove(2); // 2번째 인덱스의 double형인 값이 justRemoved에 저장&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;remove(값)&lt;/b&gt;&amp;nbsp;: 값이 제거 되었냐에 따라 true/false 리턴&lt;/li&gt;
&lt;li&gt;&lt;b&gt;contains(값)&lt;/b&gt;&amp;nbsp;: 값이 존재하는지에 따라 true/false 리턴&lt;/li&gt;
&lt;li&gt;&lt;b&gt;indexOf(값)&lt;/b&gt;&amp;nbsp;: 값이 존재하는 경우 위치인덱스값 반환, 없을경우 -1 반환. 앞에서부터 찾아서 가장 먼저 뜨는 것.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;lastIndexOf(값)&lt;/b&gt;&amp;nbsp;: indexOf랑 같은데 뒤에서부터 처음 검색된 요소의 인덱스.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리스트A.equals(리스트B)&lt;/b&gt;&amp;nbsp;: 요소가 모두 일치할때 두 리스트의 equals는 true를 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;clear()&lt;/b&gt;&amp;nbsp;: 모든 요소 제거&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리스트이름.isEmpty()&lt;/b&gt;&amp;nbsp;: 리스트가 비어있으면 true 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;배열(Array)과 리스트(List) 차이&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqY5TT/btsro9QPllZ/h8zdFkifnMLgMkVVRNOIS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqY5TT/btsro9QPllZ/h8zdFkifnMLgMkVVRNOIS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqY5TT/btsro9QPllZ/h8zdFkifnMLgMkVVRNOIS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqY5TT%2Fbtsro9QPllZ%2Fh8zdFkifnMLgMkVVRNOIS0%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;624&quot; height=&quot;217&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Linked List&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;링크로 연결된 노드의 집합.&lt;/li&gt;
&lt;li&gt;java.util.LinkedList 클래스에 정의됨&lt;/li&gt;
&lt;li&gt;Index를 통해 참조 접근은 불가능하나, head로부터 링크를 따라가면서 접근&lt;/li&gt;
&lt;li&gt;각 노드는 본인의 데이터와 다음 노드로의 링크를 가지고 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;LinkedList 함수들&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;add(값)&lt;/b&gt;&amp;nbsp;: 마지막에 값 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;add(i ,값)&lt;/b&gt;&amp;nbsp;: i 번째 인덱스에 값 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;set(i ,값)&lt;/b&gt;&amp;nbsp;: i 번째 인덱스를 '값'으로 변경&lt;/li&gt;
&lt;li&gt;&lt;b&gt;remove(i)&lt;/b&gt;&amp;nbsp;: i 번째 인덱스 요소를 제거 ( 타입 있음 )&lt;/li&gt;
&lt;li&gt;&lt;b&gt;removeFirst()&lt;/b&gt; : 첫번째 값 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;removeLast&lt;/b&gt;() : 마지막 값 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;clear&lt;/b&gt;() : 모든 데이터 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;removeAll&lt;/b&gt;(리스트명) : 모든 데이터 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;size()&lt;/b&gt; : 리스트 크기 구하기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get(i)&lt;/b&gt; : i번째 리스트 값 구하기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;contains(값)&lt;/b&gt;&amp;nbsp;: 값이 존재하는지에 따라 true/false 리턴&lt;/li&gt;
&lt;li&gt;&lt;b&gt;indexOf(값)&lt;/b&gt;&amp;nbsp;: 값이 존재하는 경우 위치인덱스값 반환, 없을경우 -1 반환. 앞에서부터 찾아서 가장 먼저 뜨는 것.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ArrayList&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vector, LinkedList, ArrayList 모두 추상클래스(AbstractList)를 상속 받은 동적 자료구조&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Stack, Queue&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Stack&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yQnSq/btsrhGn9EL6/Sv6SmnlLjajF0HgI4QKu0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yQnSq/btsrhGn9EL6/Sv6SmnlLjajF0HgI4QKu0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yQnSq/btsrhGn9EL6/Sv6SmnlLjajF0HgI4QKu0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyQnSq%2FbtsrhGn9EL6%2FSv6SmnlLjajF0HgI4QKu0k%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;556&quot; height=&quot;1184&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1184&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;여러 데이터 항목이 일정한 순서로 나열&lt;/li&gt;
&lt;li&gt;Last In First Out (LIFO)&lt;/li&gt;
&lt;li&gt;java.util.Stack 클래스로 제공&lt;/li&gt;
&lt;li&gt;Vector 클래스를 상속받아 구현&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;선언&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692187224022&quot; class=&quot;lasso&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Stack&amp;lt;Integer&amp;gt; stack = new Stack&amp;lt;&amp;gt;(); //int형 스택 선언&lt;/code&gt;&lt;/pre&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;Stack 함수들&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;push(값)&lt;/b&gt; : stack에 값을 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pop()&lt;/b&gt; : stack의 가장 상단의 값 빼내서 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;size()&lt;/b&gt; : 쌓여있는 스택 크기 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;empty()&lt;/b&gt; : 비어있으면 true, 아니면 false반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;contains(값)&lt;/b&gt; : 값이 stack안에 있으면 true 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;peek()&lt;/b&gt; : stack의 가장 상단의 값 빼내지는 않고, 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Queue&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OhsIN/btsroG8UK1Z/MN1U8w0prJYnZ5J3BwD3w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OhsIN/btsroG8UK1Z/MN1U8w0prJYnZ5J3BwD3w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OhsIN/btsroG8UK1Z/MN1U8w0prJYnZ5J3BwD3w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOhsIN%2FbtsroG8UK1Z%2FMN1U8w0prJYnZ5J3BwD3w0%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;2000&quot; height=&quot;310&quot; data-origin-width=&quot;2000&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;리스트와 유사한 자료구조&lt;/li&gt;
&lt;li&gt;First In First Out (FIFO)&lt;/li&gt;
&lt;li&gt;기존 항목의 제거는 리스트의 처음에서 일어남&lt;/li&gt;
&lt;li&gt;java.util.Queue로 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;선언&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692187295958&quot; class=&quot;lasso&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Queue&amp;lt;Integer&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;(); //int형 queue 선언, linkedlist 이용&lt;/code&gt;&lt;/pre&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;Queue의 함수들&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;add(값)&lt;/b&gt; : queue에 값을 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;offer(값)&lt;/b&gt; : queue의 값 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;poll()&lt;/b&gt; : queue의 가장 첫번째 값 빼내서 반환, 비어있으면 null 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;size()&lt;/b&gt; : 쌓여있는 스택 크기 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;clear&lt;/b&gt;() : queue 초기화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;isEmpty()&lt;/b&gt; : 비어있으면 true, 아니면 false반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;contains(값)&lt;/b&gt; : 값이 queue안에 있으면 true 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;peek()&lt;/b&gt; : queue의 가장 상단의 값 빼내지는 않고, 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;remove(값)&lt;/b&gt; : queue의 특정 값 빼기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Set은 중복 요소를 추가하지 않고, 순서가 존재하지 않는다.&lt;/li&gt;
&lt;li&gt;Set의 경우, 값이 집합에 존재하는지를 검사하는 목적으로 주로 사용된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1692187344663&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Set&amp;lt;String&amp;gt; setName = new Set&amp;lt;&amp;gt;();&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Set의 함수들&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;add(값)&lt;/b&gt; : 값 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;size()&lt;/b&gt; : 갯수 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;contains(값)&lt;/b&gt; : 값이 존재하면 true반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;remove(값)&lt;/b&gt; : 해당 값을 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;HashSet&lt;/b&gt;&lt;/h4&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;자료의 해시로 유지되므로, 객체 참조시 O(1) 의 시간 복잡도를 가짐&lt;/li&gt;
&lt;li&gt;java.util.HashSet 클래스로 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;선언&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692187390433&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;HashSet&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;Integer&amp;gt;();&lt;/code&gt;&lt;/pre&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;HashSet의 함수들&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;add(값)&lt;/b&gt; : 값 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;size()&lt;/b&gt; : 갯수 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;contains(값)&lt;/b&gt; : 값이 존재하면 true반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;remove(값)&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Map&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;순차적으로 값을 구하지 않고, key를 통해 value를 얻는다.&lt;/li&gt;
&lt;li&gt;key와 value를 하나의 요소로 관리한다.&lt;/li&gt;
&lt;li&gt;key는 중복될 수 없다. (value는 중복 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;선언&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692187437006&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;HashMap&amp;lt;String, String&amp;gt; map = new HashMap&amp;lt;String, String&amp;gt;();&lt;/code&gt;&lt;/pre&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;Map의 함수들&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;put(k,v)&lt;/b&gt; : key를 k, value 를 v로 가지는 요소 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get(k)&lt;/b&gt; : 키가 k인 요소 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;remove(k)&lt;/b&gt; : 키가 k인 요소 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;containsKey(k)&lt;/b&gt; : 키가 k값인 Map 존재하면 true, 없으면 false 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;containsValue(v)&lt;/b&gt; : 밸류가 v인 값이 존재하면 true, 없으면 false 반환&lt;/li&gt;
&lt;li&gt;value 사용법위와 같이 value를 하나의 변수로 사용 가능&lt;br /&gt;&amp;nbsp;Collection&amp;lt;Object&amp;gt; values = map1.values();&lt;/li&gt;
&lt;li&gt;&lt;b&gt;B.putAll(A)&lt;/b&gt; : A맵에 B맵 내용 합치기&lt;/li&gt;
&lt;li&gt;key 는 k, value 는 v로 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend/JAVA</category>
      <category>Collection</category>
      <category>java</category>
      <category>자료구조</category>
      <category>자바</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/93</guid>
      <comments>https://cheerup313.tistory.com/93#entry93comment</comments>
      <pubDate>Wed, 16 Aug 2023 21:05:11 +0900</pubDate>
    </item>
    <item>
      <title>[2023 인프콘]내 시간표 공유하기 이벤트!</title>
      <link>https://cheerup313.tistory.com/92</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;두둥.. 2023년 인프콘 안내 링크를 지인에게 받았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS Summit을 너무나 재밌게 다녀온 나로썬, 내가 관심있는 세션까지 많은 인프콘을 놓치고 싶지 않았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQGntk/btsoxwolSff/xcJsSefIfkKwDt5Uw6tRT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQGntk/btsoxwolSff/xcJsSefIfkKwDt5Uw6tRT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQGntk/btsoxwolSff/xcJsSefIfkKwDt5Uw6tRT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQGntk%2FbtsoxwolSff%2FxcJsSefIfkKwDt5Uw6tRT0%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;641&quot; height=&quot;278&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버페이 결제로 1분도 채 걸리지 않아 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;1:00에 바로 신청을 완료&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;38&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IoImC/btsowlnzFrX/RieIbk9zVqCjHd9hPoCku1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IoImC/btsowlnzFrX/RieIbk9zVqCjHd9hPoCku1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IoImC/btsowlnzFrX/RieIbk9zVqCjHd9hPoCku1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIoImC%2FbtsowlnzFrX%2FRieIbk9zVqCjHd9hPoCku1%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;582&quot; height=&quot;38&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;38&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;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WWqBr/btsoxbLtu8t/XaskPN9geFaJtDROFhOZsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WWqBr/btsoxbLtu8t/XaskPN9geFaJtDROFhOZsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WWqBr/btsoxbLtu8t/XaskPN9geFaJtDROFhOZsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWWqBr%2FbtsoxbLtu8t%2FXaskPN9geFaJtDROFhOZsk%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;602&quot; height=&quot;299&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;299&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;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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x1SfS/btsoyarOLOg/KsBubrd3hDW7NLvQrlXvg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x1SfS/btsoyarOLOg/KsBubrd3hDW7NLvQrlXvg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x1SfS/btsoyarOLOg/KsBubrd3hDW7NLvQrlXvg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx1SfS%2FbtsoyarOLOg%2FKsBubrd3hDW7NLvQrlXvg1%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;474&quot; height=&quot;343&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;나도 인프콘보내줘....&lt;/b&gt;&lt;/i&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;/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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;인프콘2023 시간표 공유이벤트&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;395&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/pages/infcon-2023-event-schedule&quot; target=&quot;_blank&quot; title=&quot;인프콘시간표이벤트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OGEnQ/btsoypIXdy8/vTq0JrPWj3U2KvMyimQXPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOGEnQ%2FbtsoypIXdy8%2FvTq0JrPWj3U2KvMyimQXPk%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;756&quot; height=&quot;395&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프런 김영한 강의를 학습하려고 들어갔다가 본 배너!!!!!!!!!!!!! 25명에게 티켓증정..!!!!!!!! 이건못참찌..&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;내시간표&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;689&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/infcon-2023/schedule/share?id=761393&amp;amp;hash=syk6715%40caddd29f&amp;amp;name=syk6715&quot; target=&quot;_blank&quot; title=&quot;2023 인프콘 내 시간표:)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpngA4/btsoxasgvTw/VacMxqZpJOCkkXkzSn4Jo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpngA4%2FbtsoxasgvTw%2FVacMxqZpJOCkkXkzSn4Jo1%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;486&quot; height=&quot;689&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;689&quot;/&gt;&lt;/a&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;나의 현재 가장 큰 관심사는 &quot;스프링을 잘 사용하는것&quot; 이고, 부가적으로는 김영한님의 강의를 들으면서 TDD에 관심이 많다. (회사에서 쓰질 않으니..) 코프링(Spring + Kotlin)에도 관심이 많고, 아직 주니어 1년차이기 때문에 기술적으로 성장할 필요가 있다고 생각하여 그 위주로 짜봤다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;이중 가장 궁금한 세션은 김영한님의 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #212529;&quot;&gt;어느 날 고민 많은 주니어 개발자가 찾아왔다 2탄: 주니어 시절 성장과 고민들&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #212529;&quot;&gt; 과&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&quot;&gt;이일민 님의 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #212529;&quot;&gt;스프링과 함께 더 나은 개발자 되기 &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #212529;&quot;&gt;세션이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212529;&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;세션 선택 이유&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;Kopring(Kotlin + Spring) 프로젝트 투입 1주일 전: 주니어 개발자의 Kotlin 도입 이야기&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 style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;구글 Apps Script와 ChatGPT로 많은 동료들 생산성 향상 시킨 썰&lt;/span&gt; &lt;/b&gt;의 경우, 우아한 형제들 개발자여서 담은게 영향이 없지않아 있다.. Chat GPT를 개인적으로는 함수명 만드는거 , 유효성검사 만드는용으로만 쓰고 있었는데 어떻게 생산성을 향상시켰는지 궁금하다. 이 세션을 들을 경우 회사에서 직접 바로 적용이 가능할 것 같아 굉장히 도움이 될 것이라고 생각한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;2곳 중 1곳은 무조건 합격하는 개발자 이력서 만들기&lt;/b&gt;&lt;/span&gt; 의 경우, 제약회사 영업사원으로 일하시던 발표자분이 데브옵스 전문기업의 백엔드 개발자가 되는 동안의 노하우를 담았다고 한다. 서비스 기업을 목표로 하는 나로써는 굉장히 솔깃한 내용이 아닐 수 없다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;안타깝게도 오늘의 TDD는 실패한 것 같군요. 내일은 가능할지도...?&lt;/b&gt; &lt;/span&gt;세션의 경우 , 김영한님의 강의를 들으며 TDD에 관심을 가지게 되어 제목에 이끌려 담게 되었다. 실제로 TDD를 100%적용하는것은 실무에 어렵다는 말이 많은데, 회사에서 테스트코드를 아예 사용하지 않는 나로써는 TDD를 쉽게 구현하고 적용시키는 법을 알려준다는 설명에서 끌려 관심을 가지게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;어느 날 고민 많은 주니어 개발자가 찾아왔다 2탄: 주니어 시절 성장과 고민들&lt;/b&gt; &lt;/span&gt;세션은 김영한님이 하시는 세션이다. 주니어시절은 다들 그렇듯 고민이 많은 것 같다. 내가 잘하고 있는건지도 모르겠고, 정답도 없고.. IT는 빠르게 기술이 향상되면서 새로 무언가를 계속 도입하고 그것이 정답인지 교본 같은 게 없다. 코로나 호황이 끝나고 IT업계가 굉장히 위축된 상황에서, 주니어 개발자가 가져야 할 마음가짐이 궁금하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;인프런에서는 수천 개의 테스트 코드를 이렇게 다루고 있어요&lt;/b&gt;&lt;/span&gt; 세션의 경우, 위의 오늘의 TDD는 실패할 것 같군요 세션과 같은 이유로 담게 되었다. 인프콘 내내 TDD하나만 제대로 알고 가도 나에게 큰 자산이 될 것이라 생각했다 :)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;스프링과 함께 더 나은 개발자 되기&lt;/b&gt; &lt;/span&gt;세션의 경우, 토비의 스프링으로 유명한 이일민님께서 세션을 진행하신다. 스프링 1.0부터 6.0이 되기까지 겪었던 스프링의 역사를 몸소 체험해보신 분이다. 다양한 도전에 대한 경험을 공유해주신다고 하니, 스프링 5.x부터 쓴 나는 배울 점이 아주 많을 것이라 느낀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&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 style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;패션 이커머스 서비스의 아키텍처 성장 기록&lt;/b&gt;&lt;/span&gt; 세션의 경우, 매년 70%이상 성장하는 29cm의 아키텍쳐 변화에 대해 듣게 된다. 29cm에서 MSA를 도입한 이유를 알려준다니.. MSA의 경우 엄청 거대한 서비스가 아니면 비효율적이라는 말도 있는데, 선택하게 된 계기가 궁금하여 담게 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;세션별로 내가 듣고 싶은 이유를 적고 보니 더더더더 듣고 싶어졌다 으아아!!!!&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;제발..되면 후기 정성들여 하루종일 쓸게요... 멋진 개발자가 될게요.. 열심히 살게요..!!!!!!!!!&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvRCwz/btsoxHDsOAH/quEVw4uk0ekgoQWvSKz921/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvRCwz/btsoxHDsOAH/quEVw4uk0ekgoQWvSKz921/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvRCwz/btsoxHDsOAH/quEVw4uk0ekgoQWvSKz921/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvRCwz%2FbtsoxHDsOAH%2FquEVw4uk0ekgoQWvSKz921%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;353&quot; height=&quot;356&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘부터 인프랩 있는 판교쪽으로 1일 1기도 하면서 당첨되길 기다려보겠습니다..&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;제발 뽑아주세요..제발..&lt;/p&gt;</description>
      <category>기타/IT 컨퍼런스</category>
      <category>INFCON</category>
      <category>개발자</category>
      <category>개발자커뮤니케이션</category>
      <category>인프콘</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/92</guid>
      <comments>https://cheerup313.tistory.com/92#entry92comment</comments>
      <pubDate>Sat, 22 Jul 2023 17:59:47 +0900</pubDate>
    </item>
    <item>
      <title>[정보처리기사 실기] 2023 1회 정보처리기사 실기 합격 후기</title>
      <link>https://cheerup313.tistory.com/91</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cheerup313.tistory.com/80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://cheerup313.tistory.com/80&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686902627650&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;[정보처리기사 실기] 2023 1회 정보처리기사 실기 시험 후기&quot; data-og-description=&quot;이번 시험의 특징 2022년과 다르게 코딩문제 많음 + 기출문제 4개 출제 + 약술형없음 =&amp;gt; 역대급 쉬웠던 시험 아마도 기출문제를 생각하고 공부하셨던 분들은 대부분 붙으셨을걸로 예상된다. 나는 &quot; data-og-host=&quot;cheerup313.tistory.com&quot; data-og-source-url=&quot;https://cheerup313.tistory.com/80&quot; data-og-url=&quot;https://cheerup313.tistory.com/80&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/o6JBx/hyS1jq1yr2/VjgpmYtDrLrKtm9Ae0t4i0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/gUpSu/hyS0dTtnne/0zBb9FoksxgMKRx3kPdsY1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://cheerup313.tistory.com/80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cheerup313.tistory.com/80&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/o6JBx/hyS1jq1yr2/VjgpmYtDrLrKtm9Ae0t4i0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/gUpSu/hyS0dTtnne/0zBb9FoksxgMKRx3kPdsY1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[정보처리기사 실기] 2023 1회 정보처리기사 실기 시험 후기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시험의 특징 2022년과 다르게 코딩문제 많음 + 기출문제 4개 출제 + 약술형없음 =&amp;gt; 역대급 쉬웠던 시험 아마도 기출문제를 생각하고 공부하셨던 분들은 대부분 붙으셨을걸로 예상된다. 나는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cheerup313.tistory.com&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;6/9에 합격 결과를 확인하고 나서, 글 쓰는 걸 깜빡했다..ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BuYBd/btskgfQEBBh/4L85aF6p0AK2vWoJfvrc61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BuYBd/btskgfQEBBh/4L85aF6p0AK2vWoJfvrc61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BuYBd/btskgfQEBBh/4L85aF6p0AK2vWoJfvrc61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBuYBd%2FbtskgfQEBBh%2F4L85aF6p0AK2vWoJfvrc61%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;745&quot; height=&quot;289&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;63점이라는 간당간당한 점수로 합격을 했고, 아무래도 직장 재직중이다보니 또 보는건 너무나 끔찍했다..&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;p data-ke-size=&quot;size16&quot;&gt;TIP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 먼저 코딩 문제는 무조건 맞춰야한다. 프로그래밍, sql부분은 외우지 말고 이해하자&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. &lt;b&gt;1달이상 남았을 경우&lt;/b&gt; &amp;gt; 수제비 기본서 + 수제비 파이널&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;시간이 촉박할 경우&lt;/b&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험이 쉬웠기에 운이 좋았다는 생각도 든다 :)&lt;/p&gt;</description>
      <category>기타/자격증</category>
      <category>정보처리기사</category>
      <category>정처기</category>
      <category>정처기실기</category>
      <category>정처기합격후기</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/91</guid>
      <comments>https://cheerup313.tistory.com/91#entry91comment</comments>
      <pubDate>Fri, 16 Jun 2023 17:10:51 +0900</pubDate>
    </item>
    <item>
      <title>[스프링 핵심 원리 기본편 02] 테스트 코드 구조 / SOLID원칙 지켜서 개발하기</title>
      <link>https://cheerup313.tistory.com/90</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;비즈니스 요구사항과 설계&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;회원
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;회원을 가입하고 조회할 수 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;회원은 일반과 VIP 두 가지 등급이 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;회원 데이터는 &lt;b&gt;자체 DB를 구축할 수 있고, 외부 시스템과 연동&lt;/b&gt;할 수 있다.(미확정)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;주문과 할인 정책
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;회원은 상품을 주문할 수 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;회원 등급에 따라&lt;/b&gt; 할인 정책을 적용할 수 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;할인 정책은 모든 VIP는 1000원을 할인해 주는&lt;b&gt; 고정 금액 할인을 적용&lt;/b&gt;해 달라. (나중에 변경될 수 있다.)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;할인 정책은 변경 가능성이 높다&lt;/b&gt;. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다. (미확정)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 경우, 미확정 인 부분에 대해서 현재 결정하기 어렵다. 개발을 뭐든 기획이 다 끝날때까지 기다렸다가 할 수는 없으니, &lt;b&gt;역할과 구현을 구분해서 진행&lt;/b&gt;한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/miuVA/btsh2QGfrjI/vjKK0dpnmUXA8NHqEQJjBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/miuVA/btsh2QGfrjI/vjKK0dpnmUXA8NHqEQJjBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/miuVA/btsh2QGfrjI/vjKK0dpnmUXA8NHqEQJjBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmiuVA%2Fbtsh2QGfrjI%2FvjKK0dpnmUXA8NHqEQJjBK%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;497&quot; height=&quot;516&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회원 데이터는 DB가 자체구축이 가능하며, 외부 시스템과 연동 할 수 있기 때문에 회원 데이터에 접근하는 계층은 따로 만들어서 관리한다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1685456106220&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class OrderServiceImpl implements OrderService {
    private final DiscountPolicy discountPolicy = new RateDiscountPolicy();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이대로 개발할 경우, 다른 저장소로 변경하면 OCP원칙 (개방-폐쇄 원칙)을 잘 지키는 걸까? DIP(의존관계 역전 원칙)는?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 실제로 의존 관계가 인터페이스 뿐 아니라 구현까지 모두 의존하고 있다. = 추상화 / 구체화 모두 의존&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VeobQ/btsh17ohgAK/TEx3n1ge3uedZTSEG0wTWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VeobQ/btsh17ohgAK/TEx3n1ge3uedZTSEG0wTWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VeobQ/btsh17ohgAK/TEx3n1ge3uedZTSEG0wTWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVeobQ%2Fbtsh17ohgAK%2FTEx3n1ge3uedZTSEG0wTWK%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;368&quot; height=&quot;207&quot; data-origin-width=&quot;915&quot; data-origin-height=&quot;515&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 구현 상태는 다음과 같아진다. 기능을 확장하게 되면 클라이언트에 영향을 주고, OrderServiceImpl은 구현클래스인 FixDiscountPolicy와 RateDiscountPolicy 에 의존하고 있기 때문에 OCP와 DIP를 어긴다.&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;b&gt;별도의 AppConfig 사용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현 객체를 생성하고, 연결하는 AppConfig를 생성한다. (어떤 구현 객체가 들어와야하는지 정하는 역할)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OrderServiceImpl에 하지 않는 이유는, SRP(단일책임)원칙을 지키기 위해서이다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1685456363839&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class AppConfig {
    public OrderService orderService() {
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }
    
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }
    
    public DiscountPolicy discountPolicy() {
        return new RateDiscountPolicy();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1685456371585&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class OrderServiceImpl implements OrderService {
    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;
    
    public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        ths.discountPolicy = discountPolicy;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1685456378237&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class OrderApp {

    public static void main(String[] args) {
        AppConfig appConfig = new AppConfig();
        OrderService orderService = appConfig.orderService();

        Long memberId = 1L;
        Member member = new Member(memberId, &quot;memberA&quot;, Grade.VIP
        Order order = orderService.createOrder(memberId, &quot;itemA&quot;, 20000);

        System.out.println(&quot;order = &quot; + order);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 설계하면, OrderServiceImpl은 구현 클래스들을 의존하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OrderServiceImpl에 어떤 구현 객체가 들어올지는 AppConfig에서 결정한다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/He8qa/btsh4Ot8FL3/IBQaibLfKIEUoHlWgufoAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/He8qa/btsh4Ot8FL3/IBQaibLfKIEUoHlWgufoAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/He8qa/btsh4Ot8FL3/IBQaibLfKIEUoHlWgufoAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHe8qa%2Fbtsh4Ot8FL3%2FIBQaibLfKIEUoHlWgufoAk%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;473&quot; height=&quot;322&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;322&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;할인을 위해서는 회원 등급이 필요하므로 주문 서비스가 회원 저장소에서 회원을 조회하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할인 정책 저장소에서 할인 정책을 가져오도록 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 될 경우, '주문'이라는 방식에 대해서 회원 및 할인 정책을 유연하게 바꿀 수 있다. 바꾼다 한들 주문 서비스에는 영향이 가지 않기 때문에 협력 관계를 그대로 사용할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&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;b&gt;테스트 코드 작성 방식&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;given : 테스트를 위한 준비 . 변수, 입력 값 등을 정의함&lt;/li&gt;
&lt;li&gt;when : 테스트를 실행하는 과정 . 검증하는 내용을 확인 가능&lt;/li&gt;
&lt;li&gt;then : 실제 실행으로 결과를 검증&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Backend/Spring&amp;amp;Springboot - 김영한</category>
      <category>SOLID원칙</category>
      <category>Spring</category>
      <category>객체지향</category>
      <category>스프링</category>
      <category>테스트코드</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/90</guid>
      <comments>https://cheerup313.tistory.com/90#entry90comment</comments>
      <pubDate>Tue, 30 May 2023 23:22:39 +0900</pubDate>
    </item>
    <item>
      <title>[스프링 핵심 원리 기본편 01] 스프링의 개념과 객체지향 설계</title>
      <link>https://cheerup313.tistory.com/89</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;스프링?&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;2000년 초, EJB라는 복잡한 틀에서 벗어나, POJO를 지향하는 &quot;Spring&quot; 이 개발되었다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccnVi3/btsh4mLmvzR/O6nPDtMQiCU9WDqCOXo1sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccnVi3/btsh4mLmvzR/O6nPDtMQiCU9WDqCOXo1sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccnVi3/btsh4mLmvzR/O6nPDtMQiCU9WDqCOXo1sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccnVi3%2Fbtsh4mLmvzR%2FO6nPDtMQiCU9WDqCOXo1sk%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;574&quot; height=&quot;308&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 프레임워크&lt;/b&gt; : 스프링의 기본 구조. 객체지향 설계를 잘 할 수 있도록 도와주는 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 부트&lt;/b&gt; : 복잡한 스프링 프레임워크 설정을 간단하게 할 수 있도록 도와주는 도구&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; (실무에서 대부분 사용)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 데이터&lt;/b&gt; : noSQL이던, RDB건간에 기본적인 CRUD는 비슷하기 때문에, 이를 도와주는 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 세션&lt;/b&gt;&amp;nbsp; : 세션을 편리하게 쓸 수 있도록 도와주는 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 시큐리티&lt;/b&gt; : 보안과 관련된 설정을 쉽게 할 수 있는 스프링 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 Rest Docs&lt;/b&gt; : API 문서를 편리하게 작성할 수 있도록 도와주는 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 배치&lt;/b&gt; : 변경해야하는 DATA가 수천만개일 때, 이를 나누어서 차례차례 업데이트 한다. (실시간 사용성을 보장하기 위해) 이때, 자동으로 업데이트 및 변경 (=배치)하게 도와주는 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스프링 클라우드&lt;/b&gt; : 클라우드 환경에서 작업할 수 있도록 도와주는 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;스프링 vs 스프링부트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 부트는 내장 톰캣 서버가 있어 톰캣을 별도 설치하고 설정할 필요가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;손쉬운 빌드가 가능하도록 starter를 잘 구성하여, 선택만 하면 자동으로 기본 세팅이 완료되도록 설계되었다.&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;h2 data-ke-size=&quot;size26&quot;&gt;스프링 핵심 개념 - 객체지향&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EJB가 아닌 스프링에 다들 열광한 이유, &quot;객체지향&quot; 이라는 특징을 굉장히 잘 살린 프레임워크이기 때문이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;객체지향이란&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;객체지향이란, 다형성(Polymorphism)을 가진 것을 의미한다. &lt;b&gt;역할&lt;/b&gt;과 &lt;b&gt;구현&lt;/b&gt;을 분리한다.&amp;nbsp;&lt;br /&gt;Client와 Server 중 하나가 바뀌어도 다른 것에 영향을 주지 않는 설계 방식이다.&amp;nbsp;&lt;/blockquote&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;p data-ke-size=&quot;size16&quot;&gt;-&amp;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;b&gt;클라이언트&lt;/b&gt; : 요청하는사람&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서버&lt;/b&gt; : 요청에 응답하는 사람&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 클라이언트는 동시에 서버가 될 수 있다. (ex. 클라이언트 -&amp;gt; 클라이언트/서버 -&amp;gt; 서버 )&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인터페이스란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 기능을 가진 것들을 '정형화'하기 위해 강제하는 것이라고 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 목적을 가진 객체를 아무 규칙 없이 생성한다면, 객체를 수정하거나 제어할 때 문제가 생기기 때문이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학생 인터페이스라면 이름, 학번, 과, 듣는 학점, 생년월일 등을 지정하는 것을 말한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 인터페이스로 정형화하여 객체를 생성하게 된다면, 유지보수성이 굉장히 올라가게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러므로, &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;인터페이스를 유지보수하기 좋도록 안정적으로 설계하는 것&lt;/b&gt;&lt;/span&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;b&gt;다형성&lt;/b&gt;이란&lt;/h3&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;스프링의 &lt;span style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot;&gt;제어의 역전(Ioc), 의존관계 주입(DI)은 다형성을 활용해, 역할과 구현을 편리하게 다룰 수 있도록 지원한다.&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;h2 data-ke-size=&quot;size26&quot;&gt;객체지향 설계 5원칙 (SOLID)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;SRP&lt;/b&gt;: 단일 책임 원칙(single responsibility principle)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;OCP&lt;/b&gt;: 개방-폐쇄 원칙 (Open/closed principle)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;LSP&lt;/b&gt;: 리스코프 치환 원칙 (Liskov substitution principle)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;ISP&lt;/b&gt;: 인터페이스 분리 원칙 (Interface segregation principle)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;DIP&lt;/b&gt;: 의존관계 역전 원칙 (Dependency inversion principle)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;SRP&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;단일 책임 원칙&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;(single responsibility principle)&amp;nbsp;&lt;/b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;하나의 클래스는 하나의 책임만 가져야 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;책임의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;중요한 판단 기준은 변경&lt;/b&gt;이다.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;변경이 있을 때 파급 효과가 적으면 적을수록&lt;/b&gt; 좋다.(UI 하나 변경했는데, 애플리케이션을 다 고쳐야 한다면? 잘못된 설계이다. )&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;OCP 개방-폐쇄 원칙 (Open/closed principle)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;가장 중요한 원칙이다!&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;소프트웨어 요소에는&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;확장에는 열려&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;있으나,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;변경에는 닫혀&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;있어야 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;다형성을 활용&lt;/b&gt;하여 코드 변경 없이 기능을 추가한다.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;다형성을 사용하고, OCP 원칙을 지키기 위해서는 객체를 생성하고 연관 관계를 맺어주는 별도의 설정자가 필요하다. =Spring&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;LSP: 리스코프 치환 원칙 (Liskov substitution principle)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위한 원칙, 인터페이스를 구현한 구현체는 믿고 사용하려면, 이 원칙이 필요하다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;단순히 컴파일에 성공하는 것이 개발의 완성이 아니라, 정확한 기능을 개발해야 한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;ISP: 인터페이스 분리 원칙 (Interface segregation principle)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;기능을 여러개로 쪼갠 &lt;b&gt;인터페이스 여러 개가 범용 인터페이스 하나보다 낫다&lt;/b&gt;.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;예) 자동차 인터페이스가 존재한다고 가정해 보자.
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: circle;&quot;&gt;자동차 인터페이스를 운전 인터페이스, 정비 인터페이스로 두 개로 분리하는 것이 더 낫다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: circle;&quot;&gt;두 개로 분리할 경우, 사용자 클라이언트를 운전자 클라이언트, 정비사 클라이언트로 분리할 수 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: circle;&quot;&gt;만약 정비와 관련된 기능을 바꿔야 해서 정비 인터페이스 자체가 변해도 운전자 클라이언트에 영향을 주지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;인터페이스의 기능이 명확해지고 대체 가능성이 높아진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;DIP: 의존관계 역전 원칙 (Dependency inversion principle)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;중요한 원칙!&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;프로그래머는 &amp;ldquo;&lt;b&gt;추상화에 의존&lt;/b&gt;해야지, 구체화에 의존하면 안 된다.&amp;rdquo; 의존성 주입은 이 원칙을 따르는 방법 중 하나다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;쉽게 말해 클라이언트 코드가 구현 클래스에 의존하지 말고, 인터페이스에 의존해야 한다는 뜻이다. (MemberService가 MemberRepository 인터페이스에만 의존해야 한다.)&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;예) 운전자는 자동차 역할에 대해서 알아야 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;역할(Role)에 의존하게 해야 한다는 것과 같은 의미이다.&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;만약 클라이언트가 구현체에 의존하게 된다면 변경이 아주 어려워진다.&amp;nbsp;&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;객체지향의 핵심은 다형성이나, 다형성만으로는 OCP,DIP 지키기가 어렵다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위해 스프링이 개발 한 것이 &lt;b&gt;DI(Dependency Injection) : &lt;a title=&quot;의존성 주입&quot; href=&quot;https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;의존성 주입&lt;/a&gt;&lt;/b&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;h2 data-ke-size=&quot;size26&quot;&gt;스프링 특징과 개발에 유의할 점&amp;nbsp;&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;기능 확장은 용이해야하지만, 변경은 어려워야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;다형성은 가장 중요한 개념이며, 의존성주입으로 다형성만으로는 지키기 어려운 SOLID원칙을 지킬 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;인터페이스는 자세하게 쪼개면 쪼갤수록 좋다. (하지만 현실적으로 추상화 비용 존재)&lt;/li&gt;
&lt;li&gt;기능 확장할 가능성이 없을 경우엔 구체 클래스를 사용한다.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Backend/Spring&amp;amp;Springboot - 김영한</category>
      <category>SOLID원칙</category>
      <category>스프링</category>
      <category>스프링개념</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/89</guid>
      <comments>https://cheerup313.tistory.com/89#entry89comment</comments>
      <pubDate>Tue, 30 May 2023 22:58:20 +0900</pubDate>
    </item>
    <item>
      <title>톰캣 포트 충돌 해결하기 (Several ports (8005, 8080) required by Tomcat v9.0 Server at localhost are already in use.)</title>
      <link>https://cheerup313.tistory.com/88</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;톰캣 포트 충돌 해결하기를 검색하면 나오는 수많은 cmd 창 pid 죽이기..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사 보안사항인지 나는 TASKKILL이 가능하지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBn6ex/btshjDaV1rF/QLwESViivZfEBlKWfQjco1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBn6ex/btshjDaV1rF/QLwESViivZfEBlKWfQjco1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBn6ex/btshjDaV1rF/QLwESViivZfEBlKWfQjco1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBn6ex%2FbtshjDaV1rF%2FQLwESViivZfEBlKWfQjco1%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;369&quot; height=&quot;60&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;60&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;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&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: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;Windows 키 + R 으로 실행창 키기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;taskmgr 입력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbgRaJ/btshqseroSZ/LKZ2h3zaBaKFshnx1aMGgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbgRaJ/btshqseroSZ/LKZ2h3zaBaKFshnx1aMGgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbgRaJ/btshqseroSZ/LKZ2h3zaBaKFshnx1aMGgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbgRaJ%2FbtshqseroSZ%2FLKZ2h3zaBaKFshnx1aMGgK%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;412&quot; height=&quot;230&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;javaw.exe 프로세스 종료&lt;/b&gt;&lt;br /&gt;작업 관리자&amp;nbsp;&amp;rarr;&amp;nbsp;세부 정보&amp;nbsp;&amp;rarr;&amp;nbsp;javaw.exe 오른쪽버튼 &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt;&amp;nbsp;작업 끝내기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O3lo6/btshpZjqGRg/85m3J9Ou8xdKv73zQ5NRL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O3lo6/btshpZjqGRg/85m3J9Ou8xdKv73zQ5NRL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O3lo6/btshpZjqGRg/85m3J9Ou8xdKv73zQ5NRL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO3lo6%2FbtshpZjqGRg%2F85m3J9Ou8xdKv73zQ5NRL1%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;663&quot; height=&quot;561&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;561&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;p data-ke-size=&quot;size16&quot;&gt;이것만으로 간단하게 해결!&lt;/p&gt;</description>
      <category>Backend/Spring</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/88</guid>
      <comments>https://cheerup313.tistory.com/88#entry88comment</comments>
      <pubDate>Thu, 25 May 2023 15:37:04 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] 인텔리제이 스프링 환경설정 / 라이브러리 / 빌드 방법 / Gradle(그래들) / Thymeleaf(타임리프)</title>
      <link>https://cheerup313.tistory.com/87</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;김영한의 스프링 로드맵을 시작했다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;국비교육과 회사에서 사용하는 이클립스(Eclipse)가 아닌 인텔리제이(IntelliJ)를 사용해서 공부하려고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;인텔리제이에 한번 빠지면 &lt;b&gt;편리함 때문에 다시는 이클립스로 돌아가지 못한다&lt;/b&gt;는 말이 있어 궁금하다..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;나의 경우, 커뮤니티버전이 아닌 유료 버전을 받아서 대학교 이메일 인증을 통해 학생 계정으로 이용한다.&lt;/span&gt;&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;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;인텔리제이 환경설정(Set up)&lt;/b&gt;&lt;/h2&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;a href=&quot;https://start.spring.io/&quot;&gt;https://start.spring.io/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에 접속하여, spring을 시작하자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cObuKw/btsgDMlT7EX/f3uGrQEtuLpWGkLx9fxCU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cObuKw/btsgDMlT7EX/f3uGrQEtuLpWGkLx9fxCU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cObuKw/btsgDMlT7EX/f3uGrQEtuLpWGkLx9fxCU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcObuKw%2FbtsgDMlT7EX%2Ff3uGrQEtuLpWGkLx9fxCU0%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;567&quot; height=&quot;678&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2393&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 빌드 툴 (Gradle / Maven) , 언어(Java / Kotlin / Groovy) , Spring Boot 버전, 프로젝트 기본 명칭, 패키징(Jar / War), 자바버전,Dependency 를 설정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강의에서는 2.4(?) 버전을 사용하는데, 이미 3.1.0 버전이 나와있고 최신 버전으로 공부하는 것이 좋다고 생각이 들어 3버전을 선택하였다. SNAPSHOT의 경우 아직 미완성 된 버전 이라고 보면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링부트 3.0 이상 부터는, Java버전을 17이상만 지원하므로 LTS인 17 버전을 선택하였다. (&lt;a title=&quot;자바버전&quot; href=&quot;https://cheerup313.tistory.com/86&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;자바버전&lt;/a&gt; 관련링크)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;920&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OpeL9/btsgEdKNQbZ/vvzkmGz1qqYhc1l4Q9Z3J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OpeL9/btsgEdKNQbZ/vvzkmGz1qqYhc1l4Q9Z3J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OpeL9/btsgEdKNQbZ/vvzkmGz1qqYhc1l4Q9Z3J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOpeL9%2FbtsgEdKNQbZ%2FvvzkmGz1qqYhc1l4Q9Z3J0%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;482&quot; height=&quot;222&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;920&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미처 캡쳐하지 못한 아래 Dependencies에서는 ADD버튼을 누르면 스프링 개발 환경에 필요한 많은 것들을 받을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Web과 Thymeleaf라는 템플릿 엔진을 Dependency로 설정하고 Generate를 누르면 파일이 받아진다.&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;인텔리제이에서는 새 프로젝트 만들기를 선택하여, build.gradle을 실행하면 gradle이 알아서 설치해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb6zSg/btsgGkhA6JY/klUpyconAuGjNtuJl3oHw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb6zSg/btsgGkhA6JY/klUpyconAuGjNtuJl3oHw0/img.png&quot; data-alt=&quot;start.spring.io에서 설정 후 빌드한 프로젝트 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb6zSg/btsgGkhA6JY/klUpyconAuGjNtuJl3oHw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb6zSg%2FbtsgGkhA6JY%2FklUpyconAuGjNtuJl3oHw0%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;318&quot; height=&quot;337&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2121&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;start.spring.io에서 설정 후 빌드한 프로젝트 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 기본적으로 빌드하면 나오는 구조이다. main에는 실제로 실행할 내용들이 들어가고, test에는 테스트코드와 관련된 소스들이 들어가게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* .gitignore도 이클립스는 사이트에 들어가서 다운받아 설정했어야 하는데, 알아서 깔린다!&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;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;build.gradle&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1915&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRi268/btsgYipmVSg/55wci4Iy4ZdkP2318bNMC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRi268/btsgYipmVSg/55wci4Iy4ZdkP2318bNMC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRi268/btsgYipmVSg/55wci4Iy4ZdkP2318bNMC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRi268%2FbtsgYipmVSg%2F55wci4Iy4ZdkP2318bNMC1%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;529&quot; height=&quot;507&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1915&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15번째줄 dependencies에 세가지가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. thymeleaf&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. starter-web&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. starter-test&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1,2의 경우 처음에 지정한 Dependency이고, test는 starter-web을 의존성으로 사용할 경우 기본적으로 사용하는 test인거같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 의존성을 더 추가하거나 &lt;a href=&quot;https://start.spring.io/&quot;&gt;https://start.spring.io/&lt;/a&gt; 에서 설정했을 경우 갯수가 늘어날 것이다.&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;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실행해보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/main/java/hello/hellospring/HelloSpringApplication을 실행해보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/basmPZ/btsgELUjB8f/W5ZyGMDmq335RCh90WGfN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/basmPZ/btsgELUjB8f/W5ZyGMDmq335RCh90WGfN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/basmPZ/btsgELUjB8f/W5ZyGMDmq335RCh90WGfN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbasmPZ%2FbtsgELUjB8f%2FW5ZyGMDmq335RCh90WGfN1%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;532&quot; height=&quot;463&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 실행 내용이 나오게 된다. 기본적으로 포트는 8080이므로 localhost.8080 에 접속해보면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pV4e9/btsgEgHxEBR/xUhBFGqNMXMMSLtprmQFQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pV4e9/btsgEgHxEBR/xUhBFGqNMXMMSLtprmQFQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pV4e9/btsgEgHxEBR/xUhBFGqNMXMMSLtprmQFQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpV4e9%2FbtsgEgHxEBR%2FxUhBFGqNMXMMSLtprmQFQk%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;529&quot; height=&quot;136&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 뜨면 성공! (아직 index페이지가 없어 뜰게 없다)&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;빌드가 Gradle을 통해서 할 경우, 느려질 수 있기 때문에 Settings에서 Gradle을 찾아 Build and run using, Run test using을 IntelliJ IDEA로 바꿔준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0B5jL/btsgYjIAKih/wQ7kcy2uuCtG8JLRqTlrS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0B5jL/btsgYjIAKih/wQ7kcy2uuCtG8JLRqTlrS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0B5jL/btsgYjIAKih/wQ7kcy2uuCtG8JLRqTlrS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0B5jL%2FbtsgYjIAKih%2FwQ7kcy2uuCtG8JLRqTlrS0%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;471&quot; height=&quot;332&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1410&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;라이브러리 살펴보기&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb6zSg/btsgGkhA6JY/klUpyconAuGjNtuJl3oHw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb6zSg/btsgGkhA6JY/klUpyconAuGjNtuJl3oHw0/img.png&quot; data-alt=&quot;start.spring.io에서 설정 후 빌드한 프로젝트 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb6zSg/btsgGkhA6JY/klUpyconAuGjNtuJl3oHw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb6zSg%2FbtsgGkhA6JY%2FklUpyconAuGjNtuJl3oHw0%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;318&quot; height=&quot;337&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2121&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;start.spring.io에서 설정 후 빌드한 프로젝트 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 구조 아래에, &lt;b&gt;External Libraries&lt;/b&gt;를 보면 엄청나게 많은 라이브러리가 들어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타임리프랑 spring web starter만 가져왔는데.. 이 내용들은 웹 어플리케이션을 쓸 때 모두 필요하기 때문에 가져온 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1285&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czAh5p/btsgEfaPz8D/WdRf8hRIJDAhWNDhilHMP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czAh5p/btsgEfaPz8D/WdRf8hRIJDAhWNDhilHMP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czAh5p/btsgEfaPz8D/WdRf8hRIJDAhWNDhilHMP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczAh5p%2FbtsgEfaPz8D%2FWdRf8hRIJDAhWNDhilHMP1%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;453&quot; height=&quot;1285&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1285&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 gradle을 열어보면, springboot-starter-web과 타임리프가 쓰는 라이브러리들을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&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;현업은 System.out.println이 아닌 로그로 저장하여, 로그 관리도 해야하고 결과를 확인해야 하므로 log 관련 의존도 필요한데, slf4j와 logback 두종류가 설치되어있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;slf4j를 회사와 국비교육 당시 배워서 사용하고있는데, 요즘은 logback을 사용한다고 한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Logback은 새로운 라이브러리가 아닌, log4j아키텍쳐 기반으로 설계되었다.&lt;br /&gt;XML설정뿐만 아니라 XML을 대신할 수 있는 그루비(Grooby) 설정을 지원한다.&lt;br /&gt;Logback과 slf4j의 차이는 &lt;a title=&quot;요기&quot; href=&quot;https://dololak.tistory.com/632&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;요기&lt;/a&gt; 참고&lt;/blockquote&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;b&gt;spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- spring-boot&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- spring-core&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- spring-boot-starter-logging&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- logback, slf4j&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테스트 라이브러리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- spring-boot-starter-test&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- junit: 테스트 프레임워크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- mockito: 목 라이브러리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- spring-test: 스프링 통합 테스트 지원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;타임리프(Thymeleaf)&lt;/b&gt;는 템플릿 엔진으로, 뷰 템플릿이라고 부른다.&lt;br /&gt;HTML과 백단의 데이터를 조합하여 결과물을 만들어주는 엔진이라고 보면 된다. (JSP를 대체할!)&lt;br /&gt;그외 다양한 종류와 구분에 따른 &lt;a title=&quot;템플릿 엔진&quot; href=&quot;https://xzio.tistory.com/986&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;템플릿 엔진&lt;/a&gt;이 존재한다.&lt;br /&gt;( Groovy / Thymeleaf / Freemarker / Mustache )&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*spring-boot-devtools라이브러리를 추가하면, html 파일을 컴파일만 해도 재시작 없이 View파일 변경이 가능하다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;View 환경 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main/resource/static/index.html 에 내용을 작성하면, 기본 도메인 입장시 나오는 화면이 설정된다.&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;기본적으로 resource 안에 Controller를 만들어서 하나 작성하고, view단에서 링크를 설정하면 작동이 가능하다.&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;blockquote data-ke-style=&quot;style3&quot;&gt;1. 웹 브라우저에서 링크 요청&lt;br /&gt;2. 내장 톰캣 서버에서 컨트롤러 찾기&lt;br /&gt;3. 컨트롤러에서 리턴 값 반환&lt;br /&gt;4. 뷰 리졸버가 화면을 찾아서 반환값 처리 &lt;br /&gt;&amp;nbsp; &amp;nbsp; (스프링 부트의 기본 view 매핑 : resources:template / {ViewName} / .html )&lt;br /&gt;5. 뷰 리졸버에서 템플릿엔진(타임리프)이 view를 매핑하면 이 화면을 찾아서 처리&lt;/blockquote&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;뷰 리졸버(View Resolver)란&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백단에서 가져온 데이터를 View 영역으로 전달할 때, View를 어떤 것을 사용할 지 정할 수 있는데 이를 지정 역할을 하는 것이 View Resolver 이다. &lt;b&gt;View의 템플릿 종류에 따라 뷰 리졸버도 다르게 사용한다. &lt;a title=&quot;뷰 리졸버 종류와 적용&quot; href=&quot;https://isstory83.tistory.com/117&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;뷰&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타임리프의 경우 Dependency없이 HTML파일로 View를 제작할 수 있어 템플릿 종류 중 가장 인기가 많다.&amp;nbsp;&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;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;빌드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;빌드(build)&lt;/b&gt;는 소스코드로 작성한 프로젝트가 JVM, WAS에서 실행할 수 있도록 만드는 것을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;빌드 도구&lt;/b&gt;로는 Gradle / Maven이 있다.&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;명령프롬프트 (cmd)창을 켜서, 프로젝트 위치로 이동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우의 경우 gradlew.bat build 를 입력한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;737&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bej7w1/btsgEK8Yzbt/74CR2kt6rN4lDHPx35Rkb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bej7w1/btsgEK8Yzbt/74CR2kt6rN4lDHPx35Rkb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bej7w1/btsgEK8Yzbt/74CR2kt6rN4lDHPx35Rkb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbej7w1%2FbtsgEK8Yzbt%2F74CR2kt6rN4lDHPx35Rkb1%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;515&quot; height=&quot;190&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;737&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;build/libs 에 들어가서 dir를 입력해보면, 내부 파일들을 볼 수 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hello-spring-0.0.1.snapshot.jar파일이 생성된 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;889&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfv40D/btsgE7XEsUg/HjukaQKzKIy1WhCk680k41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfv40D/btsgE7XEsUg/HjukaQKzKIy1WhCk680k41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfv40D/btsgE7XEsUg/HjukaQKzKIy1WhCk680k41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcfv40D%2FbtsgE7XEsUg%2FHjukaQKzKIy1WhCk680k41%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;531&quot; height=&quot;236&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;889&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;java -jar hello-spring-0.0.1-SNAPSHOT.jar 입력하면 실행이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 &lt;b&gt;배포를 하고 싶다면 .jar파일만 실행&lt;/b&gt;하면 되는것이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;.jar 와 .war의 차이 (&lt;a title=&quot;.jar와 .war 차이&quot; href=&quot;https://velog.io/@mooh2jj/JAR-vs-WAR-%EB%B0%B0%ED%8F%AC%EC%9D%98-%EC%B0%A8%EC%9D%B4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;참고&lt;/a&gt;)&lt;br /&gt;.jar 는 JRE만 있어도 실행이 가능하지만, .war는 웹서버나 WAS가 있어야 실행 가능&lt;br /&gt;.war는 JSP/Servlet 등의 웹 관련 자원을 포함한다.&lt;br /&gt;springboot는 표준으로 .jar를 채택하고 있다.&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;그외, 스프링으로 개발 할 때 참고할 문서들 정리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;타임리프&quot; href=&quot;https://www.thymeleaf.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;타임리프&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;스프링 공식 튜토리얼&quot; href=&quot;https://spring.io/guides/gs/serving-web-content/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;스프링 공식 튜토리얼&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;스프링 부트 2.3.1 매뉴얼&quot; href=&quot;https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-template-engines&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;스프링 부트 2.3.1 매뉴얼&lt;/a&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;</description>
      <category>Backend/Spring&amp;amp;Springboot - 김영한</category>
      <category>Intellij</category>
      <category>스프링시작하기</category>
      <category>스프링환경설정</category>
      <category>인텔리제이</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/87</guid>
      <comments>https://cheerup313.tistory.com/87#entry87comment</comments>
      <pubDate>Mon, 22 May 2023 11:20:01 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] 자바 버전에 대하여 (java 8, 11, 17 버전 차이/17버전 사용이유)</title>
      <link>https://cheerup313.tistory.com/86</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우, 학원에서는 11버전을 쓰고 회사에서는 8 버전을 쓰고 궁금한 건 17버전이다 (?)&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;h2 data-ke-size=&quot;size26&quot;&gt;자바 JDK LTS버전&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.java.com/releases/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.java.com/releases/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684283126051&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;JDK Releases&quot; data-og-description=&quot;The release information on this page covers the Java SE releases that were widely distributed or significant to the development of Java. It does not cover patch releases or other one-off releases.&quot; data-og-host=&quot;www.java.com&quot; data-og-source-url=&quot;https://www.java.com/releases/&quot; data-og-url=&quot;https://www.java.com/releases/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.java.com/releases/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.java.com/releases/&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;JDK Releases&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The release information on this page covers the Java SE releases that were widely distributed or significant to the development of Java. It does not cover patch releases or other one-off releases.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.java.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 jdk 버전에 대한 내용을 모두 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEIU4X/btsgiBQDxwW/Kamgcx74WwMRYfE10GV310/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEIU4X/btsgiBQDxwW/Kamgcx74WwMRYfE10GV310/img.png&quot; data-alt=&quot;출처 :&amp;amp;amp;nbsp;https://www.java.com/releases/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEIU4X/btsgiBQDxwW/Kamgcx74WwMRYfE10GV310/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEIU4X%2FbtsgiBQDxwW%2FKamgcx74WwMRYfE10GV310%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;661&quot; height=&quot;674&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;amp;nbsp;https://www.java.com/releases/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보면 LTS가 붙은게 있고, 아닌게 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LTS는 Long Term Support로, 오랜 기간 지원하는 특별한 버전의 에디션이다. (대부분 LTS버전을 사용)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 35.3488%; height: 48px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;Java 버전&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;지원기간&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;&lt;b&gt;8 version&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;~ 2030, 12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;&lt;b&gt;11 version&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;~ 2026, 9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;&lt;b&gt;17 version&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 16px;&quot;&gt;~ 2029, 9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8,11,17 버전만 굉장히 긴 시간 지원하는 것을 알 수 있다. (8버전이 제일 김!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8버전 이후로 사용하는 것을 무조건 추천하며, 8버전 이후는 업그레이드 된 부분이 조금씩 생겼다고 볼 정도로 8버전과 그 이하 버전은 차이가 크다. 이제 버전별로 알아보자.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Java 8 (Java 1.8)&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAYWws/btsf5eQ2Oud/HAdceVaeLHcgBo92kMfupK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAYWws/btsf5eQ2Oud/HAdceVaeLHcgBo92kMfupK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAYWws/btsf5eQ2Oud/HAdceVaeLHcgBo92kMfupK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAYWws%2Fbtsf5eQ2Oud%2FHAdceVaeLHcgBo92kMfupK%2Fimg.jpg&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;338&quot; height=&quot;194&quot; data-origin-width=&quot;821&quot; data-origin-height=&quot;471&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;오라클이 java를 인수한 후 첫번째 LTS 출시 버전&lt;/li&gt;
&lt;li&gt;32비트를 지원하는 공식적인 마지막 버전&lt;/li&gt;
&lt;li&gt;유료버전(Oracle JDK)과 무료버전(Open JDK)으로 나뉨&lt;/li&gt;
&lt;li&gt;LocalDateTime과 같은 새로운 날짜,시간 API제공&lt;/li&gt;
&lt;li&gt;Unsigned Integer 계산&lt;/li&gt;
&lt;li&gt;람다식 제공&lt;/li&gt;
&lt;li&gt;Stream API제공&lt;/li&gt;
&lt;li&gt;PermGem 영역 삭제 - 참고 : &lt;a href=&quot;https://johngrib.github.io/wiki/java8-why-permgen-removed/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://johngrib.github.io/wiki/java8-why-permgen-removed/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;Static Link JNI Library 제공&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #212529;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Java 11&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blqOrJ/btsgcsOnSeT/JsX2QWiUjEU1e5pQACvK61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blqOrJ/btsgcsOnSeT/JsX2QWiUjEU1e5pQACvK61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blqOrJ/btsgcsOnSeT/JsX2QWiUjEU1e5pQACvK61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblqOrJ%2FbtsgcsOnSeT%2FJsX2QWiUjEU1e5pQACvK61%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;331&quot; height=&quot;152&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;152&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;Open JDK와 Oracle JDK 통합&lt;/li&gt;
&lt;li&gt;Oracle JDK가 구독형 유료모델로 전환&lt;/li&gt;
&lt;li&gt;G1 GC가 기본 GC로 설정 (GC : Garbage Collection)&lt;/li&gt;
&lt;li&gt;람다 지역변수 var 키워드 사용 가능&lt;/li&gt;
&lt;li&gt;컬렉션, 스트림 등에 메소드 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Java 17&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;710&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doYdEC/btsgcODDzFu/vPEkI4DfmvWj4DRktmlpy1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doYdEC/btsgcODDzFu/vPEkI4DfmvWj4DRktmlpy1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doYdEC/btsgcODDzFu/vPEkI4DfmvWj4DRktmlpy1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoYdEC%2FbtsgcODDzFu%2FvPEkI4DfmvWj4DRktmlpy1%2Fimg.webp&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;319&quot; height=&quot;177&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;710&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;&lt;b&gt;recode&lt;/b&gt; class 키워드 사용 가능&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;애플 M1 및 이후 프로세서 탑재 제품군에 대한 정식 지원&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;난수 생성 API 추가&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;봉인 클래스(Sealed Class) 정식 추가&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;String 여러줄 사용시 텍스트 블록 기능 사용 가능&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: -webkit-left;&quot;&gt;NumberFormat,&lt;span style=&quot;background-color: #f6f8fa; color: #333333; text-align: -webkit-left;&quot;&gt;DateTimeFormatter 기능 향상&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;Stream.toList() 사용 가능&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Java 버전 사용비율&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;887&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6Mjou/btsgfsNc4t6/0YsOXd3ZoyFxU2egSGOjO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Mjou/btsgfsNc4t6/0YsOXd3ZoyFxU2egSGOjO0/img.png&quot; data-alt=&quot;출처 :&amp;amp;amp;nbsp;https://www.jetbrains.com/ko-kr/lp/devecosystem-2022/java/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Mjou/btsgfsNc4t6/0YsOXd3ZoyFxU2egSGOjO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Mjou%2FbtsgfsNc4t6%2F0YsOXd3ZoyFxU2egSGOjO0%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;410&quot; height=&quot;887&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;887&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;amp;nbsp;https://www.jetbrains.com/ko-kr/lp/devecosystem-2022/java/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2022년 자료인데, 2021년에 비해 자바 8버전 사용 비율이 줄고, 17버전의 사용 비율이 현저히 증가했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java 8버전이 기간도 제일 길게 지원하고 여전히 사용량 1등인 버전이지만, Java 17버전의 사용량이 급격히 증가한 것을 보면 무시할 수 없는 수치라는 생각이 든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Java 17을 채택하는 이유&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684285675010&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 17을 도입한 이유&quot; data-og-description=&quot;안녕하세요, T플랫폼개발실 개발3팀 제이든입니다. 이번 포스팅에서는 저희팀에서 Java 17 버전을 도입하게 된 이유와 개발자 입장에서 주요하다 생각되는 업데이트 내용 및 사용사례를 소개드리&quot; data-og-host=&quot;techblog.gccompany.co.kr&quot; data-og-source-url=&quot;https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7&quot; data-og-url=&quot;https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bdUDh4/hySE7dGseO/TP2nDkcPxrQSAorKHZkkU0/img.jpg?width=435&amp;amp;height=244&amp;amp;face=0_0_435_244,https://scrap.kakaocdn.net/dn/2Hokz/hySFaVOgtD/W3I286Tg5zwYLbhrisziTk/img.png?width=1358&amp;amp;height=810&amp;amp;face=0_0_1358_810,https://scrap.kakaocdn.net/dn/b4QM1t/hySE9WT4EL/JY2h3Jk29wRQufBq8OgZk1/img.png?width=1358&amp;amp;height=763&amp;amp;face=0_0_1358_763&quot;&gt;&lt;a href=&quot;https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bdUDh4/hySE7dGseO/TP2nDkcPxrQSAorKHZkkU0/img.jpg?width=435&amp;amp;height=244&amp;amp;face=0_0_435_244,https://scrap.kakaocdn.net/dn/2Hokz/hySFaVOgtD/W3I286Tg5zwYLbhrisziTk/img.png?width=1358&amp;amp;height=810&amp;amp;face=0_0_1358_810,https://scrap.kakaocdn.net/dn/b4QM1t/hySE9WT4EL/JY2h3Jk29wRQufBq8OgZk1/img.png?width=1358&amp;amp;height=763&amp;amp;face=0_0_1358_763');&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 17을 도입한 이유&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요, T플랫폼개발실 개발3팀 제이든입니다. 이번 포스팅에서는 저희팀에서 Java 17 버전을 도입하게 된 이유와 개발자 입장에서 주요하다 생각되는 업데이트 내용 및 사용사례를 소개드리&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;techblog.gccompany.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기어때 기술 블로그를 보면, JDK 17을 도입한 이유를 다음과 같이 말하고 있다.&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;Java 서포트 기간이 길다. (LTS)&lt;/li&gt;
&lt;li&gt;신규 버전을 위한 대비용으로 도입. (java 8에서 바로 최신버전을 쓰려고 할 때보다 마이그레이션이 수월할 것으로 예상)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Spring Boot 3.0 부터는 자바 17 이상을 지원&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 중 3번째가 가장 중요한 이유라고 한다.&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;대부분 스프링 부트를 사용하지 않는 SI, 공공기관 프로젝트에서는 와닿지 않는 사용 이유라고 생각되며 회사에서 왜 1.8버전을 사용하는지 알게 되었다. (SI다님..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 미처 작성하지 못한 많은 업데이트 내용이 있으므로, 초심자라면 1.8버전부터 해서 바뀐점에 대해 숙지해가며 17버전까지 사용해 보는 것이 좋을 것 같다.&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;나도 다음 개인 프로젝트는 17버전으로 해봐야겠다 :)&lt;/p&gt;</description>
      <category>Backend/JAVA</category>
      <category>java버전</category>
      <category>jdk</category>
      <category>JDK1.8</category>
      <category>JDK11</category>
      <category>jdk17</category>
      <category>자바버전</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/86</guid>
      <comments>https://cheerup313.tistory.com/86#entry86comment</comments>
      <pubDate>Wed, 17 May 2023 10:14:03 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] JRE 와 JDK의 차이</title>
      <link>https://cheerup313.tistory.com/85</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;회사에서 자바 버전 1.8을 쓰고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 17버전을 써보고싶은데, jdk를 새로 깔까 하다가 문득 java를 설치하면 둘다 보게되는 JRE와 JDK의 차이가 궁금해졌다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LPMvw/btsgeytl9v4/xeOklTfkYgGPfT9SLwvDV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LPMvw/btsgeytl9v4/xeOklTfkYgGPfT9SLwvDV1/img.png&quot; data-alt=&quot;출처 :&amp;amp;nbsp;https://www.geeksforgeeks.org/difference-between-jdk-and-jre-in-java/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LPMvw/btsgeytl9v4/xeOklTfkYgGPfT9SLwvDV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLPMvw%2Fbtsgeytl9v4%2FxeOklTfkYgGPfT9SLwvDV1%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;900&quot; height=&quot;517&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;nbsp;https://www.geeksforgeeks.org/difference-between-jdk-and-jre-in-java/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;JRE&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Java Runtime Environment 의 약자이며, 자바 실행 환경이다. 자바로 만들어진 프로그램이 실행할 수 있는 환경을 제공한다. 하지만, JRE는 컴파일러, 디버거를 지원하지 않기 때문에 JRE만 설치되었을 때에는 개발을 할 순 없다. &lt;b&gt;java로 만들어진 프로그램을 &quot;실행&quot;&lt;/b&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H3JGy/btsf9Bk2n14/rLUEcvKAdBLGwkfVOVy0pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H3JGy/btsf9Bk2n14/rLUEcvKAdBLGwkfVOVy0pK/img.png&quot; data-alt=&quot;출처 :&amp;amp;nbsp;https://www.geeksforgeeks.org/difference-between-jdk-and-jre-in-java/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H3JGy/btsf9Bk2n14/rLUEcvKAdBLGwkfVOVy0pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH3JGy%2Fbtsf9Bk2n14%2FrLUEcvKAdBLGwkfVOVy0pK%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;900&quot; height=&quot;450&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;nbsp;https://www.geeksforgeeks.org/difference-between-jdk-and-jre-in-java/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;JDK&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot;&gt;Java Development Kit 의 약자이며, 자바 개발 도구이다. 자바로 개발을 할 수 있도록 돕는 툴으로, 컴파일러, javadoc, jar 등이 포함되어 &lt;b&gt;java로 프로그램을 &quot;개발&quot;&lt;/b&gt;할 때 사용할 수 있다. (당연히 실행도 가능)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;즉, JRE가 JDK에 포함된 것이라고 볼 수 있다. JRE &amp;lt; JDK&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;참고&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;a href=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684282754795&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 / JRE / JVM 개념 &amp;amp; 구성 원리   총정리&quot; data-og-description=&quot;자바를 처음 설치하면 C:\Program Files\Java 폴더에 아래와 같이 JDK와 JRE 가 각각 설치되는 것을 볼 수 있다. 그렇다면 이 JDK와 JRE의 역할은 무엇인지 그리고 자바 프로그램(JVM)은 어떤식으로 돌아가&quot; data-og-host=&quot;inpa.tistory.com&quot; data-og-source-url=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC&quot; data-og-url=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/0X5Yq/hySEWb7QcM/hn0dB9xPRqxMVkAzgd8zu0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/pNqkm/hySE2DpXwM/WWIObDZ8pkeilR6Sy9fyfK/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/bD93dS/hySEX3aFwa/hKAXLJSqf7SYMjBuvYDOB0/img.png?width=1280&amp;amp;height=744&amp;amp;face=0_0_1280_744&quot;&gt;&lt;a href=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/0X5Yq/hySEWb7QcM/hn0dB9xPRqxMVkAzgd8zu0/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/pNqkm/hySE2DpXwM/WWIObDZ8pkeilR6Sy9fyfK/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/bD93dS/hySEX3aFwa/hKAXLJSqf7SYMjBuvYDOB0/img.png?width=1280&amp;amp;height=744&amp;amp;face=0_0_1280_744');&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 / JRE / JVM 개념 &amp;amp; 구성 원리   총정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;자바를 처음 설치하면 C:\Program Files\Java 폴더에 아래와 같이 JDK와 JRE 가 각각 설치되는 것을 볼 수 있다. 그렇다면 이 JDK와 JRE의 역할은 무엇인지 그리고 자바 프로그램(JVM)은 어떤식으로 돌아가&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;inpa.tistory.com&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;</description>
      <category>Backend/JAVA</category>
      <category>jdk</category>
      <category>jre</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/85</guid>
      <comments>https://cheerup313.tistory.com/85#entry85comment</comments>
      <pubDate>Wed, 17 May 2023 09:20:35 +0900</pubDate>
    </item>
    <item>
      <title>[Eclipse/전자정부프레임워크] svn 버전 표시 안될때</title>
      <link>https://cheerup313.tistory.com/84</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Window - Preferences&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;General - Appearance - Label Decoration 에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;SVN 체크&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;1032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DZCMl/btsf44FZwbv/u3Fg7F35nX9zzqrzUztrAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DZCMl/btsf44FZwbv/u3Fg7F35nX9zzqrzUztrAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DZCMl/btsf44FZwbv/u3Fg7F35nX9zzqrzUztrAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDZCMl%2Fbtsf44FZwbv%2Fu3Fg7F35nX9zzqrzUztrAk%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;628&quot; height=&quot;1032&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;1032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Backend/JAVA</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/84</guid>
      <comments>https://cheerup313.tistory.com/84#entry84comment</comments>
      <pubDate>Tue, 16 May 2023 08:39:48 +0900</pubDate>
    </item>
    <item>
      <title>[자바의 신 1]클래스 / 메소드 / 컴파일 / 객체</title>
      <link>https://cheerup313.tistory.com/83</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1단원 - 프로그래밍이란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;클래스와 메소드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메소드&lt;/b&gt;는 행동하는 행위&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클래스&lt;/b&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;클래스의 상태는 클래스의 특성을 결정짓는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2단원 - Hello God Of Java&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;컴파일, 메소드 필수 요소&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;컴파일&lt;/b&gt;은 텍스트로 된 파일을 컴파일러가 컴퓨터가 이해할 수 있는 언어로 변경하여 실행하는 것을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.java 파일을 컴파일하면 .class파일 생성하고 .class파일을 JVM에서 읽어 OS에서 실행한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;b&gt;javac 파일명.java&lt;/b&gt; : 컴파일하는 명령어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;b&gt;&amp;nbsp;java 파일명&lt;/b&gt; : 컴파일 된 .class를 찾아 실행하는 실행 명령어&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;메소드 선언시 필수 3가지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 리턴타입 2. 메소드이름 3. 메소드 내용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3단원 - 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;클래스와 객체&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1683550248271&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;클래스명 객체명 = new 생성자&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 실행하면 객체를 생성한다. 매개변수가 없는 생성자는 &quot;기본생성자&quot; 라고 부른다.&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;
&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;클래스와 객체의 차이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;추상개념으로 고유한 특징을 가지고 있는 설계도, 틀&lt;/span&gt; 이라고 볼 수 있다. 객체의 field(속성)와 method(행위)로 이루어져 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;객체&lt;/b&gt;는 &lt;span style=&quot;background-color: #f6e199;&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;i&gt;클래스와 객체의 차이도 어버버거리면서 면접에서 대답을 못할 것 같다는 생각이 드니까, 정리를 하게된다..&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;i&gt;당연히 알고 있어야 하는 개념이니 헷갈리지 말아야겠다.&amp;nbsp;&lt;/i&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;</description>
      <category>Backend/JAVA</category>
      <category>객체</category>
      <category>자바의신</category>
      <category>클래스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/83</guid>
      <comments>https://cheerup313.tistory.com/83#entry83comment</comments>
      <pubDate>Mon, 8 May 2023 22:00:02 +0900</pubDate>
    </item>
    <item>
      <title>[AWS Summit Seoul 2023] AWS Summit Seoul 후기 (Day2)</title>
      <link>https://cheerup313.tistory.com/82</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;0. AWS Summit 2023 신청&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발바닥 유투브를 구독하여 보고 있던 도중, AWS Summit 컨퍼런스가 열린다는 사실을 알게 되었다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;691&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7k3B2/btsd4c1Nvdk/PYsrNxm0eKKd8fObCCko41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7k3B2/btsd4c1Nvdk/PYsrNxm0eKKd8fObCCko41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7k3B2/btsd4c1Nvdk/PYsrNxm0eKKd8fObCCko41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7k3B2%2Fbtsd4c1Nvdk%2FPYsrNxm0eKKd8fObCCko41%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;608&quot; height=&quot;691&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;691&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5월 3일은 산업 업종별 강연, 5월 4일은 기술 주제별 강연이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;AWS Summit Seoul 2023 - Agenda1.png&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;2021&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5MZ0a/btsec9JZMsG/Fw9CZO6uZb6EEgVbHY8xkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5MZ0a/btsec9JZMsG/Fw9CZO6uZb6EEgVbHY8xkK/img.png&quot; data-alt=&quot;AWS 강연 표. 확대하면 더 자세히 보여요 :)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5MZ0a/btsec9JZMsG/Fw9CZO6uZb6EEgVbHY8xkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5MZ0a%2Fbtsec9JZMsG%2FFw9CZO6uZb6EEgVbHY8xkK%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;2040&quot; height=&quot;2021&quot; data-filename=&quot;AWS Summit Seoul 2023 - Agenda1.png&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;2021&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AWS 강연 표. 확대하면 더 자세히 보여요 :)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 5월 2일까지 고민하다가.. 5월 4일에 가기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우 AWS를 사용하여 뭘 해본적이 없기 때문에.. 거의 백지의 상태로 참여하여&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입문기술 위주로 들으려고 Day 2( 5/4) 에 참여하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 강연 전 네임택 받기 / 이벤트홀과 강연홀&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우 봉은사역에서 내려서 코엑스를 가게 되었고, 파란색 별마당 길을 따라 걷다 보면 1층으로 올라가는 곳이 보인다. 거기서 올라가서 안내 스태프 분을 따라 가다보니 .. 이런 곳을 발견했다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;000.png&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;803&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EPCze/btsepNsJaUg/hSOjrs3qEfxf3PJtF9UfP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EPCze/btsepNsJaUg/hSOjrs3qEfxf3PJtF9UfP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EPCze/btsepNsJaUg/hSOjrs3qEfxf3PJtF9UfP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEPCze%2FbtsepNsJaUg%2FhSOjrs3qEfxf3PJtF9UfP0%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;1072&quot; height=&quot;803&quot; data-filename=&quot;000.png&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;803&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두근두근  AWS 행사장으로 가는길이다.&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;나는 첫째날에 참여하지 않고 둘째날에만 참여했는데, 늦게 참여해서 그런건지 아니면 AWS 멤버십이 아닌 회사여서 그런건지.. 다른 분들과 다른 모양의 네임택을 받았다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.png&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;805&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceeyD4/btseqm9lu9i/Ci1ASJuEMFV0IKnwf1ME3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceeyD4/btseqm9lu9i/Ci1ASJuEMFV0IKnwf1ME3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceeyD4/btseqm9lu9i/Ci1ASJuEMFV0IKnwf1ME3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceeyD4%2Fbtseqm9lu9i%2FCi1ASJuEMFV0IKnwf1ME3k%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;606&quot; height=&quot;805&quot; data-filename=&quot;001.png&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;805&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;p data-ke-size=&quot;size16&quot;&gt;행사장의경우 이벤트홀(B)는 각종 IT회사들이 부스를 차려 이벤트도 하고, 회사의 서비스에 대한 각종 설명을 들어볼 수 있 다! (솔루션 및 제품 상담도 가능하나, 나는 일개 회사의 사원으로.. 그런건 할 수가 없었다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oxgzH/btsejKX45tE/dfNoOq5KGchl6XpsCOSrvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oxgzH/btsejKX45tE/dfNoOq5KGchl6XpsCOSrvK/img.png&quot; data-alt=&quot;AWS Summit 2023 이벤트홀 입구&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oxgzH/btsejKX45tE/dfNoOq5KGchl6XpsCOSrvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoxgzH%2FbtsejKX45tE%2FdfNoOq5KGchl6XpsCOSrvK%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;1075&quot; height=&quot;809&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;1075&quot; data-origin-height=&quot;809&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AWS Summit 2023 이벤트홀 입구&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네임택 받고 바로 B홀로 돌진했더니, 내가 생각한 강연장이 아닌 이벤트홀이여서 굉장히 당황함 ㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;들어가자마자 왼쪽은 SK쉴더스, 오른쪽은 롯데정보통신이었다.&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;다시 물어물어 나왔더니, B홀에서 더 가야 강연을 들을 수 있는 곳이 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;003.png&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDH7ou/btseqs2E5xG/3iEgw66GlcydVAn6K394KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDH7ou/btseqs2E5xG/3iEgw66GlcydVAn6K394KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDH7ou/btseqs2E5xG/3iEgw66GlcydVAn6K394KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDH7ou%2Fbtseqs2E5xG%2F3iEgw66GlcydVAn6K394KK%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;1076&quot; height=&quot;809&quot; data-filename=&quot;003.png&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;809&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;왼쪽은 설문 코너 같은거였고, 오른쪽은 이벤트였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_140525997_15.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rIOzg/btseqcsgZ60/Igk7huHK8jSZWNn2JdKZZ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rIOzg/btseqcsgZ60/Igk7huHK8jSZWNn2JdKZZ1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rIOzg/btseqcsgZ60/Igk7huHK8jSZWNn2JdKZZ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrIOzg%2FbtseqcsgZ60%2FIgk7huHK8jSZWNn2JdKZZ1%2Fimg.jpg&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;1440&quot; height=&quot;1081&quot; data-filename=&quot;KakaoTalk_20230508_140525997_15.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&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;진짜 신기한건 7시출근 4시퇴근이 11시출근 8시퇴근보다 훨씬 많았다는 사실이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 아침형 인간인건지, 아니면 출퇴근시간대를 피하고싶어서인지 궁금..ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 회사에서 7시 출근이 가능만 하다면 무조건 하고싶다 (완전 아침형인간 그자체)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;004.png&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;727&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mCyzB/btsejK4NXdR/Sv8klamrOywr6OUSmv8Fb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mCyzB/btsejK4NXdR/Sv8klamrOywr6OUSmv8Fb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mCyzB/btsejK4NXdR/Sv8klamrOywr6OUSmv8Fb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmCyzB%2FbtsejK4NXdR%2FSv8klamrOywr6OUSmv8Fb1%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;607&quot; height=&quot;727&quot; data-filename=&quot;004.png&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;727&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 이벤트는 AWS Summit에 몇번째 참가인지 물어보고, 그에 맞는 공을 뽑아 내용물을 주는거였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 사실 1번째였지만.. 1번째가 비워져있어서 2번째라고 하고 받았다  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 스티커 두장과, 오트밀 과자가 들어있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 본격 강연&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2-1. 가격은 저렴, 성능은 최대로! 달라진 Amazon EC2 알아보기&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_140525997_28.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLRdaP/btsep8cyxbR/uK8rdJunFnDhlxtNQRVS2k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLRdaP/btsep8cyxbR/uK8rdJunFnDhlxtNQRVS2k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLRdaP/btsep8cyxbR/uK8rdJunFnDhlxtNQRVS2k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLRdaP%2Fbtsep8cyxbR%2FuK8rdJunFnDhlxtNQRVS2k%2Fimg.jpg&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;1440&quot; height=&quot;1081&quot; data-filename=&quot;KakaoTalk_20230508_140525997_28.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 처음 들은 강연은 Amazon EC2 알아보기 였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 서비스에대해 아는게 거의 없다시피 하기 때문에 입문 강의중에서 선택했다.&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;Amazon EC2란?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;A&lt;/b&gt;mazon &lt;b&gt;E&lt;/b&gt;lastic &lt;b&gt;C&lt;/b&gt;ompute &lt;b&gt;C&lt;/b&gt;loud 의 줄임말으로, AWS 클라우드에서 확장이 가능한 컴퓨팅 용량을 제공하는 서비스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리적인 서버를 두고 애플리케이션을 배포할 필요 없이, 가상 서버를 구축하여 사용량 만큼 금액을 내면 되는 편리한 서비스라고 볼 수 있다. &lt;s&gt;가벼운 경량 애플리케이션이나, 초기 스타트업 같은 경우에 사용량 만큼만 요금을 지불하면 되기 때문에 합리적인 선택이라고 볼 수 있다.&amp;nbsp;&lt;/s&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;EC2는 카테고리, 성능, 옵션 등을 선택할 수 있는데 아래의 표 내용에서 선택할 수 있다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 350px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;&lt;b&gt;카테고리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;&lt;b&gt;옵션&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 330px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 330px;&quot;&gt;&lt;b&gt;M&lt;/b&gt; : 범용&lt;br /&gt;&lt;b&gt;T&lt;/b&gt; : 버스팅 가능&lt;br /&gt;&lt;b&gt;C&lt;/b&gt; : 컴퓨팅 집약적&lt;br /&gt;&lt;b&gt;R&lt;/b&gt; : 메모리 집약적&lt;br /&gt;&lt;b&gt;I&lt;/b&gt; : 스토리지(높은 I/O)&lt;br /&gt;&lt;b&gt;D&lt;/b&gt; : 고밀도 스토리지&lt;br /&gt;&lt;b&gt;P&lt;/b&gt; : GPU 컴퓨팅&lt;br /&gt;&lt;b&gt;G&lt;/b&gt; : 그래픽 집약적&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 330px;&quot;&gt;프로세서 선택&lt;br /&gt;&lt;b&gt;g&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;: AWS&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Graviton&lt;br /&gt;&lt;b&gt;i&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: Intel&lt;/span&gt;&lt;br /&gt;&lt;b&gt;a&lt;/b&gt; : AMD&lt;br /&gt;&lt;br /&gt;빠른프로세서&lt;br /&gt;&lt;br /&gt;높은 메모리 공간&lt;br /&gt;&lt;br /&gt;인스턴스 스토리지&lt;br /&gt;&lt;br /&gt;가속 컴퓨팅&lt;br /&gt;&lt;br /&gt;네트워킹&lt;br /&gt;&lt;br /&gt;베어메탈&lt;br /&gt;&lt;br /&gt;크기&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 330px;&quot;&gt;Elastic Block Store(EBS)&lt;br /&gt;&lt;br /&gt;Elastic Fabric Adapter&lt;br /&gt;&lt;br /&gt;Elastic Inference&lt;br /&gt;&lt;br /&gt;Elastic Graphics&lt;br /&gt;&lt;br /&gt;Linux, Unix, Windows, macOS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게나 인스턴스에 대한 선택권이 많다.. 이 모두를 조합하면 600가지 이상의 인스턴스 유형이 나오며,&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;
&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;b&gt;C5d.2xlarge&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;C&lt;/span&gt;&lt;/b&gt; : 인스턴스 패밀리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;5&lt;/span&gt;&lt;/b&gt; :&amp;nbsp; 인스턴스 세대&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;d&lt;/span&gt;&lt;/b&gt; : 추가기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2xlarge&lt;/b&gt;&lt;/span&gt; : 인스턴스 크기(size)&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;인스턴스 세대는 말그대로 인스턴스의 세대를 의미한다. 아마존 EC2의 경우 무조건&lt;b&gt; &quot;최신세대&quot;&lt;/b&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;b&gt;d&lt;/b&gt; : 로컬 NVMe SSD 스토리지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;e&lt;/b&gt; : 동급 저렴한 메모리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;n&lt;/b&gt; : 네트워크 특화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;z&lt;/b&gt; : 동급 최강 CPU&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;g&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;: AWS&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Graviton&lt;br /&gt;&lt;b&gt;i&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: Intel&lt;/span&gt;&lt;br /&gt;&lt;b&gt;a&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: AMD&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mac&lt;/b&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;AWS Nitro 시스템&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nitro 시스템은 클라우드에서 전용 하드웨어 및 경량 하이퍼바이저의 조합으로 강력한 보안, 성능 및 혁신을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하드웨어에 Nitro를 적용하여 고성능, 보안이 중요한 프로그램에서 사용하기 적합하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Card : vpc네트워킹&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안칩 : 가상화 , 보안&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하이퍼바이저 : 메모리 및 cpu할당관리. 베어메탈 수준의 성능을 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 15%이상의 성능 향상을 보임&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;b&gt;삼성전자의 x86 -&amp;gt; ARM 기반 Graviton 으로 전환 사례&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EKS+EC2(x86)모델, Java 8, Spring, Alpine Linux를 사용하고 있었던 삼성전자에서 Graviton (AWS에서 개발) 을 적용한 사례에 대해 들을 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도입한 이유는, 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 비용절감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. ARM 기반 프로세서 약진&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. ESG경영 동참(Graviton은 저전력 인스턴스)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 같은 가격이면 최신 EC2를 사용하는것이 가성비  &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;어플리케이션 용 EC2를 x86에서 ARM으로 바꾸려면 해야할 단계들이 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 호환성 확인 - 수동 소프트웨어의 경우 설치 내용을 확인해야하고, 자동 소프트웨어는 설치 시 알아서 체크해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 멀티빌드 - 도커 buildx 사용하면 x86과 ARM기반을 한번에 빌드할 수 있다. &lt;br /&gt;QEMU emulator를 이용한다. 이미지 빌드 후 ECR에 업로드한다. 하드웨어와 상관 없이 다양한 플랫폼을 제공한다.&amp;nbsp;&lt;br /&gt;3. 트러블 슈팅 - open JDK의 버전을 up, Alpine Linux의 버전도 최신으로 up. 하지만 오류가 또 발생했다고 한다. jdk 버그 리포트에 따르면 ARM64와 관련된 것이 많았다고 하며, k8s POD Dependency를 최신으로 업데이트 한다.&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;이로 인해 얻을 수 있는 효과는, API 서버 응답 속도가 개선되고, 인스턴스 비용이 15%정도 절감되었다고 한다.&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;b&gt;2-2. AWS의 개발자를 위한 신규 서비스 소개 - Amazon CodeCatalyst &amp;amp; Amazon CodeWhisperer&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_140525997_14.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZr6yD/btsedcgmYzF/ZhCLPtXDTS4VuERLPHMBq0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZr6yD/btsedcgmYzF/ZhCLPtXDTS4VuERLPHMBq0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZr6yD/btsedcgmYzF/ZhCLPtXDTS4VuERLPHMBq0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZr6yD%2FbtsedcgmYzF%2FZhCLPtXDTS4VuERLPHMBq0%2Fimg.jpg&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;1440&quot; height=&quot;1081&quot; data-filename=&quot;KakaoTalk_20230508_140525997_14.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 강연은 aws의 솔루션 서비스에 대한 소개였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자들이 &quot;개발&quot; 자체에 몰입하기 위해 편리성을 추구하는 솔루션들이라고 보면 된다.&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: #333333;&quot;&gt;&lt;b&gt;Amazon CodeCatalyst&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 블루프린트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트에 필요한 통합 도구 몇분만에 설정 가능 / AWS 모범 사례 사용하여 바로 배포, CI&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;CD 파이프라인과 샘플코드 제공 / 기존 프로젝트를 가져와 다양한 3rd Party 도구들로 교체 가능 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;2. 워크플로우&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;Visual Editor 통한 시각적 파이프라인 제공, yaml코드로 구성 가능 / AWS관리형 컴퓨트 사용한 유연한 동작 / 테스트, 리포트, CI&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;CD, 인프라 등 구축에 필요한 구성 자동화 하여 파이프라인 생성 가속&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;등의 기능을 가지고 있는 어플리케이션 관리,배포 를 위한 통합 솔루션&lt;/span&gt;&lt;/span&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;&lt;b&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Amazon Code Wisperer&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;ML(머신러닝) 기반 개발자도구로, 주석과 주변 코드를 기반으로 코드를 추천해주는 개발자의 협업 도우미&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;IDE에 코드를 작성하면 자동으로 Code Wisperer에 전송된다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;기능&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;1. 코드 제안 - 1줄부터 완전한 함수까지, 개발자의 코드를 분석하여 코드 스타일대로 적용하고, 테스트코드도 작성 가능&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;2. AWS API의 경우 더 강력한 기능 제공&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;3. 책임감 있는 AI/ML (일자리를 위협하지 않는.. 뭐 이런 뜻인듯)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;세상이 정말 많이 발전했다는 생각이 들었다.. 개발자의 코드 스타일까지 분석해준다니.&lt;/span&gt;&lt;/span&gt;&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;코드 위스퍼러의 경우 개인 개발자에게 무료로 제공되고 있으니, 사용법을 검색해서 사용해보면 너무 좋을 것 같다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/s&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;b&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;2-3. 성공적인 AWS RDS 마이그레이션을 위한 여정과 필수 고려사항&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_140525997_10.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHnqKH/btseqKJhR1N/QQfLqP59SdU3b8oU09IBI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHnqKH/btseqKJhR1N/QQfLqP59SdU3b8oU09IBI1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHnqKH/btseqKJhR1N/QQfLqP59SdU3b8oU09IBI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHnqKH%2FbtseqKJhR1N%2FQQfLqP59SdU3b8oU09IBI1%2Fimg.jpg&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;1440&quot; height=&quot;1081&quot; data-filename=&quot;KakaoTalk_20230508_140525997_10.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이번 강연의 경우 ETEVERS 라는 회사에서 설명하게 되었다. 이번에는 대기를 잘해서 앞자리에 앉았다 ㅎㅎ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;에티버스라는 그룹을 몰랐는데, 알고보니 천명이 다되는 큰 IT회사이고, 영우디지탈 에서 이름을 바꿨다고 한다.&lt;/s&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;&lt;b&gt;1. Amazon의 DB 서비스&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon RDS와 Aurora를 비교해주셨다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon RDS의 경우 RDBMS들에 대해 지원을 한다. (MySQL, PostgreSQL, MariaDB, MSSQL, Oracle..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스토리지의 확장성은 64TiB까지 가능하다고 한다. (mssql은 16TiB)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가격은 인스턴스의 유형과 스토리지의 볼륨 크기에 따라 결정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vs&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Aurora의 경우 MySQL, PostgreSQL에 대해 지원하고, Amazon RDS에 비해 더좋은 성능과 안정성을 보장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스토리지 확장성도 128 TiB까지 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가격은 인스턴스 유형과 스토리지의 실사용크기, IO요청에 따라 결정된다.&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;이렇게만 봤을 때 Amazon RDS는 할당된 DB크기만큼 요금을 책정하기 때문에 설계를 잘 해야하지만, Aurora는 DB의 실사용크기에 따라 가격을 책정하기 때문에 더 합리적이라고 볼 수 있다.&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;Amazon RDS CUSTOM for Oracle의 경우 추가 OS와 DB의 커스텀 설정이 필요한 경우에 사용할 수 있는 옵션이다.&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;2. DB Migration Step&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이그레이션이란, DB를 옮기는 것을 말한다. DB에서 DB로 옮기는 것도, 코드로 작성한 클래스를 DB 테이블로 옮기는 것도 모두 포함된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 기존의 온프레미스 DB -&amp;gt; Amazon RDS로의 마이그레이션을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Assess&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 소스 DB 환경에 대한 분석 (인프라환경, 데이터용량&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;종류, 연계환경, 요구 조건, 영향, 리스크)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;nbsp;- 타겟 AWS DB 환경 분석&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;* 가장 중요한 단계&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;2. Plan&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;- 데이터 용량, 이관 기간, 다운타임, 실행 난이도 등을 전체적으로 고려하여 계획을 수립한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;(이관 전략&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;기술, 테스트&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;검증 계획, 이행 계획, 롤백 계획)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;3. Test&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;- 실제 데이터로 이관 테스트를 진행한다. (검증, 시간 측정, 튜닝 요소 점검, 2~3회 테스트 권장)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;4. Execute&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;- 계획에 맞추어 DB 이관을 진행한다. (이관 진행, 상황 모니터링, 검증 진행, 시스템 오픈, 모니터링, 운영 모드 진입)&lt;/span&gt;&lt;/span&gt;&lt;/span&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;&lt;b&gt;3. DB Migration시 고려사항&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백업(필수!) , 호환성 점검 , 이관방법 제약사항 숙지, 라이선스 As-Is -&amp;gt; To-be 변화 준비 , 3rd파티 SW이관 대체방안 마련, 충분한 시간 확보&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;4. DB Migration 툴&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. OS COMMAND&lt;/b&gt; - OS, DB 버전이 동일하고 데이터 크기가 크지 않은 경우 쉽게 이관이 가능한 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 장점 : 간단한 OS명령 (scp, sftp) 만 사용한 이전 가능, 쉬운 사용법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 단점 : 파일 복사에 필요한 서비스 중단 시간은 파일 용량에 비례, OS/플랫폼&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;DB버전&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;설정 등의 환경이 일치해야함,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 중간에 끊김을 대비해야함&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. DBMS PROVIDED TOOLS&lt;/b&gt; - DBMS자체에서 제공해주는 도구로 버전이 다른 환경으로 이관이 가능한 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 장점 : OS/플랫폼&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;&lt;/span&gt;DB버전이 다른 환경에서 이전 가능, 특정 대상 테이블만 선별하여 이전 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 단점 : 시간이 많이 소요되며 이에 따른 서비스 중단 필요 , 타 DB로의 이전은 사용 불가, 버전차이 심하면 실패확률 증가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; ex ) Oracle Data Dump / MySQL Dump&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. CHANGE DATA CAPTURE TOOLS&lt;/b&gt; - CDC도구는 동일 또는 이기종 DB간 실시간 복제 기능 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 장점 : OS/플랫폼&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;middot;DB 달라도 이전 가능, 대용량 이전 가능, 제품에따라 선별 이전 가능, 실시간에 가까운 Ongoing복제 가능(다운타임 최소화)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp; 단점 : 상용 제품일 경우 도입 비용 발생, 제품별로 지원되지 않는 DB 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp; ex ) Oracle golden gate / Shareplex Quest / AWS Database Migration Service&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;5. DB Migration 케이스 (예시)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 온프레미스 MSSQL -&amp;gt; AWS MySQL RDS&lt;/b&gt; (AWS도구-SCT,DMS 사용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 스키마 툴을 사용하여 이전. 이기종 DB 전환이므로 쿼리에 대한 튜닝과 로직 수정 진행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MSSQL의 경우 'DBO.테이블명' 이런식으로 쓰이기 때문에 테이블명에 DBO를 일일이 빼주어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로시저의 경우 메뉴얼 작업이 필요했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 온프레미스 Oracle -&amp;gt; AWS Oracle RDS&lt;/b&gt; (CDC 도구 사용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전을 12-&amp;gt;19로 업데이트 하였고, GoldenGate 허브를 이용하였다. RDS를 없애고 HA로 가다보니 Active 인스턴스는 기존 RAC환경의 모든 처리를 처리할 수 있어야 하고, 로직에서도 타깃 DB에 대한 수정이 필요했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전 업그레이드에 따른 쿼리 튜닝이 필요했으며, CDC도구가 만능이 아니기에 오류 발생시 수작업으로 수정해야 했다.&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;이 강연의 경우 AWS에서 다루고 있는 DB에 대해서도 알게 되었고, 이관 방법이나 주의사항을 직접 경험해보고 사례를 들어 설명해주어 이해가 쏙쏙 됐다. DB이관은 아무래도 인프라 담당자가 하게 될 것 같지만, 유익한 시간이었다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 점심&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 강연을 들으러 갔을때, Lunch라고 써있는 팔찌를 주셨다. 첫 강연이 끝난 후에 자리에 앉아있으면 알아서 나눠주신다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팔찌를 다시 가져가면서 런치키트(도시락)을 나누어 주었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_140525997_18.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1026&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdUoj2/btserCREo7U/kPqk46TbilkLkQCByaHYwK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdUoj2/btserCREo7U/kPqk46TbilkLkQCByaHYwK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdUoj2/btserCREo7U/kPqk46TbilkLkQCByaHYwK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdUoj2%2FbtserCREo7U%2FkPqk46TbilkLkQCByaHYwK%2Fimg.jpg&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;1440&quot; height=&quot;1026&quot; data-filename=&quot;KakaoTalk_20230508_140525997_18.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1026&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_140525997_17.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2AytS/btselRCUoSF/1pBS4FYmZZxOkTKGZSUax1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2AytS/btselRCUoSF/1pBS4FYmZZxOkTKGZSUax1/img.jpg&quot; data-alt=&quot;Day 2 Lunch Kit&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2AytS/btselRCUoSF/1pBS4FYmZZxOkTKGZSUax1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2AytS%2FbtselRCUoSF%2F1pBS4FYmZZxOkTKGZSUax1%2Fimg.jpg&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;1440&quot; height=&quot;1081&quot; data-filename=&quot;KakaoTalk_20230508_140525997_17.jpg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Day 2 Lunch Kit&lt;/figcaption&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;뭔가 학회에서 나눠줄 것 같은 도시락이다. 샌드위치가 3종류나 있어서 대식가도 배부를 수 밖에 없는 양이다..&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 이벤트홀 - 부스&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 명찰을 나눠주고 다짜고짜 들어갔던 이벤트홀에 강연 3개만 듣고 다시 갔다.&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;나는 처음에 뭣도 모르고 있는대로 다 받아서 가방을 5개나 받아버렸다..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쩌다가 부스에서 네이버페이 만원권이 당첨됐는데, 월요일에 문자로 발송해준다고했는데 6시인데도 안왔다 흑&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_180113280.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUiJNp/btseqwErqWe/AlKy5OKCc0TvBnyz2GMlP0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUiJNp/btseqwErqWe/AlKy5OKCc0TvBnyz2GMlP0/img.jpg&quot; data-alt=&quot;aws에서 주는 친환경 커피박 컵과 받은 스티커들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUiJNp/btseqwErqWe/AlKy5OKCc0TvBnyz2GMlP0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUiJNp%2FbtseqwErqWe%2FAlKy5OKCc0TvBnyz2GMlP0%2Fimg.jpg&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;1080&quot; height=&quot;1440&quot; data-filename=&quot;KakaoTalk_20230508_180113280.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;aws에서 주는 친환경 커피박 컵과 받은 스티커들&lt;/figcaption&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;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20230508_140525997.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwrJDy/btseqbURUef/VA6X1UdJtzIO3czwjQEHz1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwrJDy/btseqbURUef/VA6X1UdJtzIO3czwjQEHz1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwrJDy/btseqbURUef/VA6X1UdJtzIO3czwjQEHz1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwrJDy%2FbtseqbURUef%2FVA6X1UdJtzIO3czwjQEHz1%2Fimg.jpg&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;504&quot; height=&quot;672&quot; data-filename=&quot;KakaoTalk_20230508_140525997.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막은 모르는사람에게 찍어달라고 한 나 로 마무리 !&lt;/p&gt;</description>
      <category>기타/IT 컨퍼런스</category>
      <category>AWS</category>
      <category>AWSSUMMIT</category>
      <category>IT컨퍼런스</category>
      <category>IT행사</category>
      <category>컨퍼런스</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/82</guid>
      <comments>https://cheerup313.tistory.com/82#entry82comment</comments>
      <pubDate>Mon, 8 May 2023 18:04:42 +0900</pubDate>
    </item>
    <item>
      <title>[SQLD] 비전공 현업자 1일 벼락치기 합격 후기</title>
      <link>https://cheerup313.tistory.com/81</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;553&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfdIgv/btsbUqtJ9ni/WenNk3BsqeFZg44I6NZjWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfdIgv/btsbUqtJ9ni/WenNk3BsqeFZg44I6NZjWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfdIgv/btsbUqtJ9ni/WenNk3BsqeFZg44I6NZjWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfdIgv%2FbtsbUqtJ9ni%2FWenNk3BsqeFZg44I6NZjWK%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;553&quot; height=&quot;357&quot; data-origin-width=&quot;553&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3PlKU/btsbT1HE1zi/yf35AM92bL4puT0YYTgiz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3PlKU/btsbT1HE1zi/yf35AM92bL4puT0YYTgiz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3PlKU/btsbT1HE1zi/yf35AM92bL4puT0YYTgiz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3PlKU%2FbtsbT1HE1zi%2Fyf35AM92bL4puT0YYTgiz0%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;995&quot; height=&quot;349&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;349&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;응시이유&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;시험은 3월 19일이었고, 정보처리기사를 보기 전에 잠깐 맛보기 공부를 하자는 마음으로 신청하여 응시하였다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실제로 취업을 해서 개인 약속이 많았고, 공부를 전혀 하지 못했다..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;SQLP를 따고 싶은데, 그전에 워밍업 한다는 마음으로 응시하였다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;체감난이도&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;SI에 있으면서 쿼리 좀 만져봤다 하는 분들, 국비 학원 다닐때 sql 제대로 들었다 하는 사람은 절대 떨어질 수 없는 시험이다. 내가 쉬운 때에 봐서 그런진 모르겠지만.. (난이도모름) 개인적으로 진짜 사용하는 내용들이 많이 나와서 재밌게 풀었던 것 같다. 또 대부분 객관식이기 때문에 찍을수도 있고? (&lt;b&gt;객관식45문제 + 주관식 5문제&lt;/b&gt; 입니다)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;현업 2달이 지난 시점에 시험을 봤고 결과는 &lt;b&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;합격&lt;/span&gt;&lt;/b&gt;이었다!&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;준비 꿀팁&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;sql에 자신이 없는 사람은, 기본서를 하나 보기를 권장한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 그게 아니라 국비나 부트캠프에서 sql부분 제대로 들었고,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;쿼리 몇개 작성 해보신 분들은 노랑이 책을 구매해서 하기를 권장한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwFd7L/btscfziqW8h/L3icLHhzKwkRNDjMSs1Dvk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwFd7L/btscfziqW8h/L3icLHhzKwkRNDjMSs1Dvk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwFd7L/btscfziqW8h/L3icLHhzKwkRNDjMSs1Dvk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwFd7L%2FbtscfziqW8h%2FL3icLHhzKwkRNDjMSs1Dvk%2Fimg.jpg&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;458&quot; height=&quot;645&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;노랑이 책은 이거고, 기출 문제가 굉~장히 많다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이건 정공법이고..&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;나의 개인적인 꿀팁은&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/c/SQL%EC%A0%84%EB%AC%B8%EA%B0%80%EC%A0%95%EB%AF%B8%EB%82%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.youtube.com/c/SQL%EC%A0%84%EB%AC%B8%EA%B0%80%EC%A0%95%EB%AF%B8%EB%82%98&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682251514563&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;profile&quot; data-og-title=&quot;SQL전문가 정미나&quot; data-og-description=&quot;안녕하세요, SQL전문가 정미나입니다. 이 채널의 궁극적인 목표는 전공자 포함 Database에 관심이 있는 초보자분들께 조금이나마 도움을 드리는 것입니다. 지금은 어떨지 모르겠지만 제가 학부생&quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://www.youtube.com/c/SQL%EC%A0%84%EB%AC%B8%EA%B0%80%EC%A0%95%EB%AF%B8%EB%82%98&quot; data-og-url=&quot;https://www.youtube.com/channel/UCoc7x15NFZ97UbwfdmMZxlw&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/disMyI/hySosPd6xR/SYmKDNdiwomkiQ3Yi0E7wk/img.jpg?width=900&amp;amp;height=900&amp;amp;face=279_223_691_671,https://scrap.kakaocdn.net/dn/R7HtK/hySowD5Fuh/qPlKc4fuQ122gOxt623N61/img.jpg?width=900&amp;amp;height=900&amp;amp;face=279_223_691_671&quot;&gt;&lt;a href=&quot;https://www.youtube.com/c/SQL%EC%A0%84%EB%AC%B8%EA%B0%80%EC%A0%95%EB%AF%B8%EB%82%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.youtube.com/c/SQL%EC%A0%84%EB%AC%B8%EA%B0%80%EC%A0%95%EB%AF%B8%EB%82%98&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/disMyI/hySosPd6xR/SYmKDNdiwomkiQ3Yi0E7wk/img.jpg?width=900&amp;amp;height=900&amp;amp;face=279_223_691_671,https://scrap.kakaocdn.net/dn/R7HtK/hySowD5Fuh/qPlKc4fuQ122gOxt623N61/img.jpg?width=900&amp;amp;height=900&amp;amp;face=279_223_691_671');&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;SQL전문가 정미나&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요, SQL전문가 정미나입니다. 이 채널의 궁극적인 목표는 전공자 포함 Database에 관심이 있는 초보자분들께 조금이나마 도움을 드리는 것입니다. 지금은 어떨지 모르겠지만 제가 학부생&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.youtube.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SQL전문가 정미나 유투브&lt;/b&gt;를 강추한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;문제를 하나하나 풀이하는데 , 보면서 아는문제면 그냥 넘기고 모르면 들으면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;전날에 이분 영상 20개정도 보고 갔더니 노랭이책 안풀고 합격함Vv&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타/자격증</category>
      <category>sqld</category>
      <category>sqlp</category>
      <category>자격증</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/81</guid>
      <comments>https://cheerup313.tistory.com/81#entry81comment</comments>
      <pubDate>Sun, 23 Apr 2023 21:08:40 +0900</pubDate>
    </item>
    <item>
      <title>[정보처리기사 실기] 2023 1회 정보처리기사 실기 시험 후기</title>
      <link>https://cheerup313.tistory.com/80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시험의 특징&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2022년과 다르게 &lt;b&gt;코딩문제 많음 + 기출문제 4개 출제 + 약술형없음&lt;/b&gt; =&amp;gt; &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;역대급 쉬웠던 시험&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-3240774236919490&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&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 data-ke-size=&quot;size16&quot;&gt;(수제비 Final 실전 모의고사 1~ 10회 전부 4-50점, 기출 40- 55점 사이였음..)&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;하지만 시험을 풀 당시에는 ?? 아예 다른 시험의 느낌이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출이 되게많고.. 코딩 문제가 많아서 현업자와 전공자에게 굉장히 유리했을것으로 보이는 시험이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 코딩문제 \n을 못보고 개행을 안해서 틀리거나, 단답은 정답이 기억이 안나는 등 ..&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;1문제당 5점이고, 1문제 안에 3개나 2개로 나눠진 문제의 경우 부분점수를 준다고 하는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1문제를 2/3개 맞추고, 1문제를 1/3 맞추면.. 이건 5점을 받으려나? 실제로 합격자가 많을 것 같아 부분점수로 합격자를 조절할 거같다는 생각이 들어 굉장히 불안하다. (확실히 맞은게 11개임.. )&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;&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;하나 확실한 것은 &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;C,Java의 상속 / 부모 자식 객체 / for문계산 등은 무조건 나오는 필수항목이라고 볼 수 있다.&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;내가 2회차를 보게 된다면, 또 이 글을 보고 정보처리기사 실기를 준비하는 사람이 있다면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단답형+코딩문제+sql문제로 준비하는 것이 좋겠다.&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;a href=&quot;https://cafe.naver.com/soojebi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://cafe.naver.com/soojebi&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682250875960&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;수제비- IT 커뮤니티 (정보처리기사... : 네이버 카페&quot; data-og-description=&quot;수제비-수험생 입장에서 제대로 쓴 비법서(정보처리기사, 정보처리산업기사, 빅데이터 분석기사, ADsP 등)&quot; data-og-host=&quot;cafe.naver.com&quot; data-og-source-url=&quot;https://cafe.naver.com/soojebi&quot; data-og-url=&quot;https://cafe.naver.com/soojebi&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rw6Oh/hySm43vpen/AGYn02MWxErO9pYJfKW2x0/img.png?width=150&amp;amp;height=150&amp;amp;face=0_0_150_150&quot;&gt;&lt;a href=&quot;https://cafe.naver.com/soojebi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cafe.naver.com/soojebi&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rw6Oh/hySm43vpen/AGYn02MWxErO9pYJfKW2x0/img.png?width=150&amp;amp;height=150&amp;amp;face=0_0_150_150');&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;수제비- IT 커뮤니티 (정보처리기사... : 네이버 카페&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;수제비-수험생 입장에서 제대로 쓴 비법서(정보처리기사, 정보처리산업기사, 빅데이터 분석기사, ADsP 등)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cafe.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정보처리기사 질문 및 답안 맞춰보는것은 무조건 수제비가 최고다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수제비 카페를 확인해보자&lt;/p&gt;</description>
      <category>기타/자격증</category>
      <category>정보처리기사</category>
      <category>정보처리기사실기</category>
      <category>정처기</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/80</guid>
      <comments>https://cheerup313.tistory.com/80#entry80comment</comments>
      <pubDate>Sun, 23 Apr 2023 20:55:07 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 72일차] jQuery - event / traversing / css</title>
      <link>https://cheerup313.tistory.com/79</link>
      <description>&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-3240774236919490&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;b&gt;event&lt;/b&gt;&lt;/h4&gt;
&lt;div id=&quot;SE-a6ba3754-f53c-4a6e-81ad-d65d85351f3c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a6ba3754-f53c-4a6e-81ad-d65d85351f3c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a6ba3754-f53c-4a6e-81ad-d65d85351f3c&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-e2aad03e-5ab6-4566-a3e8-97c38f1b393e&quot;&gt;
&lt;p id=&quot;SE-594337d6-c415-4220-927a-e4629a4ce88d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;mouseover | mouseout&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: 자식 객체에 진입시, 탈출시에도 이벤트 발생&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-47f9d854-b3a5-418c-bf9d-19f02c453dab&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;mouseenter | mouseleave&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 자식개체에 진입시, 탈출(출차)시에는 이벤트 발생하지 않음&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-84f5b145-6c76-4473-8935-7f900483dba1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-214e144f-d72e-4f21-a0e3-c73c8124aabd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;div 로 outer와 inner를 만들어 비교해보자.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e150b4a2-1cf3-4182-89ba-43b5027a608d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e150b4a2-1cf3-4182-89ba-43b5027a608d&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e150b4a2-1cf3-4182-89ba-43b5027a608d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;    &amp;lt;div class=&quot;outer&quot;&amp;gt;
        &amp;lt;div class=&quot;inner&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2255c9c6-5eb9-44a4-bddb-4e4521dfb81f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2255c9c6-5eb9-44a4-bddb-4e4521dfb81f&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2255c9c6-5eb9-44a4-bddb-4e4521dfb81f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;.outer{
    width:200px;
    height: 200px;
    background-color: orange;
    padding: 50px;
    margin: 20px auto;
}
.inner{
    width: 100%;
    height: 100%;
    background-color: tomato;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9f87d242-53f9-42c9-bfe2-c28445a48e9a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9f87d242-53f9-42c9-bfe2-c28445a48e9a&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9f87d242-53f9-42c9-bfe2-c28445a48e9a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;        $(&quot;.outer&quot;)
         .mouseover((e)=&amp;gt;{
             console.log(&quot;mouseover&quot;,e.target)
         })
         .mouseout((e)=&amp;gt;{
             console.log(&quot;mouseout&quot;,e.target)
         })
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bcfd5b11-dad1-402c-b7c7-41e3f429cdb2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bcfd5b11-dad1-402c-b7c7-41e3f429cdb2&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bcfd5b11-dad1-402c-b7c7-41e3f429cdb2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bcfd5b11-dad1-402c-b7c7-41e3f429cdb2&quot;&gt;
&lt;div data-unitid=&quot;SE-bcfd5b11-dad1-402c-b7c7-41e3f429cdb2&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QJZ8C/btsaw5iOKuQ/QvNGHQfK4Oy68TL96zp7e1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QJZ8C/btsaw5iOKuQ/QvNGHQfK4Oy68TL96zp7e1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QJZ8C/btsaw5iOKuQ/QvNGHQfK4Oy68TL96zp7e1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQJZ8C%2Fbtsaw5iOKuQ%2FQvNGHQfK4Oy68TL96zp7e1%2Fimg.jpg&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;370&quot; height=&quot;374&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-11bd28b9-f4b7-4886-8605-1235eda46bc6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-11bd28b9-f4b7-4886-8605-1235eda46bc6&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-11bd28b9-f4b7-4886-8605-1235eda46bc6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-11bd28b9-f4b7-4886-8605-1235eda46bc6&quot;&gt;
&lt;div data-unitid=&quot;SE-11bd28b9-f4b7-4886-8605-1235eda46bc6&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m2GM1/btsatWzBV3z/KlN4mxqsWinHlazLj2Ohm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m2GM1/btsatWzBV3z/KlN4mxqsWinHlazLj2Ohm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m2GM1/btsatWzBV3z/KlN4mxqsWinHlazLj2Ohm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm2GM1%2FbtsatWzBV3z%2FKlN4mxqsWinHlazLj2Ohm1%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;352&quot; height=&quot;451&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-335db2ca-ee8e-435d-81a8-209514e3ae4c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-335db2ca-ee8e-435d-81a8-209514e3ae4c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-335db2ca-ee8e-435d-81a8-209514e3ae4c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-fe2f0885-5b64-4d58-99ac-e263cab45856&quot;&gt;
&lt;p id=&quot;SE-c06bae28-84ea-4b4c-8215-175e0e031497&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내부요소인 inner에도 반응을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9f04e8e7-a916-444b-b015-41517168b428&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-38be83ea-649f-424c-b366-e2e26fac9612&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-38be83ea-649f-424c-b366-e2e26fac9612&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-38be83ea-649f-424c-b366-e2e26fac9612&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;        $(&quot;.outer&quot;)
        // .mouseenter((e)=&amp;gt;{
        //     console.log(&quot;mouseenter&quot;,e.target);
        // })
        // .mouseleave((e)=&amp;gt;{
        //     console.log(&quot;mouseleave&quot;,e.target);
        // })
        .hover((e)=&amp;gt;{
            console.log(&quot;mouseenter&quot;,e.target);
        },((e)=&amp;gt;{
            console.log(&quot;mouseleave&quot;,e.target);
        }))&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-94f81d84-cfcd-4f1c-91fe-498a3c7ab160&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-94f81d84-cfcd-4f1c-91fe-498a3c7ab160&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-94f81d84-cfcd-4f1c-91fe-498a3c7ab160&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-94f81d84-cfcd-4f1c-91fe-498a3c7ab160&quot;&gt;
&lt;div data-unitid=&quot;SE-94f81d84-cfcd-4f1c-91fe-498a3c7ab160&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ftp1p/btsatU2RTU3/TvvZE4vggFKUGwkAuKWsI0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ftp1p/btsatU2RTU3/TvvZE4vggFKUGwkAuKWsI0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ftp1p/btsatU2RTU3/TvvZE4vggFKUGwkAuKWsI0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFtp1p%2FbtsatU2RTU3%2FTvvZE4vggFKUGwkAuKWsI0%2Fimg.jpg&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;370&quot; height=&quot;374&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8c4ff949-d00b-4f5b-9e07-b579e838b1a6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8c4ff949-d00b-4f5b-9e07-b579e838b1a6&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8c4ff949-d00b-4f5b-9e07-b579e838b1a6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-9df0e668-0074-449c-939c-b8bbe37f2163&quot;&gt;
&lt;p id=&quot;SE-57d205a9-e2d4-4d6b-87f0-c9ad1859ef70&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 주석코드와 아래 hover코드는 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ba27186b-ca38-4a74-8e4e-9049705a54f8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mouseenter와 mouseleave는 내부요소에 반응하지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-49d0727c-666e-40e4-8b35-e2ae123c8dd2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-7c29e34a-c0e6-489e-af1e-fc33d5d9619c&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-3f7a5b1c-6a74-4a46-9607-ffb8a2fd73bf&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;on 핸들러 바인딩용&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;h4 id=&quot;SE-f8ec3a44-ec4e-4999-ae95-209dd4831e04&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;off 핸들러 바인딩용&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-64758c17-0f09-415c-aa24-c7ff73fed0dc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;바인딩(binding) :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;요소에 행위(ex. click)에 대한 이벤트 핸들러를 바인딩하는 다양한 방법&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7ac3a876-05a0-43b6-88eb-56353e99acc5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7ac3a876-05a0-43b6-88eb-56353e99acc5&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7ac3a876-05a0-43b6-88eb-56353e99acc5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    $(btn1).on('click',(e)=&amp;gt;{
        alert('감사합니다.');

        //e.target -&amp;gt; #btn1
        $(e.target).off('click'); //click핸들러 제거
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f940208c-6fcf-4665-82cb-037746745f7e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f940208c-6fcf-4665-82cb-037746745f7e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f940208c-6fcf-4665-82cb-037746745f7e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    $(btn2).one('click',(e)=&amp;gt;{
        alert('처음이자 마지막');
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1b349ede-db45-4724-84fa-31f4a61ec16b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1b349ede-db45-4724-84fa-31f4a61ec16b&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1b349ede-db45-4724-84fa-31f4a61ec16b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1b502d18-7193-4c0f-a719-d85b2b025610&quot;&gt;
&lt;p id=&quot;SE-bb52033f-bb70-4728-a042-7820d11722af&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;off를 하면 핸들러 바인딩이 끝난다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0a4d24d8-a92e-4376-b0f6-7eb3d6c79ca5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.on() 메소드의 특징&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;선택한 요소에 어떤 타입의 이벤트라도 연결할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나의 이벤트 핸들러에 여러개의 이벤트를 동시에 연결할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;선택한 요소에 여러개의 이벤트 핸들러와 여러개의 이벤트를 같이 연결할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자 지정 이벤트(custom event)를 위해 이벤트 핸들러로 데이터를 넘길 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;차후에 다루게 될 요소를 이벤트에 바인딩 할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-f658ec1b-30d2-41e2-b37e-17a6e49f0cab&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-3df9babe-9299-459f-a346-9a5de44e9430&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 특징을 가지고 있다. 수업때 짧게 넘어갔으므로 사용하고싶다면 다음 링크를 보자&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-94d60c5e-17df-4cab-aae9-cab60f611706&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-href=&quot;https://byul91oh.tistory.com/429&quot;&gt;&lt;a href=&quot;https://byul91oh.tistory.com/429&quot;&gt;https://byul91oh.tistory.com/429&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fc821a8c-4448-4e84-bdee-af6a68081ec6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fc821a8c-4448-4e84-bdee-af6a68081ec6&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fc821a8c-4448-4e84-bdee-af6a68081ec6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7e44d1b4-a675-4357-ad95-452b94266798&quot;&gt;
&lt;p id=&quot;SE-717261a2-1adf-4336-a321-d1ec703687c7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-f9c4731d-fd27-4488-a489-0f971a82e3aa&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;글씨가 초과하면 제출이 불가능한 입력폼 만들기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-56848a2b-fe90-4597-b9af-321b32a2285c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-56848a2b-fe90-4597-b9af-321b32a2285c&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-56848a2b-fe90-4597-b9af-321b32a2285c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;form action=&quot;javascript:alert('제출성공');&quot; name=&quot;tweeterFrm&quot;&amp;gt;
        &amp;lt;fieldset&amp;gt;
            &amp;lt;legend&amp;gt;트위터&amp;lt;/legend&amp;gt;
            &amp;lt;p&amp;gt;
                &amp;lt;span id=&quot;counter&quot;&amp;gt;&amp;lt;/span&amp;gt; / &amp;lt;span id=&quot;max-counter&quot;&amp;gt;&amp;lt;/span&amp;gt;
            &amp;lt;/p&amp;gt;
            &amp;lt;textarea name=&quot;content&quot; id=&quot;content&quot; cols=&quot;30&quot; rows=&quot;10&quot;&amp;gt;&amp;lt;/textarea&amp;gt;
            &amp;lt;br&amp;gt;
            &amp;lt;input type=&quot;submit&quot; value=&quot;제출&quot;&amp;gt;
            &amp;lt;button&amp;gt;제출&amp;lt;/button&amp;gt;
        &amp;lt;/fieldset&amp;gt;
    &amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d8b88882-2106-46a1-ab01-b780774ac5f1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d8b88882-2106-46a1-ab01-b780774ac5f1&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d8b88882-2106-46a1-ab01-b780774ac5f1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt; const MAX_COUNTER=30; //최대길이설정
    // document.querySelector(&quot;#counter&quot;).innerHTML=0;
    // document.querySelector(&quot;#max-counter&quot;).innerHTML=MAX_COUNTER;
    $(counter).html(0);
    $(&quot;#max-counter&quot;).html(MAX_COUNTER);

    $(content).keyup((e)=&amp;gt;{
        const {target:{value}}=e; //value를 타겟이자, 변수로 지정
        console.log(value);//content의 값(value)을 받아온다.
        const len=value.length;
        const $counter = $(counter);
        // const $submit = $(&quot;form:submit&quot;); //input[type=submit], button[type=submit]
        const $submit=$(&quot;:submit&quot;,document.tweeterFrm);//tweeterFrm에 대해 submit을 실행하는 제이쿼리
        $counter.html(len);//길이 확인

        if(len&amp;lt;=MAX_COUNTER){ //만약 길이가 최대길이(30)보다 작은경우
            $counter.css('color',&quot;initial&quot;); //초기 색상으로 돌리라는 뜻
            $submit.prop(&quot;disabled&quot;,false); //prop불가능을 해제
        }else{
            $counter.css('color',&quot;red&quot;); //빨간색으로 길이가 초과했음을 알림
            $submit.prop(&quot;disabled&quot;,true); //prop불가능 설정 (제출 불가)
        }
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f4bf6179-b9d4-4ecc-a1c1-76e952ef1421&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f4bf6179-b9d4-4ecc-a1c1-76e952ef1421&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f4bf6179-b9d4-4ecc-a1c1-76e952ef1421&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f4bf6179-b9d4-4ecc-a1c1-76e952ef1421&quot;&gt;
&lt;div data-unitid=&quot;SE-f4bf6179-b9d4-4ecc-a1c1-76e952ef1421&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b69LXm/btsaw54bR9S/40MxGGNzVRJ6ptROuSysOK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b69LXm/btsaw54bR9S/40MxGGNzVRJ6ptROuSysOK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b69LXm/btsaw54bR9S/40MxGGNzVRJ6ptROuSysOK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/b69LXm/btsaw54bR9S/40MxGGNzVRJ6ptROuSysOK/img.gif&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;612&quot; height=&quot;480&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5f86efb2-2bcd-4b05-9386-484c1fcf6c86&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5f86efb2-2bcd-4b05-9386-484c1fcf6c86&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5f86efb2-2bcd-4b05-9386-484c1fcf6c86&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2565c292-4fec-4096-90df-75019db7f224&quot;&gt;
&lt;p id=&quot;SE-e5c2b8cd-820c-4f5c-a1c1-6fdcc1ae5885&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드에 대한 설명은 코드 안에 작성하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8046e6a8-5ce1-44a9-9d37-9a3779458e04&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;제출버튼 클릭시 제출 성공이 뜬다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-73c4040d-24cf-4db8-9341-4588e5ee22e1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-766d51dd-7b36-41c6-9f8b-37214703a15e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-8508b94f-317f-4583-93a6-a7f3f6d3c166&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;traversing&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-d6ac240b-d16d-4944-987f-76942cefcb06&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기준요소가 여러개일 때 선택하기에 좋기 때문에 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8ca49496-2427-43c9-a7cc-628899ee2256&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-6635dd9a-7eda-42d0-a489-d673fe139e53&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부모방향 요소 설정&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;parent([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 직계부모요소&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;parents([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 모든 조상요소&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;parentsUtil(selector)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 특정 부모요소 전까지 모든 조상요소&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-14808b78-97e1-4098-8595-87850e32f202&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자식방향 요소 설정&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;childern([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 직계 자식요소&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;find(selector)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 모든 후손요소&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-31bd842c-4e43-4fe2-9cc3-cdc12d996ff8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;형제방향 요소 설정&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;siblings([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 모든 형제요소&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;next([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 다음 형제요소 하나&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;nextAll([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 모든 다음 형제요소&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;nextUntil(selector)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 다음 형제요소의 전까지의 형제요소&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;prev([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 이전 형제요소 하나&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;prevAll([selector])&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 모든 이전 형제요소&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;prevUntil(selector)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 선택자와 일치하는 이전 형제요소의 전까지 해당하는 형제요소&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-40e5a32f-3761-42d9-a5b4-80177af4febe&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-666303c6-a3c6-4cae-b476-b4ae5dd58461&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-7aae7040-1224-4fa7-8b35-eed816b1e0e1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;부모방향 요소 설정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3a245c7d-0c8c-4894-ab5e-d4920792f3b1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3a245c7d-0c8c-4894-ab5e-d4920792f3b1&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3a245c7d-0c8c-4894-ab5e-d4920792f3b1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    &amp;lt;div class=&quot;wrap&quot;&amp;gt;
        &amp;lt;div class=&quot;type&quot;&amp;gt;div.type (great-grandparent)
            &amp;lt;ul&amp;gt;ul (grandparent)
                &amp;lt;li&amp;gt;li (direct parent)
                    &amp;lt;span&amp;gt;span1&amp;lt;/span&amp;gt;
                &amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;li (direct parent)
                    &amp;lt;span&amp;gt;span2&amp;lt;/span&amp;gt;
                &amp;lt;/li&amp;gt;
            &amp;lt;/ul&amp;gt;
        &amp;lt;/div&amp;gt;
    
        &amp;lt;div class=&quot;type&quot;&amp;gt;div.type (grandparent)
            &amp;lt;p&amp;gt;p (direct parent)
                &amp;lt;span&amp;gt;span3&amp;lt;/span&amp;gt;
            &amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4d3db006-5d3e-4a78-978e-666be07f1558&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4d3db006-5d3e-4a78-978e-666be07f1558&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4d3db006-5d3e-4a78-978e-666be07f1558&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;      .wrap * {
        border: 1px solid lightgray;
        display: block;
        padding: 5px;
        margin: 15px;
        color: gray;
      }
      .type {
        width: 500px;
      }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6a0aea3c-aaf7-4ec7-8da6-b325e8381b04&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6a0aea3c-aaf7-4ec7-8da6-b325e8381b04&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6a0aea3c-aaf7-4ec7-8da6-b325e8381b04&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;const style={
            &quot;color&quot; : &quot;red&quot;,
            &quot;border&quot; : &quot;2px solid red&quot;
        };

        $(btn1).on('click',(e)=&amp;gt;{
            console.log(
                $(&quot;span&quot;)
                    // .parent()//span 태그의 부모를 가져옴
                    // .css(style)
                    // .parents() //span태그의 모든부모를 가져옴
                    // .parents(&quot;div&quot;) //모든 조상중에 선택
                    .parentsUntil(&quot;div.type&quot;)//div.type 전까지만 조상요소 전부 호출
                    .css(style)
            );
        });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a17768d6-436b-47a7-8364-a786de3e6fc4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a17768d6-436b-47a7-8364-a786de3e6fc4&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a17768d6-436b-47a7-8364-a786de3e6fc4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ece6b794-5ab0-422e-91d3-3e6a895b9fc4&quot;&gt;
&lt;div data-unitid=&quot;SE-ece6b794-5ab0-422e-91d3-3e6a895b9fc4&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj8sJb/btsaw8mjlrD/J80DvIO9grSACiFvLI29Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj8sJb/btsaw8mjlrD/J80DvIO9grSACiFvLI29Yk/img.png&quot; width=&quot;591&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;580&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.17&quot; style=&quot;width: 49.5899%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj8sJb/btsaw8mjlrD/J80DvIO9grSACiFvLI29Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj8sJb%2Fbtsaw8mjlrD%2FJ80DvIO9grSACiFvLI29Yk%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;591&quot; height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L9nT3/btsaw9erZnB/Wv1J2HPttKQ7kzkMMvk2x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L9nT3/btsaw9erZnB/Wv1J2HPttKQ7kzkMMvk2x1/img.png&quot; width=&quot;594&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;587&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.2473%;&quot; data-widthpercent=&quot;49.83&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L9nT3/btsaw9erZnB/Wv1J2HPttKQ7kzkMMvk2x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL9nT3%2Fbtsaw9erZnB%2FWv1J2HPttKQ7kzkMMvk2x1%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;594&quot; height=&quot;587&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;버튼을 클릭하지 않았을 때 / .parent() 선택시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3bfb2711-0a62-4745-9e0e-28fb688f0751&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3bfb2711-0a62-4745-9e0e-28fb688f0751&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3bfb2711-0a62-4745-9e0e-28fb688f0751&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1d7f6ea4-8e90-4752-a2da-d5b24784af5e&quot;&gt;
&lt;p id=&quot;SE-9e3853e2-37ba-4aee-b55d-c526b085970e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;버튼을 클릭하지 않았을 때 원래와 비교해보면, .parent()는 span의 바로 윗단계인 p를 선택하는것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b9e9398b-85ba-4760-9603-4172acaa55d4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b9e9398b-85ba-4760-9603-4172acaa55d4&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b9e9398b-85ba-4760-9603-4172acaa55d4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;SE-633084fb-9a30-4269-804f-af734a782a38&quot;&gt;
&lt;div data-unitid=&quot;SE-633084fb-9a30-4269-804f-af734a782a38&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r65UR/btsajdvXFqh/j3CSCqvHfiWMXSlKlwJbU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r65UR/btsajdvXFqh/j3CSCqvHfiWMXSlKlwJbU0/img.png&quot; width=&quot;680&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;705&quot; data-is-animation=&quot;false&quot; style=&quot;width: 30.6341%; margin-right: 10px;&quot; data-widthpercent=&quot;31.36&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r65UR/btsajdvXFqh/j3CSCqvHfiWMXSlKlwJbU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr65UR%2FbtsajdvXFqh%2Fj3CSCqvHfiWMXSlKlwJbU0%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;680&quot; height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYfEpb/btsaibrwEHH/AV18XSHPdqNHYojmpWWdhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYfEpb/btsaibrwEHH/AV18XSHPdqNHYojmpWWdhk/img.png&quot; width=&quot;674&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;602&quot; data-is-animation=&quot;false&quot; style=&quot;width: 35.5589%; margin-right: 10px;&quot; data-widthpercent=&quot;36.41&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYfEpb/btsaibrwEHH/AV18XSHPdqNHYojmpWWdhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYfEpb%2FbtsaibrwEHH%2FAV18XSHPdqNHYojmpWWdhk%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;674&quot; height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7ZJeF/btsake2hYB5/kvTNIK1PGXgKwstNk0csu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7ZJeF/btsake2hYB5/kvTNIK1PGXgKwstNk0csu1/img.png&quot; width=&quot;677&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;683&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.4814%;&quot; data-widthpercent=&quot;32.23&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7ZJeF/btsake2hYB5/kvTNIK1PGXgKwstNk0csu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7ZJeF%2Fbtsake2hYB5%2FkvTNIK1PGXgKwstNk0csu1%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;677&quot; height=&quot;683&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;.parents() / .parents(&quot;div&quot;) / .parentsUntil(&quot;div.type&quot;)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f726acb1-4533-474f-87df-500ef0633d2b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f726acb1-4533-474f-87df-500ef0633d2b&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f726acb1-4533-474f-87df-500ef0633d2b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b6c2674f-8956-4fa3-b262-117b08a38370&quot;&gt;
&lt;p id=&quot;SE-256a1cba-6b9c-4701-9a7b-2fb4f08dd15f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.parents()는 span(본인)을 제외한 모든 부모요소를 선택하고&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b3cebbba-44e5-4247-b5f2-906fa2c280fd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.parents(&quot;div&quot;)는 모든 조상중에 div를 가지는 요소를 선택한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-91083f7a-2d5e-46f7-8e51-5a3ff23d4ae0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.parentsUntil(&quot;div.type)은 div.type전까지의 모든 요소를 선택한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-5361c497-3267-4a8d-bd8e-18fdc5e738c9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-eadf3852-fdca-4a6c-bbb8-b3b253252505&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자식방향 요소 설정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c6807628-bfe0-4e5f-a6a8-3f9651b1ecd5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c6807628-bfe0-4e5f-a6a8-3f9651b1ecd5&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c6807628-bfe0-4e5f-a6a8-3f9651b1ecd5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;        $(btn2).on(&quot;click&quot;,(e)=&amp;gt;{
            console.log(
                $(&quot;.wrap&quot;)
                    // .children().children()
                    // .children(&quot;:has(li)&quot;)
                    .find(&quot;span&quot;)
                    .css(style)
            );
        });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2c07ae8b-0138-4395-a07d-9ca6a67bc5fc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2c07ae8b-0138-4395-a07d-9ca6a67bc5fc&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2c07ae8b-0138-4395-a07d-9ca6a67bc5fc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4817dfe0-d00a-49dd-84b2-1b045ab9e6b3&quot;&gt;
&lt;div data-unitid=&quot;SE-4817dfe0-d00a-49dd-84b2-1b045ab9e6b3&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjN6kk/btsafPitTJT/mKk2I2bY1LPqp8GrG1Crq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjN6kk/btsafPitTJT/mKk2I2bY1LPqp8GrG1Crq1/img.png&quot; width=&quot;576&quot; data-origin-width=&quot;576&quot; data-origin-height=&quot;579&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.1&quot; style=&quot;width: 32.333%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjN6kk/btsafPitTJT/mKk2I2bY1LPqp8GrG1Crq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjN6kk%2FbtsafPitTJT%2FmKk2I2bY1LPqp8GrG1Crq1%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;576&quot; height=&quot;579&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1KdYX/btsakccudmE/F39qkpjIAN260M0N1gPd60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1KdYX/btsakccudmE/F39qkpjIAN260M0N1gPd60/img.png&quot; width=&quot;603&quot; data-origin-width=&quot;603&quot; data-origin-height=&quot;587&quot; data-is-animation=&quot;false&quot; style=&quot;width: 33.3873%; margin-right: 10px;&quot; data-widthpercent=&quot;34.18&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1KdYX/btsakccudmE/F39qkpjIAN260M0N1gPd60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1KdYX%2FbtsakccudmE%2FF39qkpjIAN260M0N1gPd60%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;603&quot; height=&quot;587&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyapji/btsagrVU21j/wJL6iU3YFwkuytKFwYxbKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyapji/btsagrVU21j/wJL6iU3YFwkuytKFwYxbKk/img.png&quot; width=&quot;584&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;594&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.9542%;&quot; data-widthpercent=&quot;32.72&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyapji/btsagrVU21j/wJL6iU3YFwkuytKFwYxbKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcyapji%2FbtsagrVU21j%2FwJL6iU3YFwkuytKFwYxbKk%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;584&quot; height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;.childern().children() / .children(&quot;:has(li)&quot;) / .find(&quot;span&quot;)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;.children().children() 은 wrap을 기준으로 자식의 자식인 ul, p가 선택되었다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0180b802-e94d-4fad-8cd5-94033dc7be8c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0180b802-e94d-4fad-8cd5-94033dc7be8c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0180b802-e94d-4fad-8cd5-94033dc7be8c&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-ca6af6e6-37ad-479e-886c-ae86eefcc034&quot;&gt;
&lt;p id=&quot;SE-a0ded49a-9cd1-4bb8-b829-33b4093f461a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.children(&quot;:has(li)&quot;) 는 wrap중에서 li를 가지는 자식요소가 선택되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a2516810-fffd-46ea-8281-66fff58db23e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.find(&quot;span&quot;) 은 자식요소중에서 span을 가지는 모든 자식 요소가 선택되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-81a2e99c-9420-4922-b4d8-e3f83d48036d&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-63afe359-c126-43f7-8e5b-9caa7e0517c3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-050ded49-129b-4ca4-b476-d3419b2dcbc9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;형제방향 요소설정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c4ab4540-0888-41f9-a09c-f901cc32864b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c4ab4540-0888-41f9-a09c-f901cc32864b&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c4ab4540-0888-41f9-a09c-f901cc32864b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;          &amp;lt;div class=&quot;wrap&quot;&amp;gt;
            &amp;lt;p&amp;gt;p&amp;lt;/p&amp;gt;
            &amp;lt;span&amp;gt;span&amp;lt;/span&amp;gt;
            &amp;lt;h1&amp;gt;h1&amp;lt;/h1&amp;gt;
            &amp;lt;h2 id=&quot;start&quot;&amp;gt;h2&amp;lt;/h2&amp;gt;
            &amp;lt;h3&amp;gt;h3&amp;lt;/h3&amp;gt;
            &amp;lt;h4&amp;gt;h4&amp;lt;/h4&amp;gt;
            &amp;lt;p&amp;gt;p&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;button id=&quot;btn3&quot;&amp;gt;형제방향&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-58400388-0637-422b-b127-5b1498e4173e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-58400388-0637-422b-b127-5b1498e4173e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-58400388-0637-422b-b127-5b1498e4173e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;    $(btn3).on('click',(e)=&amp;gt;{
        console.log(
            $(&quot;#start&quot;)
                // .siblings() h2빼고 다 선택
                // .siblings(&quot;:header&quot;) //header 태그인 h1 ~ h4 중 본인제외하고 선택
                // .next() //h3
                // .next(&quot;p&quot;) //다음형제요소가 p가아니기때문에 선택 x
                // .nextAll() //h2 이후 모두
                // .nextAll(&quot;h3,h4&quot;) //다음형제요소중 h3, h4만
                .nextUntil(&quot;p&quot;) //다음 형제요소중 p태그 전까지만
                .css(style)
        )
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-48ac747f-57a2-45c0-8708-4de9dd1e869f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-48ac747f-57a2-45c0-8708-4de9dd1e869f&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-48ac747f-57a2-45c0-8708-4de9dd1e869f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a3120f3b-d83b-4e65-b3df-743b51347c8c&quot;&gt;
&lt;div data-unitid=&quot;SE-a3120f3b-d83b-4e65-b3df-743b51347c8c&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9lU8j/btsagQhhspV/o4ZXUgs0bskmCveXHfgSe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9lU8j/btsagQhhspV/o4ZXUgs0bskmCveXHfgSe0/img.png&quot; width=&quot;652&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;410&quot; data-is-animation=&quot;false&quot; style=&quot;width: 33.4866%; margin-right: 10px;&quot; data-widthpercent=&quot;34.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9lU8j/btsagQhhspV/o4ZXUgs0bskmCveXHfgSe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9lU8j%2FbtsagQhhspV%2Fo4ZXUgs0bskmCveXHfgSe0%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;652&quot; height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFUWy/btsaqOPoXdo/QLsVFTxi3O73MFcLXmaoRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFUWy/btsaqOPoXdo/QLsVFTxi3O73MFcLXmaoRk/img.png&quot; width=&quot;642&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;426&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.7345%; margin-right: 10px;&quot; data-widthpercent=&quot;32.49&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFUWy/btsaqOPoXdo/QLsVFTxi3O73MFcLXmaoRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFUWy%2FbtsaqOPoXdo%2FQLsVFTxi3O73MFcLXmaoRk%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;642&quot; height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BXLti/btsaipKaRPq/z8v80CmCT4lw60K5KiowGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BXLti/btsaipKaRPq/z8v80CmCT4lw60K5KiowGK/img.png&quot; width=&quot;655&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;425&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.4533%;&quot; data-widthpercent=&quot;33.23&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BXLti/btsaipKaRPq/z8v80CmCT4lw60K5KiowGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBXLti%2FbtsaipKaRPq%2Fz8v80CmCT4lw60K5KiowGK%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;655&quot; height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;기본 / .siblings() / .siblings(&quot;:header&quot;)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a1f1f97b-8460-4da8-b092-16642259d0d3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a1f1f97b-8460-4da8-b092-16642259d0d3&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a1f1f97b-8460-4da8-b092-16642259d0d3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-68ac5b46-20e5-475b-8b49-67e3f4b5325c&quot;&gt;
&lt;div data-unitid=&quot;SE-68ac5b46-20e5-475b-8b49-67e3f4b5325c&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S05Fp/btsaipXJzaj/yWKKO7QJhhaAxgsC26s7WK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S05Fp/btsaipXJzaj/yWKKO7QJhhaAxgsC26s7WK/img.png&quot; width=&quot;662&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;422&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.6047%; margin-right: 10px;&quot; data-widthpercent=&quot;33.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S05Fp/btsaipXJzaj/yWKKO7QJhhaAxgsC26s7WK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS05Fp%2FbtsaipXJzaj%2FyWKKO7QJhhaAxgsC26s7WK%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;662&quot; height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvFMIw/btsaipcnlf8/dKazaG4T5K927Gn390edn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvFMIw/btsaipcnlf8/dKazaG4T5K927Gn390edn0/img.png&quot; width=&quot;652&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;410&quot; data-is-animation=&quot;false&quot; style=&quot;width: 33.0521%; margin-right: 10px;&quot; data-widthpercent=&quot;33.84&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvFMIw/btsaipcnlf8/dKazaG4T5K927Gn390edn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvFMIw%2Fbtsaipcnlf8%2FdKazaG4T5K927Gn390edn0%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;652&quot; height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b06qQv/btsak97tsVN/mObOusZCUDwNEanUYUOph0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b06qQv/btsak97tsVN/mObOusZCUDwNEanUYUOph0/img.png&quot; width=&quot;647&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;420&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.0177%;&quot; data-widthpercent=&quot;32.78&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b06qQv/btsak97tsVN/mObOusZCUDwNEanUYUOph0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb06qQv%2Fbtsak97tsVN%2FmObOusZCUDwNEanUYUOph0%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;647&quot; height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;.next() / .next(&quot;p&quot;) / .nextAll()&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b33165b1-c47d-48e2-a7ba-9e6f92a540c1&quot;&gt;
&lt;p id=&quot;SE-4d2592a9-97dc-47b1-ad30-6782cfc29057&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6ef65d01-0fc7-4613-b0f2-22a6ceb95cca&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6ef65d01-0fc7-4613-b0f2-22a6ceb95cca&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6ef65d01-0fc7-4613-b0f2-22a6ceb95cca&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6aecc6a6-fc4e-4f36-b239-5894c5034cc2&quot;&gt;
&lt;div data-unitid=&quot;SE-6aecc6a6-fc4e-4f36-b239-5894c5034cc2&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cozS0M/btsagrIlpGQ/sDEyfWisYt1oS5obrjyxhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cozS0M/btsagrIlpGQ/sDEyfWisYt1oS5obrjyxhK/img.png&quot; width=&quot;660&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;424&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.9683%; margin-right: 10px;&quot; data-widthpercent=&quot;50.56&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cozS0M/btsagrIlpGQ/sDEyfWisYt1oS5obrjyxhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcozS0M%2FbtsagrIlpGQ%2FsDEyfWisYt1oS5obrjyxhK%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;660&quot; height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6Nz9A/btsak3GlIet/rRDXJASDh2AyEGdCBGKEJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6Nz9A/btsak3GlIet/rRDXJASDh2AyEGdCBGKEJk/img.png&quot; width=&quot;647&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;425&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.8689%;&quot; data-widthpercent=&quot;49.44&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6Nz9A/btsak3GlIet/rRDXJASDh2AyEGdCBGKEJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6Nz9A%2Fbtsak3GlIet%2FrRDXJASDh2AyEGdCBGKEJk%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;647&quot; height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;.nextAll(&quot;h3,h4&quot;) / .nextUntil(&quot;p&quot;)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-b3294112-1441-4a40-b065-0a2af401a3b6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b3294112-1441-4a40-b065-0a2af401a3b6&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b3294112-1441-4a40-b065-0a2af401a3b6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b172e311-1844-49dd-b29f-a83675385023&quot;&gt;
&lt;p id=&quot;SE-f1c08aa1-8934-4c79-8e35-7f34c3d88bec&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;형제요소 설명은 코드 안 주석 참고&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c70e926f-56ca-4329-ac04-09ca7a92dacf&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-fd9e57b0-e19c-48c9-80da-d841cc418ab5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-4d548fd1-8150-472d-8bc9-8d3149349d73&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실습문제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2104be4b-8a0f-4242-8948-4547da38e0f2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;li2-2, li2-3 선택하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7488aca8-a2df-4962-9c18-4bb31eef665a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7488aca8-a2df-4962-9c18-4bb31eef665a&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7488aca8-a2df-4962-9c18-4bb31eef665a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;      &amp;lt;div&amp;gt;
        &amp;lt;div class=&quot;type test&quot;&amp;gt;
            div.test
            &amp;lt;ul&amp;gt;
                ul1
                &amp;lt;li&amp;gt;li1-1&amp;lt;/li&amp;gt;
                &amp;lt;li&amp;gt;
                    li1-2
                    &amp;lt;ul&amp;gt;
                        ul2
                        &amp;lt;li&amp;gt;li2-1&amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;li2-2&amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            li2-3
                            &amp;lt;ul&amp;gt;
                                ul3
                                &amp;lt;li&amp;gt;
                                    li3
                                    &amp;lt;span id=&quot;fromMe&quot;&amp;gt;fromMe&amp;lt;/span&amp;gt;
                                &amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                    &amp;lt;/ul&amp;gt;
                &amp;lt;/li&amp;gt;
            &amp;lt;/ul&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2d00abd3-b9cf-4f49-807a-e4943fe325bc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2d00abd3-b9cf-4f49-807a-e4943fe325bc&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2d00abd3-b9cf-4f49-807a-e4943fe325bc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-04be9f5e-e796-43d3-bcf5-d1b0b43558a6&quot;&gt;
&lt;p id=&quot;SE-084c8ae3-66a9-40b7-939f-23bccb74ec3a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. .wrap부터 시작&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b695e488-5bf8-499a-ac60-3b4d412a392f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b695e488-5bf8-499a-ac60-3b4d412a392f&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b695e488-5bf8-499a-ac60-3b4d412a392f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;    $(btn4).on('click', (e)=&amp;gt;{
        console.log(
            $(&quot;.wrap&quot;)
                .children()
                .children()
                .children()
                .children(&quot;:has(li)&quot;)
                .children(&quot;li&quot;)
                .nextAll()
                .css(style)
        )
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9cbcff0e-7ae3-4ce6-b083-eda7f8a2e122&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9cbcff0e-7ae3-4ce6-b083-eda7f8a2e122&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9cbcff0e-7ae3-4ce6-b083-eda7f8a2e122&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-73744d0c-7fcb-48f9-a1b6-3b9eefd3ee9f&quot;&gt;
&lt;p id=&quot;SE-84571246-1dc7-46ef-8f04-7b16d930d12a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-19cea6c9-15da-40cc-802c-5bd9207fa8e6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. span#fromMe부터 시작&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-43a3d07a-736c-40bd-a53a-8ca6daf2135f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-43a3d07a-736c-40bd-a53a-8ca6daf2135f&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-43a3d07a-736c-40bd-a53a-8ca6daf2135f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;    $(btn4_1).on('click',(e)=&amp;gt;{
        console.log(
            $(&quot;#fromMe&quot;)
                .parent()
                .parent()
                .parent()
                .prev(&quot;li&quot;)
                .prev(&quot;li&quot;)
                .nextAll(&quot;li&quot;)
                .css(style)
        )
    })&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fb3971b2-6bfb-4791-8ccd-d65ea3c6e384&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fb3971b2-6bfb-4791-8ccd-d65ea3c6e384&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fb3971b2-6bfb-4791-8ccd-d65ea3c6e384&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;SE-40ed8576-eb9b-4d50-9246-79efa26402bb&quot;&gt;
&lt;div data-unitid=&quot;SE-40ed8576-eb9b-4d50-9246-79efa26402bb&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evcTbe/btsamXMtrZE/eFm3l9PN08awXsfVmITnU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evcTbe/btsamXMtrZE/eFm3l9PN08awXsfVmITnU0/img.png&quot; width=&quot;590&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;705&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.6935%; margin-right: 10px;&quot; data-widthpercent=&quot;33.47&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evcTbe/btsamXMtrZE/eFm3l9PN08awXsfVmITnU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FevcTbe%2FbtsamXMtrZE%2FeFm3l9PN08awXsfVmITnU0%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;590&quot; height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eb0Vwg/btsagqvVGpm/5llQKGKi3TmtyfaBkkeq4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eb0Vwg/btsagqvVGpm/5llQKGKi3TmtyfaBkkeq4K/img.png&quot; width=&quot;588&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;707&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.4905%; margin-right: 10px;&quot; data-widthpercent=&quot;33.26&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eb0Vwg/btsagqvVGpm/5llQKGKi3TmtyfaBkkeq4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feb0Vwg%2FbtsagqvVGpm%2F5llQKGKi3TmtyfaBkkeq4K%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;588&quot; height=&quot;707&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uDrp3/btsalak3g13/Knyaqlgkyqk4PnGNAOneG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uDrp3/btsalak3g13/Knyaqlgkyqk4PnGNAOneG0/img.png&quot; width=&quot;588&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;707&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.4905%;&quot; data-widthpercent=&quot;33.27&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uDrp3/btsalak3g13/Knyaqlgkyqk4PnGNAOneG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuDrp3%2Fbtsalak3g13%2FKnyaqlgkyqk4PnGNAOneG0%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;588&quot; height=&quot;707&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;기본 / .wrap에서시작 / span#fromMe 에서 시작&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a5c97f2f-11b9-484c-b29d-a1bf3a803e20&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a5c97f2f-11b9-484c-b29d-a1bf3a803e20&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a5c97f2f-11b9-484c-b29d-a1bf3a803e20&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-62f02fa9-093b-405d-89d6-3a94f0945875&quot;&gt;
&lt;p id=&quot;SE-5a7b1214-16ab-4b3d-b454-9291ccde9115&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-23bb58f4-616c-4a28-9d9f-7fc753285e53&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-ebff32b1-0d49-440a-b5a5-4e254006104e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-2a99d6e9-e752-4227-8498-ca9eeb518840&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;css&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id=&quot;SE-046f9a6b-1929-4db9-8da4-c610b70b4340&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;display : none 효과 처리&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;show&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(speed, easing, callbackFunction)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;hide&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(speed, easing, callbackFunction)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;toggle&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(speed, easing, callbackFunction)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0633fa18-2b19-4d2c-883d-f4e3a4f397de&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0633fa18-2b19-4d2c-883d-f4e3a4f397de&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0633fa18-2b19-4d2c-883d-f4e3a4f397de&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;  &amp;lt;div&amp;gt;
    &amp;lt;img id=&quot;river1&quot; src=&quot;../sample/image/river1.PNG&quot; alt=&quot;&quot;&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fb74c743-abff-4b20-9bd1-230ad4613ef4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fb74c743-abff-4b20-9bd1-230ad4613ef4&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fb74c743-abff-4b20-9bd1-230ad4613ef4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;  $(btn1).click(() =&amp;gt; {
    $(river1).show(1000, 'easeOutBounce', () =&amp;gt; {
      console.log('show complete!');
    });
  });
  $(btn2).click(() =&amp;gt; {
    $(river1).hide(1000, 'easeOutBounce', () =&amp;gt; {
      console.log('hide complete!');
    });
  });
  $(btn3).click(() =&amp;gt; {
    $(river1).toggle();
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a05825c5-f752-4bdb-ad98-1d203cd11d1b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a05825c5-f752-4bdb-ad98-1d203cd11d1b&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a05825c5-f752-4bdb-ad98-1d203cd11d1b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a05825c5-f752-4bdb-ad98-1d203cd11d1b&quot;&gt;
&lt;div data-unitid=&quot;SE-a05825c5-f752-4bdb-ad98-1d203cd11d1b&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfH5Rf/btsaioLiNR0/HHYVG3evLhE6it1qAlbiFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfH5Rf/btsaioLiNR0/HHYVG3evLhE6it1qAlbiFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfH5Rf/btsaioLiNR0/HHYVG3evLhE6it1qAlbiFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfH5Rf%2FbtsaioLiNR0%2FHHYVG3evLhE6it1qAlbiFK%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;340&quot; height=&quot;277&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-78da6e5d-1948-4840-bcb1-a993d1adeefa&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-78da6e5d-1948-4840-bcb1-a993d1adeefa&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-78da6e5d-1948-4840-bcb1-a993d1adeefa&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e68857af-915d-45c7-9518-43d9a17ce458&quot;&gt;
&lt;p id=&quot;SE-5ddd6627-0ca2-469a-871f-a3add0400315&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;show를 누르면 보이고, hide를 누르면 숨겨진다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-95c51de9-4224-4930-a9ae-23fbce54c08f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;toggle을 누르면 보였다 안보였다가 반복한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-52bd4e0b-5d65-4a0a-a872-127a01ddc12c&quot; 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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;slideDown&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;slideUp&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;silideToggle&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6398a3d7-50aa-431f-af00-cd545da6a5e5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6398a3d7-50aa-431f-af00-cd545da6a5e5&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6398a3d7-50aa-431f-af00-cd545da6a5e5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;  &amp;lt;div class=&quot;wrapper&quot;&amp;gt;
    &amp;lt;div class=&quot;menu&quot;&amp;gt;HTML&amp;lt;/div&amp;gt;
    &amp;lt;p class=&quot;content&quot;&amp;gt;Lorem ipsum dolor sit amet consectetur adipisicing elit. Aspernatur debitis, voluptatibus, nemo eum doloremque molestiae vitae, aut inventore alias nihil officiis veniam enim! Neque nobis, rem ex cupiditate fugiat quisquam!&amp;lt;/p&amp;gt;
    &amp;lt;div class=&quot;menu&quot;&amp;gt;CSS&amp;lt;/div&amp;gt;
    &amp;lt;p class=&quot;content&quot;&amp;gt;Nam maiores repellat minima laudantium ipsum ratione! Consequuntur harum quidem facilis animi nesciunt labore reiciendis eum aspernatur mollitia molestias perspiciatis ipsam, iste natus atque asperiores voluptatem veniam voluptas enim beatae?&amp;lt;/p&amp;gt;
    &amp;lt;div class=&quot;menu&quot;&amp;gt;JAVASCRIPT&amp;lt;/div&amp;gt;
    &amp;lt;p class=&quot;content&quot;&amp;gt;Adipisci in dolorum inventore quia excepturi pariatur nihil iste ratione nulla enim debitis neque, ut cupiditate dicta repudiandae maiores expedita distinctio accusantium minima natus ex itaque labore quas? Vero, magni.&amp;lt;/p&amp;gt;
    &amp;lt;div class=&quot;menu&quot;&amp;gt;JQUERY&amp;lt;/div&amp;gt;
    &amp;lt;p class=&quot;content&quot;&amp;gt;Sed quae quaerat temporibus expedita ducimus blanditiis, aliquid est, voluptatem harum ut recusandae quia ad assumenda odit, saepe excepturi iure. Illum vitae dignissimos cumque repellendus quidem commodi facere deserunt mollitia?&amp;lt;/p&amp;gt;
    &amp;lt;div class=&quot;menu&quot;&amp;gt;HTML5 API&amp;lt;/div&amp;gt;
    &amp;lt;p class=&quot;content&quot;&amp;gt;Debitis, rem quo eaque ipsum obcaecati quisquam consequatur nobis, est beatae optio qui perspiciatis ea alias quis eum maiores amet praesentium ratione voluptas quas. Corrupti rerum facere obcaecati quisquam natus.&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-49351af2-dc24-40ef-af0f-a327485b8604&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-49351af2-dc24-40ef-af0f-a327485b8604&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-49351af2-dc24-40ef-af0f-a327485b8604&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;  .menu {
    width: 300px;
    height: 30px;
    line-height: 30px;
    border-radius: 10px;
    text-align: center;
    border: 1px solid lightgreen;
    cursor: pointer;
    padding: 3px;
  }
  .content {
    width: 300px;
    margin: 3px 0;
    padding: 3px;
    border: 1px solid gray;
    border-radius: 10px;
    display: none;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-363ed363-b914-4c98-9dc2-6fbfcfbb0174&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-363ed363-b914-4c98-9dc2-6fbfcfbb0174&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-363ed363-b914-4c98-9dc2-6fbfcfbb0174&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;  $(&quot;.menu&quot;).click((e) =&amp;gt; {
    // $(e.target).next()
      // .slideDown(5000);
      // .slideUp(5000);
      // .slideToggle();

    // @실습문제 : 아코디언 효과만들기
    // $(e.target).next()
    //   .slideToggle()
    //   .siblings(&quot;.content&quot;)
    //   .slideUp()

    $(e.target).next().slideToggle();
    $(&quot;p.content&quot;).not($(e.target).next()).slideUp();

  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ef012cd5-6d95-4721-a737-487f1a00b3f8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ef012cd5-6d95-4721-a737-487f1a00b3f8&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ef012cd5-6d95-4721-a737-487f1a00b3f8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;SE-72dff09e-4196-4798-9e56-09b3e200d9cc&quot;&gt;
&lt;div data-unitid=&quot;SE-72dff09e-4196-4798-9e56-09b3e200d9cc&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GaDNd/btsaw7AWj9p/1EK5s1cj1f8uM2nXRoFQW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GaDNd/btsaw7AWj9p/1EK5s1cj1f8uM2nXRoFQW0/img.png&quot; width=&quot;350&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;376&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.82&quot; style=&quot;width: 33.0291%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GaDNd/btsaw7AWj9p/1EK5s1cj1f8uM2nXRoFQW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGaDNd%2Fbtsaw7AWj9p%2F1EK5s1cj1f8uM2nXRoFQW0%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;350&quot; height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6NjD8/btsal3TDx8r/0hLn9xrreXkMSUa0FvQ7r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6NjD8/btsal3TDx8r/0hLn9xrreXkMSUa0FvQ7r1/img.png&quot; width=&quot;352&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;374&quot; data-is-animation=&quot;false&quot; style=&quot;width: 33.3954%; margin-right: 10px;&quot; data-widthpercent=&quot;34.19&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6NjD8/btsal3TDx8r/0hLn9xrreXkMSUa0FvQ7r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6NjD8%2Fbtsal3TDx8r%2F0hLn9xrreXkMSUa0FvQ7r1%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;352&quot; height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgKoj7/btsak21JmML/DcmDG8j5q6pX74pbIJqd0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgKoj7/btsak21JmML/DcmDG8j5q6pX74pbIJqd0k/img.png&quot; width=&quot;347&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;394&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.2499%;&quot; data-widthpercent=&quot;31.99&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgKoj7/btsak21JmML/DcmDG8j5q6pX74pbIJqd0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgKoj7%2Fbtsak21JmML%2FDcmDG8j5q6pX74pbIJqd0k%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;347&quot; height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1d316e32-661d-4b8d-9d79-f50f730143a5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1d316e32-661d-4b8d-9d79-f50f730143a5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1d316e32-661d-4b8d-9d79-f50f730143a5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-30f8b076-196f-43a0-994e-b18a7d9c2b17&quot;&gt;
&lt;p id=&quot;SE-b6fc82c3-bf94-4ca9-ac77-f67b07e091d5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클릭시 1개씩 열렸다가 닫히는 구조이다. (토글)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3b0ef9bc-d595-408e-b677-599ebb1662d2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;열린 상태로 다른 버튼을 클릭하면, 열렸던 것이 닫히고 클릭한 것이 열린다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-add466c7-1908-4281-b5ae-cf2fd9f05d77&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-c91db26c-9495-44ee-81f0-44d924e94942&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Opacity / Display&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-b2a45a2a-7b97-42ca-bf76-d2ffc637c54f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;FadeIn&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-68abffbc-aeb7-40f4-8cf0-54689bbe2a31&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;FadeOut&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8891f0cc-69f9-42dd-ad10-98ee83e636c1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;FadeToggle&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f803a34e-d392-4d29-81a7-fefee9e820bf&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f803a34e-d392-4d29-81a7-fefee9e820bf&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f803a34e-d392-4d29-81a7-fefee9e820bf&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;button id=&quot;btn4&quot;&amp;gt;fadeIn&amp;lt;/button&amp;gt;
  &amp;lt;button id=&quot;btn5&quot;&amp;gt;fadeOut&amp;lt;/button&amp;gt;
  &amp;lt;button id=&quot;btn6&quot;&amp;gt;fadeToggle&amp;lt;/button&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;img id=&quot;river2&quot; src=&quot;../sample/image/river2.PNG&quot; alt=&quot;&quot;&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-112e1e59-29bb-4046-994a-030eaaac3dcb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-112e1e59-29bb-4046-994a-030eaaac3dcb&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-112e1e59-29bb-4046-994a-030eaaac3dcb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;  img {
    width: 300px;
    margin: 10px 0;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b72a1a68-7cbd-41d0-aec8-3c537f238c79&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b72a1a68-7cbd-41d0-aec8-3c537f238c79&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b72a1a68-7cbd-41d0-aec8-3c537f238c79&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;  $(btn4).click(() =&amp;gt; {
    $(river2).fadeIn(1000);
  });
  $(btn5).click(() =&amp;gt; {
    $(river2).fadeOut(1000);
  });
  $(btn6).click(() =&amp;gt; {
    $(river2).fadeToggle(1000);
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-455be590-f8d5-47af-8647-8b865b287fb5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-455be590-f8d5-47af-8647-8b865b287fb5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-455be590-f8d5-47af-8647-8b865b287fb5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-455be590-f8d5-47af-8647-8b865b287fb5&quot;&gt;
&lt;div data-unitid=&quot;SE-455be590-f8d5-47af-8647-8b865b287fb5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9N8iB/btsak90IByk/8tWkQQSg0MmZEyM0HcF7H0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9N8iB/btsak90IByk/8tWkQQSg0MmZEyM0HcF7H0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9N8iB/btsak90IByk/8tWkQQSg0MmZEyM0HcF7H0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/9N8iB/btsak90IByk/8tWkQQSg0MmZEyM0HcF7H0/img.gif&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;386&quot; height=&quot;480&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;SE-651c9895-dd80-46c0-96e6-a0401a65e685&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555; letter-spacing: 0px;&quot;&gt;사진이 사라질경우 아래 사진이 올라오는 것임!&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;SE-5843323c-e4a8-4fd3-8517-37601c89252a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5843323c-e4a8-4fd3-8517-37601c89252a&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5843323c-e4a8-4fd3-8517-37601c89252a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;  &amp;lt;div class=&quot;img-wrapper&quot;&amp;gt;
    &amp;lt;img id=&quot;forest1&quot; src=&quot;../sample/image/forest1.PNG&quot; alt=&quot;&quot;&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f389a2c4-a4ad-4695-b7ba-213c5b284bf2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f389a2c4-a4ad-4695-b7ba-213c5b284bf2&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f389a2c4-a4ad-4695-b7ba-213c5b284bf2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;  .img-wrapper {
    width: 300px;
    height: 200px;
    overflow: hidden;
  }
  .img-wrapper img {
    opacity: .7;
    margin: 0;
    transition-duration: .1s;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1f7004fe-2b5a-483e-b359-59b1f81005da&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1f7004fe-2b5a-483e-b359-59b1f81005da&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1f7004fe-2b5a-483e-b359-59b1f81005da&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;  $(forest1).hover((e) =&amp;gt; {
    // mouseenter
    $(e.target)
      .fadeTo(100, 1)
      .css('transform', 'scale(1.2)');


  }, (e) =&amp;gt; {
    // mouseleave
    $(e.target)
      .fadeTo(100, .7)
      .css('transform', 'scale(1)');
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4b06a944-6cc8-4bfa-9231-d103cb826951&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-unitid=&quot;SE-155e19e4-0189-4128-b534-0f9ffec1202f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caTJ6u/btsaqOWaXnU/Kizuv3EOlJ3dcA2ustMYV0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caTJ6u/btsaqOWaXnU/Kizuv3EOlJ3dcA2ustMYV0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caTJ6u/btsaqOWaXnU/Kizuv3EOlJ3dcA2ustMYV0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/caTJ6u/btsaqOWaXnU/Kizuv3EOlJ3dcA2ustMYV0/img.gif&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;458&quot; height=&quot;480&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;SE-393aee10-22a3-4b1f-b80c-714d52ab4398&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d8f2c9b7-7882-4ad2-8527-f61c60832183&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d8f2c9b7-7882-4ad2-8527-f61c60832183&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d8f2c9b7-7882-4ad2-8527-f61c60832183&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b0630206-0ed7-42af-b4e2-dfb282a63a78&quot;&gt;
&lt;p id=&quot;SE-ad97edd5-370c-48df-83ff-0b170a0cdb1d&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-cd59524a-ab75-4817-97a7-18c0123c2ede&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;도형 움직이게 만들기(animate)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b52d9acf-ba5d-4f2e-a0ae-94d8dcae2f34&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b52d9acf-ba5d-4f2e-a0ae-94d8dcae2f34&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b52d9acf-ba5d-4f2e-a0ae-94d8dcae2f34&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;   &amp;lt;div class=&quot;box&quot;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-eb7e291c-c34c-48f3-824b-23982a9c1bd3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-eb7e291c-c34c-48f3-824b-23982a9c1bd3&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-eb7e291c-c34c-48f3-824b-23982a9c1bd3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;  .box {
    width: 200px;
    height: 200px;
    background-color: tomato;
    border: 2px solid #000;
    margin: 10px 0;
    position: relative;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7d15e78c-6ab4-4321-adec-0691a8f14d1a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7d15e78c-6ab4-4321-adec-0691a8f14d1a&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7d15e78c-6ab4-4321-adec-0691a8f14d1a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;  $(btn7).click(() =&amp;gt; {
    const style = {
      &quot;width&quot; : &quot;400px&quot;,
      &quot;height&quot; : &quot;400px&quot;,
      &quot;top&quot; : &quot;200px&quot;,
      &quot;border-radius&quot; : &quot;50%&quot;,
      &quot;background-color&quot; : &quot;yellow&quot;
    };
    // animate(styleProps, duration, easing, callback)
    $(&quot;.box&quot;).animate(style, 1000, 'swing', () =&amp;gt; {
      $(&quot;.box&quot;).animate({
        &quot;width&quot; : &quot;300px&quot;,
        &quot;height&quot; : &quot;300px&quot;,
        &quot;top&quot; : &quot;0&quot;,
        &quot;background-color&quot; : &quot;#369c7a&quot;
      }, 1000, 'easeOutBounce');
    });
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-9ee77cef-2e18-4c04-b45e-4d08f75e6d0e&quot;&gt;
&lt;div id=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot;&gt;
&lt;div data-unitid=&quot;SE-2ce13753-c904-4c05-bc52-8b7a33c807fc&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKSpPd/btsatVOeuIZ/zGWxynQR5b8JPSGF9sEIvK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKSpPd/btsatVOeuIZ/zGWxynQR5b8JPSGF9sEIvK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKSpPd/btsatVOeuIZ/zGWxynQR5b8JPSGF9sEIvK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cKSpPd/btsatVOeuIZ/zGWxynQR5b8JPSGF9sEIvK/img.gif&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;328&quot; height=&quot;480&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-039e8c20-975e-41bf-b4c0-c5cc3428e77c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-039e8c20-975e-41bf-b4c0-c5cc3428e77c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-039e8c20-975e-41bf-b4c0-c5cc3428e77c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-baabe51d-1305-4da5-8102-e7708cbc4450&quot;&gt;
&lt;p id=&quot;SE-11f22410-439c-41d0-b1ea-0c18ff49b5b9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <category>javascript</category>
      <category>JS</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/79</guid>
      <comments>https://cheerup313.tistory.com/79#entry79comment</comments>
      <pubDate>Sun, 16 Apr 2023 11:24:03 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 71일차] jQuery - 제이쿼리 설치 / selector / atter / prop / filter</title>
      <link>https://cheerup313.tistory.com/78</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;a href=&quot;https://jquery.com/&quot;&gt;https://jquery.com/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;SE-9834baa4-81c2-48f2-9a16-117b5566d518&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9834baa4-81c2-48f2-9a16-117b5566d518&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9834baa4-81c2-48f2-9a16-117b5566d518&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b2c93efb-dcb3-465d-9879-2dfce56419e2&quot;&gt;
&lt;p id=&quot;SE-43e01dc0-7aa7-4c84-b55b-d63566f8b107&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 바로 다운로드 해주면 되는데, jQuery의 특징중 하나로&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-de91d81a-5eed-48e3-9e59-048eaa8f619e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-de91d81a-5eed-48e3-9e59-048eaa8f619e&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-de91d81a-5eed-48e3-9e59-048eaa8f619e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-de91d81a-5eed-48e3-9e59-048eaa8f619e&quot;&gt;
&lt;div data-unitid=&quot;SE-de91d81a-5eed-48e3-9e59-048eaa8f619e&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/egLfo7/btsar5wEOHr/Rr5xCTbxjlKm2ADrEWzTik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/egLfo7/btsar5wEOHr/Rr5xCTbxjlKm2ADrEWzTik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/egLfo7/btsar5wEOHr/Rr5xCTbxjlKm2ADrEWzTik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FegLfo7%2Fbtsar5wEOHr%2FRr5xCTbxjlKm2ADrEWzTik%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;175&quot; height=&quot;257&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c26f5f7c-2c3e-4971-a366-beaa92c99dab&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c26f5f7c-2c3e-4971-a366-beaa92c99dab&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c26f5f7c-2c3e-4971-a366-beaa92c99dab&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3b381769-2430-4dea-b4b8-37885705720b&quot;&gt;
&lt;p id=&quot;SE-895880af-64dc-4845-a854-b32ba844b587&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;브라우저 호환이 잘 된다는 점이 있다!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0bcaad6c-f045-4667-90f8-860c94970e1a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 장점때문에 실제로 많이 쓰였다고 하는데, 현재는 React가 대세라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-5bf239b6-f218-427d-a4d7-8aef2a6a9d5d&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8e7c33c6-a842-4a63-84eb-6e73bacf097a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8e7c33c6-a842-4a63-84eb-6e73bacf097a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8e7c33c6-a842-4a63-84eb-6e73bacf097a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8e7c33c6-a842-4a63-84eb-6e73bacf097a&quot;&gt;
&lt;div data-unitid=&quot;SE-8e7c33c6-a842-4a63-84eb-6e73bacf097a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PJo8p/btsakcpZIF1/rbibcLFB6ItNDsqosGg5K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PJo8p/btsakcpZIF1/rbibcLFB6ItNDsqosGg5K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PJo8p/btsakcpZIF1/rbibcLFB6ItNDsqosGg5K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPJo8p%2FbtsakcpZIF1%2FrbibcLFB6ItNDsqosGg5K1%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;683&quot; height=&quot;172&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1028cec3-d142-4510-87a1-0412960c170a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1028cec3-d142-4510-87a1-0412960c170a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1028cec3-d142-4510-87a1-0412960c170a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6f32af34-c5b9-486c-bae8-f0c61583b6b6&quot;&gt;
&lt;p id=&quot;SE-f4475461-ed47-4462-b6ad-8d1ef9eb05c2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다운로드시에는 production ver가 아닌 development version을 받아준다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-20b2502f-b3d6-446e-9e83-41cfe397969b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;production버전은 라이트해서 개발자에겐 맞지 않다고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4bf43458-cadd-4af0-ab17-d4060cab5246&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4bf43458-cadd-4af0-ab17-d4060cab5246&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4bf43458-cadd-4af0-ab17-d4060cab5246&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4bf43458-cadd-4af0-ab17-d4060cab5246&quot;&gt;
&lt;div data-unitid=&quot;SE-4bf43458-cadd-4af0-ab17-d4060cab5246&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5njZX/btsakhdBPOZ/MfITMRoc0udGa0R73KR1Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5njZX/btsakhdBPOZ/MfITMRoc0udGa0R73KR1Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5njZX/btsakhdBPOZ/MfITMRoc0udGa0R73KR1Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5njZX%2FbtsakhdBPOZ%2FMfITMRoc0udGa0R73KR1Lk%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;309&quot; height=&quot;57&quot; data-origin-width=&quot;309&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b269651e-bbcb-4141-bd8d-b1d1f3728a0a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b269651e-bbcb-4141-bd8d-b1d1f3728a0a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b269651e-bbcb-4141-bd8d-b1d1f3728a0a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-09fb8de1-a3dd-41bc-a9d6-7196b55a4bce&quot;&gt;
&lt;p id=&quot;SE-5673fec6-d58e-4536-bf6c-a58f0a8e5ff3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;slim버전은 ajax기능 (비동기처리) 없으므로 X!!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8438f4a9-a2b6-42d9-8c75-fd03c9a7bf84&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나는 uncompressed버전을 받았다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-75c5fc54-9ab6-4f03-8293-86a74627c520&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;파일이뜨면 오른쪽마우스버튼 - 저장!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-576fe846-9323-4f48-a81a-1d587c851b1a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-41a90274-f264-45ee-938f-03c01a8774ea&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4131b45d-a9b3-4958-80b3-dac2f23236b6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4131b45d-a9b3-4958-80b3-dac2f23236b6&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4131b45d-a9b3-4958-80b3-dac2f23236b6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;script src=&quot;js/jquery-3.6.0.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9151db11-7df8-4e97-b899-36b688afa2e0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9151db11-7df8-4e97-b899-36b688afa2e0&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9151db11-7df8-4e97-b899-36b688afa2e0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-50336d42-d4f4-4c7f-878f-0aff9e889e65&quot;&gt;
&lt;p id=&quot;SE-1c9e95a3-25c2-45a1-b766-9e074c511b76&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;head안에 이렇게 써주면 로드 성공!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9d49f59d-372e-4bfa-9e6e-885d8a793ee1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-0a0519c5-541b-4680-8a90-ea3898699716&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-b544f682-80eb-464e-bbe7-5197c9e76891&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;jQuery&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-54251b86-f82c-48c0-8844-2209b1e45fd5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;기본선택자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-46a3cf83-3e02-4426-a200-c24caf454739&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-46a3cf83-3e02-4426-a200-c24caf454739&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-46a3cf83-3e02-4426-a200-c24caf454739&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;    &amp;lt;div class=&quot;wrapper&quot;&amp;gt;
        &amp;lt;p id=&quot;p1&quot; class=&quot;group1&quot;&amp;gt;안녕1&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p2&quot; class=&quot;group1&quot; title=&quot;안녕2&quot;&amp;gt;안녕2&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p3&quot; class=&quot;group2&quot;&amp;gt;안녕3&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p4&quot; class=&quot;group2&quot; title=&quot;안녕4&quot;&amp;gt;안녕4&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p5&quot; class=&quot;group1 group2&quot;&amp;gt;안녕5&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button id=&quot;btn1&quot;&amp;gt;기본선택자&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-27603789-a315-473d-b503-ac7f1afc32c3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-27603789-a315-473d-b503-ac7f1afc32c3&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-27603789-a315-473d-b503-ac7f1afc32c3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;    btn1.addEventListener('click',()=&amp;gt;{
        //const $el=$(&quot;#p1&quot;);
        //console.log($el);
        //$el.css('color','red');//js에는 css와 같은 함수 없음. 자바스크립트 순수메소드와 jquery메소드 구분

        const $group1=$(&quot;.group1&quot;);
        console.log($group1);
        $group1.css('color','blue'); 
        //실제요소 각각에 style 지정
        //method chaining : 메소드 리턴값이 다시 jquery 객체이므로 연달아 메소드 호출가능

        // document.querySelectorAll(&quot;.group1&quot;).forEach((p)=&amp;gt;{
        //     p.style.color='hotpink';
        // }) //순수 자바스크립트로 쓰면 이렇게 김.
        console.log(
        $group1
            .css('color','blue')
            .css('font-size','24px') ===$group1
        )
        
        $(&quot;[title]&quot;).css('text-decoration','underline');
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-87993456-e060-4c46-be05-7a316767a710&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-87993456-e060-4c46-be05-7a316767a710&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-87993456-e060-4c46-be05-7a316767a710&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-87993456-e060-4c46-be05-7a316767a710&quot;&gt;
&lt;div data-unitid=&quot;SE-87993456-e060-4c46-be05-7a316767a710&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;215&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hs3XL/btsamWtfJnp/EkKZl3Oj3T4cL8i7O2wb50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hs3XL/btsamWtfJnp/EkKZl3Oj3T4cL8i7O2wb50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hs3XL/btsamWtfJnp/EkKZl3Oj3T4cL8i7O2wb50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHs3XL%2FbtsamWtfJnp%2FEkKZl3Oj3T4cL8i7O2wb50%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;215&quot; height=&quot;333&quot; data-origin-width=&quot;215&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bf942892-25e0-4445-a3b5-dd9adb4950f9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bf942892-25e0-4445-a3b5-dd9adb4950f9&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bf942892-25e0-4445-a3b5-dd9adb4950f9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bf942892-25e0-4445-a3b5-dd9adb4950f9&quot;&gt;
&lt;div data-unitid=&quot;SE-bf942892-25e0-4445-a3b5-dd9adb4950f9&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7wgKr/btsaw8NnYk5/eGKHtKNlMqCJH6d5pbIivk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7wgKr/btsaw8NnYk5/eGKHtKNlMqCJH6d5pbIivk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7wgKr/btsaw8NnYk5/eGKHtKNlMqCJH6d5pbIivk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7wgKr%2Fbtsaw8NnYk5%2FeGKHtKNlMqCJH6d5pbIivk%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;338&quot; height=&quot;121&quot; data-origin-width=&quot;338&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2850e06b-d0fc-4b68-8c76-32eee9c0083e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2850e06b-d0fc-4b68-8c76-32eee9c0083e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2850e06b-d0fc-4b68-8c76-32eee9c0083e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b82a65c0-2d6f-4bb4-a1bb-4e3b1bce71c2&quot;&gt;
&lt;p id=&quot;SE-1b006b59-0a87-463a-9e86-f1193adc4aa2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.group1 클래스를 가진 p 요소들은 파란색이 되었고, 크기가 커졌다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a8b294d4-5501-4b53-b75f-155736e98e12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;title을 가진 클래스들은 밑줄이 그어졌다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-63912102-8c8f-4cdb-855b-dbfa610e803e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-ca125fba-d351-46b2-ac63-bbe7b76c72af&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제로 제이쿼리의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$group1.css('color','blue');&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이 코드 하나는 자바스크립트로 표현시&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a924b7a2-8801-44b5-b868-cad4e6ccdbff&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;document.querySelectorAll(&quot;.group1&quot;).forEach((p)=&amp;gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-57a2351b-15c3-4746-a3bd-692ff96e21f2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;p.style.color='hotpink';&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9bf56a6d-cc2f-43e6-866c-3a5f0a89c110&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;})&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-433ab6f7-8dd6-449c-9e97-b2f3cd718e54&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 길다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6a916995-5bcf-47fa-b308-5fca37cedb04&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-d83484bd-3d75-4f8f-acb8-0b677dc3e19b&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;jQuery객체&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-2d7643fa-6c58-4802-b868-60c797ac758f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. selector문자열&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-11a730e3-adb1-4a60-81d5-1ed4098a2d67&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. js객체&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d236dc8a-2c3e-4b86-8737-841892db01e5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d236dc8a-2c3e-4b86-8737-841892db01e5&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d236dc8a-2c3e-4b86-8737-841892db01e5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;    btn2.addEventListener('click',(e)=&amp;gt;{
        $(p4).css('background-color',&quot;yellow&quot;);

        $(&quot;#p1,#p2,#p3&quot;).css(&quot;color&quot;,&quot;springgreen&quot;);

        const group2=document.querySelectorAll(&quot;.group2&quot;);
        $(group2).css('text-decoration',&quot;line-through&quot;);
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ed120a2d-2718-42a5-b519-ff898d26f362&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ed120a2d-2718-42a5-b519-ff898d26f362&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ed120a2d-2718-42a5-b519-ff898d26f362&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ed120a2d-2718-42a5-b519-ff898d26f362&quot;&gt;
&lt;div data-unitid=&quot;SE-ed120a2d-2718-42a5-b519-ff898d26f362&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rvV75/btsakgltZqh/bweaxioO1n8aQnzZPa78lK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rvV75/btsakgltZqh/bweaxioO1n8aQnzZPa78lK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rvV75/btsakgltZqh/bweaxioO1n8aQnzZPa78lK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrvV75%2FbtsakgltZqh%2FbweaxioO1n8aQnzZPa78lK%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;320&quot; height=&quot;198&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-aabfb18c-82fb-4dff-95a8-e90071e2c24a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-aabfb18c-82fb-4dff-95a8-e90071e2c24a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-aabfb18c-82fb-4dff-95a8-e90071e2c24a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-52181bda-770d-4203-9892-10871cde6339&quot;&gt;
&lt;p id=&quot;SE-75ef3abf-faec-4ed6-8edb-dc71792df25a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;p4에 대해 배경색이 노란색이 되었고,&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-412c5764-7013-4940-923e-28e9c6ada130&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;p1,p2,p3에 대해서는 css로 색깔을 넣어 색이 지정되었다(springgreen)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6ce6cba9-377f-441e-9ae0-a58949062903&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마지막으로 group2를 가진 셀렉터에 의해 취소선이 지정되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0368ea12-2cb2-46d3-9f31-dac0db3cb8c7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;맨 마지막은 selector문자열을 이용한 방법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-244b2221-6d47-43fe-ab92-9feb470994ae&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-034cd764-b468-4f5e-9a16-ac6a924f623b&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;가상선택자&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fb0aea2f-f005-489c-a662-e0d39b98914f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fb0aea2f-f005-489c-a662-e0d39b98914f&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fb0aea2f-f005-489c-a662-e0d39b98914f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;    &amp;lt;fieldset&amp;gt;
        &amp;lt;legend&amp;gt;input&amp;lt;/legend&amp;gt;
        &amp;lt;input type=&quot;text&quot; placeholder=&quot;text&quot;&amp;gt;
        &amp;lt;input type=&quot;password&quot; placeholder=&quot;password&quot;&amp;gt;
        &amp;lt;br&amp;gt;
        &amp;lt;input type=&quot;radio&quot;&amp;gt;
        &amp;lt;input type=&quot;checkbox&quot;&amp;gt;
        &amp;lt;input type=&quot;button&quot; value=&quot;버튼&quot;&amp;gt;
        &amp;lt;br&amp;gt;
        &amp;lt;input type=&quot;button&quot; id=&quot;btn3&quot; value=&quot;가상선택자&quot;&amp;gt;
    &amp;lt;/fieldset&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-37b06f09-4f5d-45bd-933b-12f18cd32d6c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-37b06f09-4f5d-45bd-933b-12f18cd32d6c&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-37b06f09-4f5d-45bd-933b-12f18cd32d6c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    $(btn3).click((e)=&amp;gt;{
        $(&quot;:text, :password&quot;)
            .css(&quot;background-color&quot;,'tomato')
            .css(&quot;color&quot;,&quot;#fff&quot;);
        $(&quot;:radio, :checkbox&quot;).prop(&quot;checked&quot;,true);

        console.log($(&quot;:button:eq(2)&quot;).val());//getter(jquery객체가 아닌 실제 값 반환)
        $(&quot;:button:eq(2)&quot;).val('Button');// setter
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-92cba5e4-d884-44c5-a64d-183557e721b5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-92cba5e4-d884-44c5-a64d-183557e721b5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-92cba5e4-d884-44c5-a64d-183557e721b5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2e0293c2-e42b-4d1e-b0db-21276fe33ba9&quot;&gt;
&lt;p id=&quot;SE-2d937c71-4122-4581-8b0b-ea80e29b2b36&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가상선택자 버튼을 클릭시, jQuery로 작성한 스크립트문이 작동한다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f25ae301-5b3e-470b-9431-8cb8c7fbb2c1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f25ae301-5b3e-470b-9431-8cb8c7fbb2c1&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f25ae301-5b3e-470b-9431-8cb8c7fbb2c1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-353b8fe8-e159-4392-a903-270d89b834b0&quot;&gt;
&lt;div data-unitid=&quot;SE-353b8fe8-e159-4392-a903-270d89b834b0&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5RQtv/btsakftmVau/bzfUHKyk3IwwCwjZqnDq10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5RQtv/btsakftmVau/bzfUHKyk3IwwCwjZqnDq10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5RQtv/btsakftmVau/bzfUHKyk3IwwCwjZqnDq10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5RQtv%2FbtsakftmVau%2FbzfUHKyk3IwwCwjZqnDq10%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;412&quot; height=&quot;125&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-868a72ab-1117-416f-a5d4-d3308304ae9b&quot;&gt;
&lt;div data-unitid=&quot;SE-868a72ab-1117-416f-a5d4-d3308304ae9b&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lbdxG/btsaqPtZMKw/0ZDKMTYewnxIPkBcRGFGX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lbdxG/btsaqPtZMKw/0ZDKMTYewnxIPkBcRGFGX0/img.png&quot; data-alt=&quot;버튼 클릭전 / 후&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lbdxG/btsaqPtZMKw/0ZDKMTYewnxIPkBcRGFGX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlbdxG%2FbtsaqPtZMKw%2F0ZDKMTYewnxIPkBcRGFGX0%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;377&quot; height=&quot;124&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;버튼 클릭전 / 후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-1a1ae815-eb03-45e1-b2c0-e376b218663b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1a1ae815-eb03-45e1-b2c0-e376b218663b&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1a1ae815-eb03-45e1-b2c0-e376b218663b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5a32a69e-6569-4134-8805-151241f54a25&quot;&gt;
&lt;h4 id=&quot;SE-1b3a00a0-ab11-4add-8d48-608f9da4451d&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;순서관련 가상선택자&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-8f26695f-71fc-4c97-ae28-87b3bb705a3e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:odd&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-aad4509c-22ee-4f9d-bc47-29ea32c5ec05&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:even&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8904d636-d20b-4c01-97c6-c546ab7e4575&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:first&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(css 에서는 first-child, first-of-type으로 사용했었음)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9a4f3f8a-0302-4c51-9d78-e1f01450153d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:last&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(css last-child, last-of-type)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7d06b0d3-844f-40bc-b73b-c10dd926e28c&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-1c7529f5-75b1-4246-b84c-3ddb80043a38&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:eq(index)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e997eb6e-a8ad-4d2c-8724-7db78fb2e0f4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:gt(index)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;n번째보다 큰 애&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b504baf0-2a72-4c81-9061-f239d8e6b9bf&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:lt(index)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;n번째보다 작은애&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c9ec0b7c-f451-4cc3-b5b3-d1e6caabeee5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-cde3548d-8fac-4901-bda5-b4cf79c0e805&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:contains(text)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자식요소 textnode 포함 여부&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-eddb6518-d6f9-4d62-bf26-a954a549fa3f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:has(selector)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자식요소 selector 포함여부&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a052e86b-3d4d-41d0-91f7-27f349df33eb&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:selected&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-11f3753f-54df-4502-a4a6-581fe4875876&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-19add397-1042-4090-971d-940ec90e8e5f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-href=&quot;https://www.w3schools.com/jquery/jquery_ref_selectors.asp&quot;&gt;&lt;a href=&quot;https://www.w3schools.com/jquery/jquery_ref_selectors.asp&quot;&gt;https://www.w3schools.com/jquery/jquery_ref_selectors.asp&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a62634cc-6ef1-48a7-a0e2-a1c05c3920c3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a62634cc-6ef1-48a7-a0e2-a1c05c3920c3&quot; data-a11y-title=&quot;링크&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a62634cc-6ef1-48a7-a0e2-a1c05c3920c3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-407209e4-adac-4a06-8507-d9dab3ef0a52&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-407209e4-adac-4a06-8507-d9dab3ef0a52&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-407209e4-adac-4a06-8507-d9dab3ef0a52&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-181e9f08-5903-4ef0-84a2-d641934802e3&quot;&gt;
&lt;p id=&quot;SE-8153ce35-12b8-4640-b9ea-4d4e97cd914e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;w3schools의 jQuery셀렉터들 확인해보기&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7165ae31-6f00-4be1-8975-00b2290d79ee&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7165ae31-6f00-4be1-8975-00b2290d79ee&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7165ae31-6f00-4be1-8975-00b2290d79ee&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;      &amp;lt;table id=&quot;people&quot;&amp;gt;
        &amp;lt;thead&amp;gt;
          &amp;lt;tr&amp;gt;
            &amp;lt;th&amp;gt;이름&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;혈액형&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;주소&amp;lt;/th&amp;gt;
          &amp;lt;/tr&amp;gt;
        &amp;lt;/thead&amp;gt;
        &amp;lt;tbody&amp;gt;
          &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;홍길동&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;A&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;서울시 강남구&amp;lt;/td&amp;gt;
          &amp;lt;/tr&amp;gt;
          &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;신사임당&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;AB&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;서울시 강서구&amp;lt;/td&amp;gt;
          &amp;lt;/tr&amp;gt;
          &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;장영실&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;B&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;서울시 강북구&amp;lt;/td&amp;gt;
          &amp;lt;/tr&amp;gt;
          &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;이순신&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;O&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;서울시 강동구&amp;lt;/td&amp;gt;
          &amp;lt;/tr&amp;gt;
        &amp;lt;/tbody&amp;gt;
        &amp;lt;tfoot&amp;gt;
          &amp;lt;tr&amp;gt;
            &amp;lt;th colspan=&quot;2&quot;&amp;gt;총원&amp;lt;/th&amp;gt;
            &amp;lt;td&amp;gt;4명&amp;lt;/td&amp;gt;
          &amp;lt;/tr&amp;gt;
        &amp;lt;/tfoot&amp;gt;
        &amp;lt;/table&amp;gt;
        &amp;lt;button id=&quot;btn4&quot;&amp;gt;확인&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c8272815-c4f7-457b-893e-da13b939da28&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c8272815-c4f7-457b-893e-da13b939da28&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c8272815-c4f7-457b-893e-da13b939da28&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;elixir&quot;&gt;&lt;code&gt;        $(btn4).click((e)=&amp;gt;{
            let $selected;
            // $selected = $(&quot;#people tr:even&quot;);
            // $selected =$(&quot;#people tr:first,tr:last&quot;);

            // $selected=$(&quot;#people tr:eq(1)&quot;);
            // $selected=$(&quot;#people tr:gt(0)&quot;);
            // $selected=$(&quot;#people tr:lt(5)&quot;);

            $selected=$(&quot;#people tr:contains('A')&quot;); //textnode 체크
            $selected=$(&quot;#people tr:has(a)&quot;); //selector

            $selected.css({//여러개 지정시 객체사용
                'background-color':'gray',
                'color':'#fff'
            });
        });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-72275d3d-3cb2-4597-8af5-3a4bddd970f5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-72275d3d-3cb2-4597-8af5-3a4bddd970f5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-72275d3d-3cb2-4597-8af5-3a4bddd970f5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b0b3fa92-d383-4adc-884f-54440fa7ae99&quot;&gt;
&lt;p id=&quot;SE-e24fe0ee-d19b-45f7-a117-9ebaf41faaa4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;윗줄부터 하나씩 주석을 없애가며 확인해보겠다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6c460788-9b06-47d9-a1d7-01553f25befd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$selected = $(&quot;#people tr:even&quot;);&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6d58708f-012c-4088-815f-4cbecd0b03b1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6d58708f-012c-4088-815f-4cbecd0b03b1&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6d58708f-012c-4088-815f-4cbecd0b03b1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6d58708f-012c-4088-815f-4cbecd0b03b1&quot;&gt;
&lt;div data-unitid=&quot;SE-6d58708f-012c-4088-815f-4cbecd0b03b1&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b62Hbh/btsagPo7B53/FtCED4XRlDd0XRfk6NOoJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b62Hbh/btsagPo7B53/FtCED4XRlDd0XRfk6NOoJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b62Hbh/btsagPo7B53/FtCED4XRlDd0XRfk6NOoJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb62Hbh%2FbtsagPo7B53%2FFtCED4XRlDd0XRfk6NOoJ0%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;262&quot; height=&quot;211&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5ea8a09c-f120-4aeb-905d-84272da90bc3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5ea8a09c-f120-4aeb-905d-84272da90bc3&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5ea8a09c-f120-4aeb-905d-84272da90bc3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-846a77bc-1d1c-4a8b-a58e-9025a707ba4f&quot;&gt;
&lt;p id=&quot;SE-d77e5b59-c557-48ab-bddd-8c363735ef6e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$selected =$(&quot;#people tr:first,tr:last&quot;);&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b461601b-2071-4e66-9d41-59424fea3ece&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b461601b-2071-4e66-9d41-59424fea3ece&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b461601b-2071-4e66-9d41-59424fea3ece&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b461601b-2071-4e66-9d41-59424fea3ece&quot;&gt;
&lt;div data-unitid=&quot;SE-b461601b-2071-4e66-9d41-59424fea3ece&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;260&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQKrEk/btsaw7gDx63/6RLVF9kol90D5Kwd5B5HKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQKrEk/btsaw7gDx63/6RLVF9kol90D5Kwd5B5HKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQKrEk/btsaw7gDx63/6RLVF9kol90D5Kwd5B5HKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQKrEk%2Fbtsaw7gDx63%2F6RLVF9kol90D5Kwd5B5HKK%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;260&quot; height=&quot;204&quot; data-origin-width=&quot;260&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b2af3a7b-1f7b-40f4-8a12-30dc3af5501c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b2af3a7b-1f7b-40f4-8a12-30dc3af5501c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b2af3a7b-1f7b-40f4-8a12-30dc3af5501c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2a65ffab-6aea-421d-86aa-e8dc643b9a3c&quot;&gt;
&lt;p id=&quot;SE-288a845c-5390-448d-9e3d-0d5738273a3a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$selected=$(&quot;#people tr:eq(1)&quot;);&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ad9ce794-16ef-41fb-9aef-388e0cb726c2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ad9ce794-16ef-41fb-9aef-388e0cb726c2&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ad9ce794-16ef-41fb-9aef-388e0cb726c2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ad9ce794-16ef-41fb-9aef-388e0cb726c2&quot;&gt;
&lt;div data-unitid=&quot;SE-ad9ce794-16ef-41fb-9aef-388e0cb726c2&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xPCGq/btsal5RrQtM/nX9FJ6YgTP9cjQH3owwFY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xPCGq/btsal5RrQtM/nX9FJ6YgTP9cjQH3owwFY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xPCGq/btsal5RrQtM/nX9FJ6YgTP9cjQH3owwFY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxPCGq%2Fbtsal5RrQtM%2FnX9FJ6YgTP9cjQH3owwFY0%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;259&quot; height=&quot;203&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bfb32180-99d6-4e83-b1b6-845895d3bf1e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bfb32180-99d6-4e83-b1b6-845895d3bf1e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bfb32180-99d6-4e83-b1b6-845895d3bf1e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a643eed6-3aa3-4726-b4ba-e7bcd2dbb857&quot;&gt;
&lt;p id=&quot;SE-a6a5fb2e-1981-4769-bfd7-3b3478d45a72&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$selected=$(&quot;#people tr:gt(0)&quot;);&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e4dcb703-87c1-4e04-a7b5-3e289c717cd8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e4dcb703-87c1-4e04-a7b5-3e289c717cd8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e4dcb703-87c1-4e04-a7b5-3e289c717cd8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e4dcb703-87c1-4e04-a7b5-3e289c717cd8&quot;&gt;
&lt;div data-unitid=&quot;SE-e4dcb703-87c1-4e04-a7b5-3e289c717cd8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;249&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAoh2i/btsai46GfL5/quR4q3nOSX3L8kVkKWI7x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAoh2i/btsai46GfL5/quR4q3nOSX3L8kVkKWI7x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAoh2i/btsai46GfL5/quR4q3nOSX3L8kVkKWI7x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAoh2i%2Fbtsai46GfL5%2FquR4q3nOSX3L8kVkKWI7x0%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;249&quot; height=&quot;202&quot; data-origin-width=&quot;249&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-994da08c-828b-4bc8-a46c-43056b94c2d5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-994da08c-828b-4bc8-a46c-43056b94c2d5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-994da08c-828b-4bc8-a46c-43056b94c2d5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-728cef0b-5aa2-4b7f-8e35-c0bcca60cd09&quot;&gt;
&lt;p id=&quot;SE-0ced15f7-e5a8-4ef5-9d4e-bb46b515ec57&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$selected=$(&quot;#people tr:lt(5)&quot;);&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-89fcfe1c-987d-4e46-afb6-0b960155d56e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-89fcfe1c-987d-4e46-afb6-0b960155d56e&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-89fcfe1c-987d-4e46-afb6-0b960155d56e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-89fcfe1c-987d-4e46-afb6-0b960155d56e&quot;&gt;
&lt;div data-unitid=&quot;SE-89fcfe1c-987d-4e46-afb6-0b960155d56e&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDfBGO/btsak2OdwGn/p9CrKh84U0sde0Yb5EDD4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDfBGO/btsak2OdwGn/p9CrKh84U0sde0Yb5EDD4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDfBGO/btsak2OdwGn/p9CrKh84U0sde0Yb5EDD4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDfBGO%2Fbtsak2OdwGn%2Fp9CrKh84U0sde0Yb5EDD4K%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;252&quot; height=&quot;203&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b37eb214-9268-4e7d-b8f7-25046bc9a477&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b37eb214-9268-4e7d-b8f7-25046bc9a477&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b37eb214-9268-4e7d-b8f7-25046bc9a477&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0938c8f5-ef9f-4eb2-95b6-9b437fe42c47&quot;&gt;
&lt;p id=&quot;SE-1325001d-1c92-4020-8428-33415178a544&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$selected=$(&quot;#people tr:contains('A')&quot;); //textnode 체크&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e66db539-be28-48d0-b98e-c3e57f4e8e48&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e66db539-be28-48d0-b98e-c3e57f4e8e48&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e66db539-be28-48d0-b98e-c3e57f4e8e48&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e66db539-be28-48d0-b98e-c3e57f4e8e48&quot;&gt;
&lt;div data-unitid=&quot;SE-e66db539-be28-48d0-b98e-c3e57f4e8e48&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;250&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mVfJG/btsar3r4VLM/xDWz3kSNMxb7xzXNXA9Dck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mVfJG/btsar3r4VLM/xDWz3kSNMxb7xzXNXA9Dck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mVfJG/btsar3r4VLM/xDWz3kSNMxb7xzXNXA9Dck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmVfJG%2Fbtsar3r4VLM%2FxDWz3kSNMxb7xzXNXA9Dck%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;250&quot; height=&quot;197&quot; data-origin-width=&quot;250&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-217b6980-235a-4b62-89ed-8dc6191d684e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-217b6980-235a-4b62-89ed-8dc6191d684e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-217b6980-235a-4b62-89ed-8dc6191d684e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-48b513c5-da07-4c75-aed4-eee409b0a1d4&quot;&gt;
&lt;p id=&quot;SE-de6f79ce-e01c-407c-9cab-c7f90a5ab1ec&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$selected=$(&quot;#people tr:has(a)&quot;); //selector&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2a85899d-5fb3-4abd-84a0-b14664e91f3a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2a85899d-5fb3-4abd-84a0-b14664e91f3a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2a85899d-5fb3-4abd-84a0-b14664e91f3a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2a85899d-5fb3-4abd-84a0-b14664e91f3a&quot;&gt;
&lt;div data-unitid=&quot;SE-2a85899d-5fb3-4abd-84a0-b14664e91f3a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CK9QS/btsaioYOWmt/3oZWDKHmQAHELGUFsgYSZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CK9QS/btsaioYOWmt/3oZWDKHmQAHELGUFsgYSZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CK9QS/btsaioYOWmt/3oZWDKHmQAHELGUFsgYSZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCK9QS%2FbtsaioYOWmt%2F3oZWDKHmQAHELGUFsgYSZk%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;253&quot; height=&quot;201&quot; data-origin-width=&quot;253&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8de03f99-f5ac-4e34-8192-13fa4f57d4b4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8de03f99-f5ac-4e34-8192-13fa4f57d4b4&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8de03f99-f5ac-4e34-8192-13fa4f57d4b4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-59f45394-f494-4efc-b1e7-8e773c1eff40&quot;&gt;
&lt;p id=&quot;SE-4a0f330d-35a7-46b8-af3c-aaa0c4a5ebdb&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-7838d493-bfad-4ffd-8a40-b759c4dca1eb&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;attr(attribute)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;태그 객체에 inline에 작성된 속성관리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;getter&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 해당 속성값을 리턴(작성되어 있지 않다면 undefined 리턴)&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n개의 요소를 가진 경우 0번지 요소의 값을 반환&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;method chaing 끝&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;setter&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 해당 속성을 작성&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n개 모든 요소의 속성을 변경&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;method chaing 계속 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-87bef2ea-a93a-4c08-8b07-5fb26e487087&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-87bef2ea-a93a-4c08-8b07-5fb26e487087&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-87bef2ea-a93a-4c08-8b07-5fb26e487087&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    &amp;lt;div class=&quot;img-wrapper&quot;&amp;gt;
        &amp;lt;img src=&quot;../sample/image/flower1.PNG&quot;&amp;gt;
        &amp;lt;img src=&quot;../sample/image/flower2.PNG&quot; alt=&quot;꽃이미지2&quot;&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button id=&quot;btn1&quot;&amp;gt;attr&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c1cb226d-b7c6-4b75-a7c5-8dc55d08f609&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c1cb226d-b7c6-4b75-a7c5-8dc55d08f609&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c1cb226d-b7c6-4b75-a7c5-8dc55d08f609&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;    $(btn1).click((e)=&amp;gt;{
        const $img = $(&quot;.img-wrapper img&quot;);
        console.log($img);

        //getter
        console.log($img.attr(&quot;src&quot;)); // ../sample/image/flower1.PNG
        console.log($img.attr(&quot;alt&quot;)); //undefined

        //setter
        $img.attr('src','../sample/image/hyunta.jpg');
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-69b6bee3-89c5-476a-8006-e57c9dbb5cba&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-69b6bee3-89c5-476a-8006-e57c9dbb5cba&quot; data-a11y-title=&quot;나란히 놓은 사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-69b6bee3-89c5-476a-8006-e57c9dbb5cba&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-715f0b45-c625-4dee-a74c-a0248fa594ba&quot;&gt;
&lt;div data-unitid=&quot;SE-715f0b45-c625-4dee-a74c-a0248fa594ba&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bthfLt/btsaqQsUAK1/wF9tBH0Ku0AGZSM4D77mhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bthfLt/btsaqQsUAK1/wF9tBH0Ku0AGZSM4D77mhk/img.png&quot; width=&quot;361&quot; data-origin-width=&quot;361&quot; data-origin-height=&quot;537&quot; data-is-animation=&quot;false&quot; style=&quot;width: 57.6641%; margin-right: 10px;&quot; data-widthpercent=&quot;58.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bthfLt/btsaqQsUAK1/wF9tBH0Ku0AGZSM4D77mhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbthfLt%2FbtsaqQsUAK1%2FwF9tBH0Ku0AGZSM4D77mhk%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;361&quot; height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJwRkw/btsai4ySflL/mU4HqKWY2Bhokj3s82er9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJwRkw/btsai4ySflL/mU4HqKWY2Bhokj3s82er9k/img.png&quot; width=&quot;360&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;750&quot; data-is-animation=&quot;false&quot; style=&quot;width: 41.1731%;&quot; data-widthpercent=&quot;41.66&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJwRkw/btsai4ySflL/mU4HqKWY2Bhokj3s82er9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJwRkw%2Fbtsai4ySflL%2FmU4HqKWY2Bhokj3s82er9k%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;360&quot; height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;attr 클릭 전후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0ba256b1-d0fb-4807-b7e2-a845d2db20f8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0ba256b1-d0fb-4807-b7e2-a845d2db20f8&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0ba256b1-d0fb-4807-b7e2-a845d2db20f8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-22ee4bde-f821-433e-8699-4c152884f630&quot;&gt;
&lt;p id=&quot;SE-0f2b599f-a27c-4915-aa1d-2e31c8eb0c30&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클릭 전후로 사진이 바뀐 것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-45317d44-ed7d-4bd8-b80f-be9c7d3bb76e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-df17d027-9be4-4d02-9f53-786dcce6279b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-bf247feb-8731-458b-a1a8-656c7384f692&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;prop&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;논리형으로 처리될 값을 제어 (javascript를 이용한 동적제어)&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;checked : true | false 로 처리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5bcb5211-3abd-4114-9e12-9f4e1287701c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5bcb5211-3abd-4114-9e12-9f4e1287701c&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5bcb5211-3abd-4114-9e12-9f4e1287701c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;$(btn2).click(()=&amp;gt;{
        //attr | prop 비교
        // const $menu2=$(menu2);
        // console.log($menu2.attr(&quot;checked&quot;)); //check확인
        // console.log($menu2.prop(&quot;checked&quot;)); //true | false 
        // $menu2.prop(&quot;checked&quot;,true);   

        const $menuChecked = $(&quot;[name=menu]:checked&quot;);
        console.log($menuChecked);

        const checkedValues = [];

        // for(let i =0; i&amp;lt;$menuChecked.length;i++){
        //     const chk = $menuChecked[i];//순수js객체
        //     checkedValues.push(chk.value);
        // }

        
        $menuChecked.each((index,checkbox)=&amp;gt;{
            console.log(index,checkbox);
            checkedValues.push($(checkbox).val());
        })
        
        console.log(checkedValues);
        alert(checkedValues.length?checkedValues:&quot;선택한 항목이 없습니다.&quot;);
    });
    $(checkAll).change((e)=&amp;gt;{
        // console.log(e.target);//js랑 같음
        // $(&quot;[name=menu]&quot;).prop(&quot;checked&quot;,e.target.checked);
        // $(&quot;[name=menu]&quot;).prop(&quot;checked&quot;,$(e.target).prop(&quot;checked&quot;)); //윗줄과같음
        $(&quot;[name=menu]&quot;).prop(&quot;checked&quot;,$(e.target).is(&quot;:checked&quot;));
        console.log($(e.target).is(&quot;:checked&quot;));//체크되어있으면 true, 아니면 false

    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-57a938f4-2b7c-4319-bfcc-ba3cb4c94968&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-57a938f4-2b7c-4319-bfcc-ba3cb4c94968&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-57a938f4-2b7c-4319-bfcc-ba3cb4c94968&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-57a938f4-2b7c-4319-bfcc-ba3cb4c94968&quot;&gt;
&lt;div data-unitid=&quot;SE-57a938f4-2b7c-4319-bfcc-ba3cb4c94968&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LvYJx/btsar4R2S0d/6punicec75sSFexYNrhGW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LvYJx/btsar4R2S0d/6punicec75sSFexYNrhGW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LvYJx/btsar4R2S0d/6punicec75sSFexYNrhGW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLvYJx%2Fbtsar4R2S0d%2F6punicec75sSFexYNrhGW1%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;499&quot; height=&quot;121&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HOZRt/btsar4YPEez/r4ilrNYdOKs48teZG4Spl1/img.png&quot; width=&quot;442&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;83&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3ba2375f-4831-49d7-a9ca-bcef9385acd7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3ba2375f-4831-49d7-a9ca-bcef9385acd7&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3ba2375f-4831-49d7-a9ca-bcef9385acd7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3d0c43be-9429-4f3a-a4b7-508cc09b16b1&quot;&gt;
&lt;p id=&quot;SE-49eb0c9c-0e4c-4aac-b7a8-258603594ee7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bd2d3fa9-8a45-47ba-8d8d-fd95ed08f5a6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bd2d3fa9-8a45-47ba-8d8d-fd95ed08f5a6&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bd2d3fa9-8a45-47ba-8d8d-fd95ed08f5a6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bd2d3fa9-8a45-47ba-8d8d-fd95ed08f5a6&quot;&gt;
&lt;div data-unitid=&quot;SE-bd2d3fa9-8a45-47ba-8d8d-fd95ed08f5a6&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J0It5/btsak4rIdbz/aZUxK1IeYTKcstiKkIWZK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J0It5/btsak4rIdbz/aZUxK1IeYTKcstiKkIWZK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J0It5/btsak4rIdbz/aZUxK1IeYTKcstiKkIWZK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ0It5%2Fbtsak4rIdbz%2FaZUxK1IeYTKcstiKkIWZK1%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;351&quot; height=&quot;194&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5350ac93-5ecd-4646-8eea-88d1e28bca92&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5350ac93-5ecd-4646-8eea-88d1e28bca92&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5350ac93-5ecd-4646-8eea-88d1e28bca92&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a8b6451d-7fec-46ec-977d-7abff3d4ee4d&quot;&gt;
&lt;p id=&quot;SE-59c4310b-49d7-4a37-8015-9fcb7c518eea&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;햄버거랑 핫도그를 선택하면 알람에 뜨고, console창에도 뜨는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7189b9fc-4771-46eb-962e-c85081f5875a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;선택을 바꿔도 마찬가지이다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-09e0b4da-c262-44ed-8e50-180645ede2e8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8bf0f414-c930-42ce-968f-5ab590f38405&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-76851db4-5cf2-46f0-ad51-839009f35023&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-6bd70a85-a60a-42cb-a8d7-34e1261f0d1f&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;filter&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ac94e5f7-8d46-4cf4-9b14-13d6365e0063&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ac94e5f7-8d46-4cf4-9b14-13d6365e0063&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ac94e5f7-8d46-4cf4-9b14-13d6365e0063&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;    &amp;lt;div class=&quot;wrapper&quot;&amp;gt;
        &amp;lt;p id=&quot;p1&quot; class=&quot;group1&quot;&amp;gt;안녕1&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p2&quot; class=&quot;group1&quot; title=&quot;안녕2&quot;&amp;gt;안녕2&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p3&quot; class=&quot;group2&quot;&amp;gt;안녕3&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p4&quot; class=&quot;group2&quot; title=&quot;안녕4&quot;&amp;gt;안녕4&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p5&quot; class=&quot;group1 group2&quot;&amp;gt;안녕5&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2031a285-acba-47d4-83c9-0a67399b69b0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2031a285-acba-47d4-83c9-0a67399b69b0&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2031a285-acba-47d4-83c9-0a67399b69b0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;button id=&quot;btn1&quot;&amp;gt;filter&amp;lt;/button&amp;gt;
    &amp;lt;button id=&quot;btn2&quot;&amp;gt;first | last&amp;lt;/button&amp;gt;
    &amp;lt;button id=&quot;btn3&quot;&amp;gt;eq&amp;lt;/button&amp;gt;
    &amp;lt;button id=&quot;btn4&quot;&amp;gt;not&amp;lt;/button&amp;gt;
    &amp;lt;button id=&quot;btn5&quot;&amp;gt;get&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0b9e4de2-a5cf-43cc-8778-a197cce8e69a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0b9e4de2-a5cf-43cc-8778-a197cce8e69a&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0b9e4de2-a5cf-43cc-8778-a197cce8e69a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;    $(btn1).click((e)=&amp;gt;{
        const $p=$(&quot;p&quot;);

        // filter(selector)
        // console.log(
        // $p
        //     .filter(&quot;.group1&quot;)
        //     .css(&quot;color&quot;,&quot;blueviolet&quot;)
        //     .filter(&quot;:even&quot;)
        //     .css(&quot;text-decoration&quot;,&quot;underline&quot;)
        // );

        //filter(callbackFunction) : true를 반환한 경우만 요소 유지
        $p
            .filter((index,p)=&amp;gt;{
                return $(p).is(&quot;.group1&quot;);
            })
            .css(&quot;color&quot;,&quot;blueviolet&quot;)
            .filter((index,p)=&amp;gt;$(p).is(&quot;:even&quot;))
            .css(&quot;text-decoration&quot;,&quot;underline&quot;);
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-67dc6f23-cd29-4751-9fb0-2ca8259fc7f8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-67dc6f23-cd29-4751-9fb0-2ca8259fc7f8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-67dc6f23-cd29-4751-9fb0-2ca8259fc7f8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-67dc6f23-cd29-4751-9fb0-2ca8259fc7f8&quot;&gt;
&lt;div data-unitid=&quot;SE-67dc6f23-cd29-4751-9fb0-2ca8259fc7f8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J9Hjk/btsai4MoKwZ/zHvhp1mP2PzggfNEk9SZw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J9Hjk/btsai4MoKwZ/zHvhp1mP2PzggfNEk9SZw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J9Hjk/btsai4MoKwZ/zHvhp1mP2PzggfNEk9SZw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ9Hjk%2Fbtsai4MoKwZ%2FzHvhp1mP2PzggfNEk9SZw0%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;187&quot; height=&quot;203&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-02b05cc6-1428-43e9-94b7-8b18fc71aef0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-02b05cc6-1428-43e9-94b7-8b18fc71aef0&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-02b05cc6-1428-43e9-94b7-8b18fc71aef0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ab743ee0-ec5e-4c39-814c-0e5695ce37da&quot;&gt;
&lt;p id=&quot;SE-c4138a0f-e7c1-4384-8e46-09b8c432c68b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그룹 1에 대해서 보라색으로 바꿈 , css를 underline으로 지정.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-36a0d0b5-23c8-4283-9356-fe2e96a397af&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3ac69cd8-7e3d-4754-9664-a58765a64ad8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3ac69cd8-7e3d-4754-9664-a58765a64ad8&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3ac69cd8-7e3d-4754-9664-a58765a64ad8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;    $(btn2).click((e)=&amp;gt;{
        const $p=$(&quot;p&quot;);
        console.log(
        $p.first()
            .css(&quot;font-size&quot;,&quot;32px&quot;)
            .end() //prevObject 상태로 되돌아가기
            .last()
            .css(&quot;font-size&quot;,&quot;32px&quot;)
        );

    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-904a24c0-3ad7-4809-8f74-1d3084eac99a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-904a24c0-3ad7-4809-8f74-1d3084eac99a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-904a24c0-3ad7-4809-8f74-1d3084eac99a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-904a24c0-3ad7-4809-8f74-1d3084eac99a&quot;&gt;
&lt;div data-unitid=&quot;SE-904a24c0-3ad7-4809-8f74-1d3084eac99a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;224&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qeMH4/btsar5cm4M6/7KnosHumbcsgbDJ3Wqv9W1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qeMH4/btsar5cm4M6/7KnosHumbcsgbDJ3Wqv9W1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qeMH4/btsar5cm4M6/7KnosHumbcsgbDJ3Wqv9W1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqeMH4%2Fbtsar5cm4M6%2F7KnosHumbcsgbDJ3Wqv9W1%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;224&quot; height=&quot;278&quot; data-origin-width=&quot;224&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-29f2d1ac-0923-41b5-a522-daae60f25883&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-29f2d1ac-0923-41b5-a522-daae60f25883&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-29f2d1ac-0923-41b5-a522-daae60f25883&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-90f4f459-452e-4dc7-adfd-4ba260f399e6&quot;&gt;
&lt;p id=&quot;SE-b06cd625-8506-485e-a62f-a139e55a60a3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;처음 [ .first() ] , 마지막 [ .end() ] 에 대해서 글씨 크기를 조정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ca4923ad-5905-4eda-9f78-95fc22b6614c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;둘다 지정하려면 중간에&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;end()&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 적어줘야한다. (&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;prevObject&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 돌아가는 명령어)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c28989af-76e7-4157-80cc-3ef08c8e7392&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-66982ab2-9569-4f6f-9bcb-05c6ab5f2271&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-9b9d67f2-860c-4486-9fbb-3a130a01a7b9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-d0b90175-ccd2-4926-95bf-9821c7aeaadf&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-9e1bf89c-b592-48bc-bcde-3e8a240f6242&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:eq(index)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 선택자일 경우&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-877a734d-277d-407e-926b-86eb07df2191&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;.eq(index)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 메소드일때&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d5ed1f06-b819-4ab1-952e-3b979644069f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;:not(selector)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c3d0b1d8-2d34-4a33-8996-4924717ba629&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;.not(selector)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4ccb3ff5-f386-44c0-bc91-89c9658c0ef0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4ccb3ff5-f386-44c0-bc91-89c9658c0ef0&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4ccb3ff5-f386-44c0-bc91-89c9658c0ef0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;perl&quot;&gt;&lt;code&gt;    $(btn3).click((e)=&amp;gt;{
        $(&quot;p&quot;).eq(3)
            .css(&quot;background-color&quot;,&quot;tomato&quot;);
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-908d754f-677c-4405-ae9b-827e99c46675&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-908d754f-677c-4405-ae9b-827e99c46675&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-908d754f-677c-4405-ae9b-827e99c46675&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-908d754f-677c-4405-ae9b-827e99c46675&quot;&gt;
&lt;div data-unitid=&quot;SE-908d754f-677c-4405-ae9b-827e99c46675&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5GBjP/btsatWfj2T1/kQraf0sv1xh1iPZWMiudkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5GBjP/btsatWfj2T1/kQraf0sv1xh1iPZWMiudkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5GBjP/btsatWfj2T1/kQraf0sv1xh1iPZWMiudkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5GBjP%2FbtsatWfj2T1%2FkQraf0sv1xh1iPZWMiudkK%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;188&quot; height=&quot;197&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-84e94e2c-ed02-4d8d-ac0d-92d2229305f2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-84e94e2c-ed02-4d8d-ac0d-92d2229305f2&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-84e94e2c-ed02-4d8d-ac0d-92d2229305f2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-9034410b-11f1-4569-b949-11b99fc180bf&quot;&gt;
&lt;p id=&quot;SE-94ceb024-f53b-4d12-aee3-c3d525e5fe28&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3번째 인덱스 (0부터시작)에 대해 배경색을 지정해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-69bfc706-f5a4-49d9-83c8-9c99a2e6ccad&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-69bfc706-f5a4-49d9-83c8-9c99a2e6ccad&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-69bfc706-f5a4-49d9-83c8-9c99a2e6ccad&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;    $(btn4).click((e)=&amp;gt;{
        $(&quot;p&quot;).not(&quot;.group1&quot;)
            .css(&quot;color&quot;,&quot;hotpink&quot;);
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-54db1b88-6da9-4d03-8fdb-1ff047ce3fd2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-54db1b88-6da9-4d03-8fdb-1ff047ce3fd2&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-54db1b88-6da9-4d03-8fdb-1ff047ce3fd2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-54db1b88-6da9-4d03-8fdb-1ff047ce3fd2&quot;&gt;
&lt;div data-unitid=&quot;SE-54db1b88-6da9-4d03-8fdb-1ff047ce3fd2&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;206&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VZPkN/btsaw6ouvfP/shXCWtIjktu0kkAmZaww30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VZPkN/btsaw6ouvfP/shXCWtIjktu0kkAmZaww30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VZPkN/btsaw6ouvfP/shXCWtIjktu0kkAmZaww30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVZPkN%2Fbtsaw6ouvfP%2FshXCWtIjktu0kkAmZaww30%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;206&quot; height=&quot;196&quot; data-origin-width=&quot;206&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8f6c28c7-c5d2-4525-b2da-1d360b85486e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8f6c28c7-c5d2-4525-b2da-1d360b85486e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8f6c28c7-c5d2-4525-b2da-1d360b85486e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-79d68262-85e0-4d89-b9d2-304714920ecd&quot;&gt;
&lt;p id=&quot;SE-182a1128-92a4-417d-8ddd-ba7537c9101f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;group1이 아닌 클래스명을 가지는 p인자에 대해서 글씨색을 핫핑크로 지정해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-83207eca-7948-4139-bf61-b20cf04540f8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-5d54e89e-1f58-40d6-a182-1d91d60f2810&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-09d7a437-6d70-4138-b517-b693b9a73f35&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-02a26cee-a3a4-4fdd-89ec-ba452a930047&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;jquery 객체에서 해당 인덱스의 요소를 vanilla js객체로 변환&lt;/b&gt;&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;인덱스를 주지 않으면 배열로 반환&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바스크립트 객체 추출하고 싶을 때 사용(자바스크립트 값으로 추출함)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b48bebf3-935f-44ea-b734-c6484c358425&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b48bebf3-935f-44ea-b734-c6484c358425&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b48bebf3-935f-44ea-b734-c6484c358425&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;    $(btn5).click((e)=&amp;gt;{
        const $p=$(&quot;p&quot;);
        console.log($p.get(0));
        console.log($p.get(1));
        console.log($p.get());//[p#p1.group1, p#p2.group1, p#p3.group2, p#p4.group2, p#p5.group1.group2]
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-675cb19f-c36d-4f8e-b86b-e64d71cfb334&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-675cb19f-c36d-4f8e-b86b-e64d71cfb334&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-675cb19f-c36d-4f8e-b86b-e64d71cfb334&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-675cb19f-c36d-4f8e-b86b-e64d71cfb334&quot;&gt;
&lt;div data-unitid=&quot;SE-675cb19f-c36d-4f8e-b86b-e64d71cfb334&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDUzpa/btsakdoUVJi/htRv5bPBmihKYlJln95Lk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDUzpa/btsakdoUVJi/htRv5bPBmihKYlJln95Lk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDUzpa/btsakdoUVJi/htRv5bPBmihKYlJln95Lk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDUzpa%2FbtsakdoUVJi%2FhtRv5bPBmihKYlJln95Lk0%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;351&quot; height=&quot;142&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c33a7291-69fa-4033-8939-004c04986422&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c33a7291-69fa-4033-8939-004c04986422&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c33a7291-69fa-4033-8939-004c04986422&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-176a7ef4-62da-47c1-929d-257c69fec09f&quot;&gt;
&lt;p id=&quot;SE-4b4b3db7-1fa8-40b6-b501-901103b8003b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫번째줄 : 제이쿼리 객체가 p중 인덱스 첫번째인 것을 반환&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2074b742-4dd8-43dc-8a49-13b5a560b967&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두번째줄 : 제이쿼리 객체가 p중 인덱스 두번째인 것을 반환&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c1a5d1d3-d654-445e-95aa-4152f6ae6d8d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;세번째줄 : 제이쿼리 객체가 p인 것들을 모두 반환&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <category>javascript</category>
      <category>jquery</category>
      <category>JS</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/78</guid>
      <comments>https://cheerup313.tistory.com/78#entry78comment</comments>
      <pubDate>Sun, 16 Apr 2023 10:00:45 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 70일차] 개인미니프로젝트 - 홈페이지 만들기 / git으로 html파일 사이트 주소 생성하기</title>
      <link>https://cheerup313.tistory.com/77</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; letter-spacing: 0px;&quot;&gt;git 으로 html파일 사이트 주소 생성하기&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;SE-347950f6-d280-4a19-aa84-cc521d5372db&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-347950f6-d280-4a19-aa84-cc521d5372db&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-347950f6-d280-4a19-aa84-cc521d5372db&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-347950f6-d280-4a19-aa84-cc521d5372db&quot;&gt;
&lt;div data-unitid=&quot;SE-347950f6-d280-4a19-aa84-cc521d5372db&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;851&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4vk6A/btsakiwPF6u/qYFxTKuciQKKxXmebd1m61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4vk6A/btsakiwPF6u/qYFxTKuciQKKxXmebd1m61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4vk6A/btsakiwPF6u/qYFxTKuciQKKxXmebd1m61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4vk6A%2FbtsakiwPF6u%2FqYFxTKuciQKKxXmebd1m61%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;737&quot; height=&quot;851&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;851&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f1ee1303-56fd-4fd8-8d01-9a12e78abe54&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f1ee1303-56fd-4fd8-8d01-9a12e78abe54&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f1ee1303-56fd-4fd8-8d01-9a12e78abe54&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6a2ba8d6-8772-466e-af29-f4eb87717634&quot;&gt;
&lt;p id=&quot;SE-349da4e4-70a2-4081-8f46-d1c1415e9fdc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 git 에 들어가서&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;repository를 생성&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-37465749-7a3a-483a-ac1d-a8508274c3df&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-4dabbc75-3663-427a-ad72-47295183aa96&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;repository 이름은&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1ea58cda-6779-4524-a710-80b45bca7e91&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;깃허브 아이디.github.io&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f89bf9b2-1077-459c-a635-8d864ef54e5c&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-15031052-32e5-4000-b82d-9aecb2e993db&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot; data-href=&quot;https://git-scm.com/&quot;&gt;&lt;a href=&quot;https://git-scm.com/&quot;&gt;https://git-scm.com/&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에 들어가서 git을 운영체제에 맞게 다운받는다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2966b9e0-834b-4da7-b683-b84afd6bdf4a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(Git 이랑 github 달라요)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1b14503c-456e-4138-8d1f-c9067e1a8c4d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1b14503c-456e-4138-8d1f-c9067e1a8c4d&quot; data-a11y-title=&quot;링크&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1b14503c-456e-4138-8d1f-c9067e1a8c4d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;Git&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;About The advantages of Git compared to other source control systems. Documentation Command reference pages, Pro Git book content, videos and other material. Downloads GUI clients and binary releases for all major platforms. Community Get involved! Bug reporting, mailing list, chat, development and ...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git-scm.com&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3f0b4e2d-4137-48f7-8f3a-9ccd4abe2c80&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3f0b4e2d-4137-48f7-8f3a-9ccd4abe2c80&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3f0b4e2d-4137-48f7-8f3a-9ccd4abe2c80&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2e4c12f0-c9da-4dc9-9aef-e603ae761791&quot;&gt;
&lt;p id=&quot;SE-c8b9bda1-a7c6-4911-ad3a-ae56347c7efe&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;설치는 기본설정대로 하면 됨!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e95837da-aa38-435e-808f-9954de2607b9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7ed6a358-d954-4cc5-b567-a1f9894946ef&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7ed6a358-d954-4cc5-b567-a1f9894946ef&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7ed6a358-d954-4cc5-b567-a1f9894946ef&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7ed6a358-d954-4cc5-b567-a1f9894946ef&quot;&gt;
&lt;div data-unitid=&quot;SE-7ed6a358-d954-4cc5-b567-a1f9894946ef&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;419&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ5wUK/btsaqQfnzhY/7sEBie2n67GWjJK96qpQj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ5wUK/btsaqQfnzhY/7sEBie2n67GWjJK96qpQj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ5wUK/btsaqQfnzhY/7sEBie2n67GWjJK96qpQj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ5wUK%2FbtsaqQfnzhY%2F7sEBie2n67GWjJK96qpQj1%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;419&quot; height=&quot;349&quot; data-origin-width=&quot;419&quot; data-origin-height=&quot;349&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-dcab0d53-7598-4406-802c-df6b8515b427&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-dcab0d53-7598-4406-802c-df6b8515b427&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-dcab0d53-7598-4406-802c-df6b8515b427&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e357ba32-f4d8-423c-bd5d-e49dba43dba3&quot;&gt;
&lt;p id=&quot;SE-fc9f3964-0a6d-4513-8a14-b10a962c81cf&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 g만 쳐도 나오는 git bash를 켜준다&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8944bafa-3b9f-46d5-bc48-6cc2651bfb3f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8944bafa-3b9f-46d5-bc48-6cc2651bfb3f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8944bafa-3b9f-46d5-bc48-6cc2651bfb3f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8944bafa-3b9f-46d5-bc48-6cc2651bfb3f&quot;&gt;
&lt;div data-unitid=&quot;SE-8944bafa-3b9f-46d5-bc48-6cc2651bfb3f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNZgIL/btsaiqbhtbZ/r4q47lmMmorNXKK4s7wHC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNZgIL/btsaiqbhtbZ/r4q47lmMmorNXKK4s7wHC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNZgIL/btsaiqbhtbZ/r4q47lmMmorNXKK4s7wHC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNZgIL%2FbtsaiqbhtbZ%2Fr4q47lmMmorNXKK4s7wHC1%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;573&quot; height=&quot;210&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d91c9db4-20b6-41c1-91af-f1ab74eaafcb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d91c9db4-20b6-41c1-91af-f1ab74eaafcb&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d91c9db4-20b6-41c1-91af-f1ab74eaafcb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-06d319fa-c8ab-4788-a325-b654b354f9a5&quot;&gt;
&lt;p id=&quot;SE-2a343e9b-54f4-4594-a6c8-8696b45361a0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pwd : 현재 위치&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b89edfb3-c532-43b1-bd98-5420d8179bfc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cd : 이동&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e6c694f0-65a4-4d82-9d51-778de7c67f7f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cd .. : 한단계 상위폴더로 이동&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-81c1e69e-4a8a-4a21-bef3-b38d0a02ee57&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cd ~~~ : ~~~라는 폴더로 이동 (하위 접속)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fcdda9a6-540c-4ed7-a366-93f6d15b0e5f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 단계를 내 html파일이 있는 곳까지 이동한다. (홈의 파일 이름은 index.html로 하라고 했다. 이유는 나도모름)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2d2331c6-4cab-412b-a0d6-c9d60bb55d73&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나의 경우 최종 폴더는 내이름이라 폴더명,,,,,,, 으로 가림&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2ed3ca8c-0da4-4414-a0a2-af9bb4b2f291&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2ed3ca8c-0da4-4414-a0a2-af9bb4b2f291&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2ed3ca8c-0da4-4414-a0a2-af9bb4b2f291&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2ed3ca8c-0da4-4414-a0a2-af9bb4b2f291&quot;&gt;
&lt;div data-unitid=&quot;SE-2ed3ca8c-0da4-4414-a0a2-af9bb4b2f291&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uAKz3/btsakgy1LOH/RA0nWHFOfPOVbF51l9mSK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uAKz3/btsakgy1LOH/RA0nWHFOfPOVbF51l9mSK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uAKz3/btsakgy1LOH/RA0nWHFOfPOVbF51l9mSK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuAKz3%2Fbtsakgy1LOH%2FRA0nWHFOfPOVbF51l9mSK0%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;655&quot; height=&quot;205&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0a724768-ec84-40d0-8339-adcd0419ec10&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0a724768-ec84-40d0-8339-adcd0419ec10&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0a724768-ec84-40d0-8339-adcd0419ec10&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f6e49e5a-7aa8-43a1-a84a-1ce7768c6870&quot;&gt;
&lt;p id=&quot;SE-6025c2e9-af32-4fec-ac7a-0c64f05f238a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git init : 내 html 파일을 저장소로 옮기기 위한 명령 (입력하면 오른쪽에 (master) 가 떠야함)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-04a99cdf-0c91-4bda-8582-93421bb2b61c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ls : 존재하는 파일,폴더 뜸&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ed44f198-bb90-4a86-b87d-f025d761ce09&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ls -a : (띄어쓰기 필수) 숨겨진 폴더까지 뜸 . 여기서 .git 파일을 볼수있다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2303c08d-5ded-4eaa-8f88-600109e33a94&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-30f0293a-3366-4f1d-8e1d-f3e0a34fc304&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-30f0293a-3366-4f1d-8e1d-f3e0a34fc304&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-30f0293a-3366-4f1d-8e1d-f3e0a34fc304&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-30f0293a-3366-4f1d-8e1d-f3e0a34fc304&quot;&gt;
&lt;div data-unitid=&quot;SE-30f0293a-3366-4f1d-8e1d-f3e0a34fc304&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bclile/btsak9l5bFJ/eUZKEOe15hm3PEkVXptC0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bclile/btsak9l5bFJ/eUZKEOe15hm3PEkVXptC0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bclile/btsak9l5bFJ/eUZKEOe15hm3PEkVXptC0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbclile%2Fbtsak9l5bFJ%2FeUZKEOe15hm3PEkVXptC0K%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;565&quot; height=&quot;370&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3a32b098-73ca-4bba-ad71-9124de51bc89&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3a32b098-73ca-4bba-ad71-9124de51bc89&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3a32b098-73ca-4bba-ad71-9124de51bc89&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a3eedc3e-7e6c-47e5-8e85-cae4868d38e2&quot;&gt;
&lt;p id=&quot;SE-30eda467-e809-4deb-afd2-96b739ba0034&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git config --list 입력시 user.name과 user.email이 비어있을 것이다. 이걸 채우자.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1da2cc71-0fcb-4f6e-860d-bbeb17f13876&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1da2cc71-0fcb-4f6e-860d-bbeb17f13876&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1da2cc71-0fcb-4f6e-860d-bbeb17f13876&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1da2cc71-0fcb-4f6e-860d-bbeb17f13876&quot;&gt;
&lt;div data-unitid=&quot;SE-1da2cc71-0fcb-4f6e-860d-bbeb17f13876&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;228&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMccUm/btsakhEHDlA/lRpw99I0AC4Wr8IafBzEQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMccUm/btsakhEHDlA/lRpw99I0AC4Wr8IafBzEQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMccUm/btsakhEHDlA/lRpw99I0AC4Wr8IafBzEQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMccUm%2FbtsakhEHDlA%2FlRpw99I0AC4Wr8IafBzEQk%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;228&quot; height=&quot;21&quot; data-origin-width=&quot;228&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7ed949f7-b328-41a7-a065-de9c8cd2d976&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7ed949f7-b328-41a7-a065-de9c8cd2d976&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7ed949f7-b328-41a7-a065-de9c8cd2d976&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7ed949f7-b328-41a7-a065-de9c8cd2d976&quot;&gt;
&lt;div data-unitid=&quot;SE-7ed949f7-b328-41a7-a065-de9c8cd2d976&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;15&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qbX73/btsatWGnDpR/YTxSiT571Kh5RymPhp9SdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qbX73/btsatWGnDpR/YTxSiT571Kh5RymPhp9SdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qbX73/btsatWGnDpR/YTxSiT571Kh5RymPhp9SdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqbX73%2FbtsatWGnDpR%2FYTxSiT571Kh5RymPhp9SdK%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;232&quot; height=&quot;15&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;15&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3618b83b-1cd1-4a9a-8a79-af9b5215905f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3618b83b-1cd1-4a9a-8a79-af9b5215905f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3618b83b-1cd1-4a9a-8a79-af9b5215905f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c527ced2-8176-4126-8926-0f2a5937adc0&quot;&gt;
&lt;p id=&quot;SE-5dee9b99-44b3-42e1-8de7-6252886aa019&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;깃허브 아이디 , 이메일을 &quot; &quot; 쌍따옴표 안에 적기&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ad229156-f9b2-47d2-b96f-f0bb56ced5b5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ex ) git config --global user.name &quot;githubID&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3a550d7a-bc66-4993-80db-27ebeec10e83&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ex ) git config --global user.email &quot;email@naver.com&quot;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3afaac1d-2882-424a-941a-d67f3c5cfa93&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3afaac1d-2882-424a-941a-d67f3c5cfa93&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3afaac1d-2882-424a-941a-d67f3c5cfa93&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3afaac1d-2882-424a-941a-d67f3c5cfa93&quot;&gt;
&lt;div data-unitid=&quot;SE-3afaac1d-2882-424a-941a-d67f3c5cfa93&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CFwBG/btsaw54bKbI/S3Tg4VR4RwCvKXdB8tvgTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CFwBG/btsaw54bKbI/S3Tg4VR4RwCvKXdB8tvgTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CFwBG/btsaw54bKbI/S3Tg4VR4RwCvKXdB8tvgTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCFwBG%2Fbtsaw54bKbI%2FS3Tg4VR4RwCvKXdB8tvgTk%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;563&quot; height=&quot;149&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f16cf693-5df3-4f40-a3de-386392e7d294&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f16cf693-5df3-4f40-a3de-386392e7d294&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f16cf693-5df3-4f40-a3de-386392e7d294&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e6e53c09-4bc1-499a-9e89-033a4b07a54a&quot;&gt;
&lt;p id=&quot;SE-351ae297-8a15-41fb-b460-0c5626093db3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git status를 누르면 바뀔 파일이 뜬다. 아마 처음한다면 모든 파일이 뜰것&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-bd0a2ed0-797b-49c1-90d3-efb79a0f008e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-5d78dfed-fd10-4eea-a1a7-11905686c7c5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이후 git add . 을 입력하면 모든 파일(.)이 추가된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-855c1498-d402-4507-9862-8e1cc2f68553&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2a390aca-1d5e-4daf-bcbe-5e1d1ce11d00&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2a390aca-1d5e-4daf-bcbe-5e1d1ce11d00&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2a390aca-1d5e-4daf-bcbe-5e1d1ce11d00&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2a390aca-1d5e-4daf-bcbe-5e1d1ce11d00&quot;&gt;
&lt;div data-unitid=&quot;SE-2a390aca-1d5e-4daf-bcbe-5e1d1ce11d00&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IoJEo/btsak30DXrS/GUgRDszCnM0a7Qi15Dxjr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IoJEo/btsak30DXrS/GUgRDszCnM0a7Qi15Dxjr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IoJEo/btsak30DXrS/GUgRDszCnM0a7Qi15Dxjr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIoJEo%2Fbtsak30DXrS%2FGUgRDszCnM0a7Qi15Dxjr0%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;560&quot; height=&quot;116&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cd66d620-3ecf-4f3c-b86b-e75fe2d5beed&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cd66d620-3ecf-4f3c-b86b-e75fe2d5beed&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cd66d620-3ecf-4f3c-b86b-e75fe2d5beed&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e6af2309-20a0-4c5c-9339-c9b7caf816bc&quot;&gt;
&lt;p id=&quot;SE-61d6658e-ae98-4c59-b295-e5021993265e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git status를 다시 입력하면 Changes to be committed로 바뀌고, 바뀔 파일이 뜬다!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-69b0a923-18fb-49de-9155-d0ae7faf8318&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-a558c4e0-ef7e-41e7-96d0-b2efad1a5031&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git commit -m &quot;메세지&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-606a1340-1872-41ca-8653-3f5abe7da19c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메세지 안에 설명을 적는다. 나는 세번째 업그레이드이므로 3rd init.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7d55740e-1ba2-4062-a929-3269a46f7f97&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e70215e4-c26c-4194-ba54-1af392ec28d8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git log 검색시, 내가 init한 횟수들이 전부 뜬다! 날짜와 commit 코드 등.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0428799a-9d6e-437a-893e-fa6d331092f9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-06ad3e7a-e2e9-460a-83de-d031e634fe19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git remote add origin 깃허브리포지토리주소 를 입력한다 (origin은 별칭임)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e3e3ed0b-5da7-45e0-b8eb-35c3c038903a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이때 아무것도 안뜨면 성공&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9289e524-29e2-43f1-9c92-76aa1eef6038&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-4f9b1d79-4491-4287-9795-19aa431657e2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;git push origin master입력하면 끝!&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9e1f0956-2449-4699-8e94-4d85c4ade69c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9e1f0956-2449-4699-8e94-4d85c4ade69c&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9e1f0956-2449-4699-8e94-4d85c4ade69c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-9e1f0956-2449-4699-8e94-4d85c4ade69c&quot;&gt;
&lt;div data-unitid=&quot;SE-9e1f0956-2449-4699-8e94-4d85c4ade69c&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/udaoB/btsal5w8Kik/2edh2VLV5QEW9RGNIhKwM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/udaoB/btsal5w8Kik/2edh2VLV5QEW9RGNIhKwM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/udaoB/btsal5w8Kik/2edh2VLV5QEW9RGNIhKwM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FudaoB%2Fbtsal5w8Kik%2F2edh2VLV5QEW9RGNIhKwM0%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;488&quot; height=&quot;113&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7246caf9-5abf-480b-ae1c-98fed327df1c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7246caf9-5abf-480b-ae1c-98fed327df1c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7246caf9-5abf-480b-ae1c-98fed327df1c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-11d37ca3-af62-49e2-b661-b97ab8720251&quot;&gt;
&lt;p id=&quot;SE-102cfbe6-a583-4b9b-8969-576e48c14fee&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;대충 이런게 뜨면 끝임&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ba080408-cb12-40ef-a622-b1f0299182ab&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-4bde42b0-c348-4a74-97b6-a0f1e537353c&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8c3bef53-2bc4-4be3-8462-05b0dbafe90e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-f2b03ff6-61d5-4257-b6cc-d8000f19c8a9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 내 홈페이지 사이트가 생겼다!&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/77</guid>
      <comments>https://cheerup313.tistory.com/77#entry77comment</comments>
      <pubDate>Sat, 15 Apr 2023 22:09:49 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 69일차] Javascript - fetch / async / await</title>
      <link>https://cheerup313.tistory.com/76</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;b&gt;fetch&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;SE-e9d31266-81f0-4179-ba16-fa9d10352a33&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e9d31266-81f0-4179-ba16-fa9d10352a33&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e9d31266-81f0-4179-ba16-fa9d10352a33&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-8792247f-db98-4b21-9313-1ccd0e64577e&quot;&gt;
&lt;p id=&quot;SE-db8be378-a17f-46a3-86ae-1e1b4810183e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- XMLHttpRequest(=callback방식으로 전달하는 객체)의 callback 방식을 개선해 Promise를 통한 then절에서 응답결과를 처리할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-846fe401-e92c-4c33-8c98-c7d04bf0a428&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-846fe401-e92c-4c33-8c98-c7d04bf0a428&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-846fe401-e92c-4c33-8c98-c7d04bf0a428&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn1.onclick = () =&amp;gt; {
    console.log(
      fetch(USER_URL)
        .then((response) =&amp;gt; {
          console.log(response);
          return response.json(); // message body 적힌 부분을 추출하는 promise가 한 단계필요하다.
        })
        .then((data) =&amp;gt; console.log(data))
    );
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bfb1ef35-3fc5-42b8-8469-3f773fa05a87&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bfb1ef35-3fc5-42b8-8469-3f773fa05a87&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bfb1ef35-3fc5-42b8-8469-3f773fa05a87&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-94fcc559-2f46-4e92-9af9-4701f2910720&quot;&gt;
&lt;p id=&quot;SE-89331821-172b-426e-9626-215464ce492d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;USER_URL 은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{&quot;id&quot;:&quot;shqkel&quot;,&quot;company&quot;:&quot;KH정보교육원&quot;,&quot;classroom&quot;:&quot;M&quot;,&quot;cnt&quot;:1} 라는 값을 가진 데이터이다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-08201385-b6fb-4a8d-b7cd-28ee06715216&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-08201385-b6fb-4a8d-b7cd-28ee06715216&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-08201385-b6fb-4a8d-b7cd-28ee06715216&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-08201385-b6fb-4a8d-b7cd-28ee06715216&quot;&gt;
&lt;div data-unitid=&quot;SE-08201385-b6fb-4a8d-b7cd-28ee06715216&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;22&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lbhsX/btsagPJqYyp/57bynm0423uWljSd5h8sm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lbhsX/btsagPJqYyp/57bynm0423uWljSd5h8sm0/img.png&quot; data-alt=&quot;Promise 닫혔을때&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lbhsX/btsagPJqYyp/57bynm0423uWljSd5h8sm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlbhsX%2FbtsagPJqYyp%2F57bynm0423uWljSd5h8sm0%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;352&quot; height=&quot;22&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;22&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Promise 닫혔을때&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8dfcf7f9-a74e-41ba-aa8f-00ee7ca5d823&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8dfcf7f9-a74e-41ba-aa8f-00ee7ca5d823&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8dfcf7f9-a74e-41ba-aa8f-00ee7ca5d823&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8dfcf7f9-a74e-41ba-aa8f-00ee7ca5d823&quot;&gt;
&lt;div data-unitid=&quot;SE-8dfcf7f9-a74e-41ba-aa8f-00ee7ca5d823&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUldvA/btsahAd19yC/TDWD7Eg5UDVKhk2Ng6s5O0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUldvA/btsahAd19yC/TDWD7Eg5UDVKhk2Ng6s5O0/img.png&quot; data-alt=&quot;Promise 열렸을때&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUldvA/btsahAd19yC/TDWD7Eg5UDVKhk2Ng6s5O0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUldvA%2FbtsahAd19yC%2FTDWD7Eg5UDVKhk2Ng6s5O0%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;353&quot; height=&quot;83&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;83&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Promise 열렸을때&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5a2011b9-516e-41b9-a737-fcd3c0bd9764&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5a2011b9-516e-41b9-a737-fcd3c0bd9764&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5a2011b9-516e-41b9-a737-fcd3c0bd9764&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ba7503f0-b5d3-4621-b4ae-f31b046f9320&quot;&gt;
&lt;p id=&quot;SE-8459eae8-44f4-492e-899e-5a2482babf5d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;닫혀있을때는 pending이라는 값을 출력하지만 ( ??? ) 열게되면 resolve에서 값을 받아서 fulfilled 를 출력하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a2ed3f4f-22cf-4b2a-ae52-5713660116e2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a2ed3f4f-22cf-4b2a-ae52-5713660116e2&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a2ed3f4f-22cf-4b2a-ae52-5713660116e2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a2ed3f4f-22cf-4b2a-ae52-5713660116e2&quot;&gt;
&lt;div data-unitid=&quot;SE-a2ed3f4f-22cf-4b2a-ae52-5713660116e2&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YKf3x/btsakdoUNEz/T7i2n7US07ufocZPtjkLbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YKf3x/btsakdoUNEz/T7i2n7US07ufocZPtjkLbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YKf3x/btsakdoUNEz/T7i2n7US07ufocZPtjkLbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYKf3x%2FbtsakdoUNEz%2FT7i2n7US07ufocZPtjkLbK%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;353&quot; height=&quot;388&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c9886fea-11ad-4477-8a08-cce85ccca0a0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c9886fea-11ad-4477-8a08-cce85ccca0a0&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c9886fea-11ad-4477-8a08-cce85ccca0a0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-54485095-4f75-479d-9bcf-d9de8cd285a2&quot;&gt;
&lt;p id=&quot;SE-50af349c-a707-4b99-b4b9-057aeba1fa69&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;USER_URL 에 들어있는 값이 제대로 출력되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-14378a8a-b208-4ce0-a491-d6e0bd28ec09&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;fetch는 return response.json(); 이라는&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;message body가 적힌 부분을 추출하는 코드&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 따로 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-68a0256e-e0d0-470d-909d-ea742bc0f3ed&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8f798c2a-705a-4a03-88b0-e3d34df69322&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-b8e59189-0503-4179-a455-a9159b35a8cf&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;아바타 렌더하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-791088d3-3c8b-4b24-9622-a5413ae4690b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;GITHUB_URL은 github의 개인 정보를 가지고 있다.&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;&lt;span style=&quot;color: #000000;&quot;&gt;유저정보 가져오기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.의 유저아이디로 github 사용자정보 가져오기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2번의 사용자정보중 avatar_url로 img태그 생성하기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3번의 이미지 로딩이 완료되면 메세지 출력하기&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p id=&quot;SE-f064f64a-a50e-42d1-ae1d-1a7cb013f057&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 실행해보려고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9091efa8-09c9-4415-807c-ef5f1f773cb0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9091efa8-09c9-4415-807c-ef5f1f773cb0&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9091efa8-09c9-4415-807c-ef5f1f773cb0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;/script&amp;gt;
  &amp;lt;div class=&quot;img-wrapper&quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;style&amp;gt;
  .img-wrapper img {
    margin: 10px;
    width: 300px;
    border-radius: 50%;
    box-shadow: 5px 5px 10px 5px lightgray;
  }

  &amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fc6698ec-51ac-48ec-bbe5-00823a648fac&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fc6698ec-51ac-48ec-bbe5-00823a648fac&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fc6698ec-51ac-48ec-bbe5-00823a648fac&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn2.onclick = () =&amp;gt; {
    fetch(USER_URL)
      .then((response) =&amp;gt; response.json())
      .then((user) =&amp;gt; {
        console.log(user);
        const {id} = user;
        return fetch(`${GITHUB_URL}${id}`); // 명시적으로 promise 리턴
      })
      .then((response) =&amp;gt; response.json())
      .then((githubUser) =&amp;gt; {
        console.log(githubUser);
        const {avatar_url} = githubUser;
        return loadUserImg(avatar_url);
      })
      .then(() =&amp;gt; console.log(&quot;이미지 로딩 완료!&quot;));

  };

  const loadUserImg = (src) =&amp;gt; {
    return new Promise((resolve) =&amp;gt; {
      const img = document.createElement(&quot;img&quot;);
      img.src = src;
      img.onload = () =&amp;gt; resolve();
      document.querySelector(&quot;.img-wrapper&quot;).append(img);
    });
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b54df869-597d-47a2-8762-140c37de5441&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b54df869-597d-47a2-8762-140c37de5441&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b54df869-597d-47a2-8762-140c37de5441&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-345cdce8-cdcf-4c91-b253-5e0e568d8b1c&quot;&gt;
&lt;p id=&quot;SE-39c9d63b-626d-477f-87b6-cd6e740e1163&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;btn2. onclick 구조 설명 )&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2cfec4ab-5e43-4b21-8bbc-a310145dbb91&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;USER_URL을 fetch로 받으면, then으로 response를 보낸다. (json으로 처리한 body에 적힌 값.)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1805092e-00a8-4ad8-b8fe-ddb9f6c4a568&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;then으로 user를 출력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-cf9870e0-d79e-487c-bbb7-d050bfc2d6be&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;user의 값중 사용할 id값을 리턴한다 (명시적으로 promise리턴)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b862bab7-ec4f-409c-99f2-0b054db3a645&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 리턴한 값을 가지고 다시 then으로 response를 보내고, githubUser를 요청한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e244f8a0-6bfd-40b8-a0eb-225ed1f4cb4a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;const {avatar_url} 으로 아바타url을 꺼낸다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b74216fe-0f57-4946-af60-4ffb319df605&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 꺼낸 url의 이미지를 받아서 querySellector로 img-wrapper에 추가하도록 만든 함수인 loadUserImg에 avatar_url값을 변수로 준다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c17ed8c2-2ec3-4575-baa9-6d59ea0ec43f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c17ed8c2-2ec3-4575-baa9-6d59ea0ec43f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c17ed8c2-2ec3-4575-baa9-6d59ea0ec43f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c17ed8c2-2ec3-4575-baa9-6d59ea0ec43f&quot;&gt;
&lt;div data-unitid=&quot;SE-c17ed8c2-2ec3-4575-baa9-6d59ea0ec43f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;395&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qiy3M/btsaqPHx82S/POol61HLHaNXvlh8UvtLWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qiy3M/btsaqPHx82S/POol61HLHaNXvlh8UvtLWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qiy3M/btsaqPHx82S/POol61HLHaNXvlh8UvtLWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQiy3M%2FbtsaqPHx82S%2FPOol61HLHaNXvlh8UvtLWk%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;395&quot; height=&quot;367&quot; data-origin-width=&quot;395&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d9a00f99-f477-4bac-9d67-761386f31ce5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d9a00f99-f477-4bac-9d67-761386f31ce5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d9a00f99-f477-4bac-9d67-761386f31ce5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d9a00f99-f477-4bac-9d67-761386f31ce5&quot;&gt;
&lt;div data-unitid=&quot;SE-d9a00f99-f477-4bac-9d67-761386f31ce5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD8HQK/btsaqQzEXOO/fPJ7jJcUfSIMuZeznyS6kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD8HQK/btsaqQzEXOO/fPJ7jJcUfSIMuZeznyS6kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD8HQK/btsaqQzEXOO/fPJ7jJcUfSIMuZeznyS6kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD8HQK%2FbtsaqQzEXOO%2FfPJ7jJcUfSIMuZeznyS6kK%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;353&quot; height=&quot;150&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a75c4e62-9399-46e4-ae26-1bd2198305a2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a75c4e62-9399-46e4-ae26-1bd2198305a2&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a75c4e62-9399-46e4-ae26-1bd2198305a2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8186bf2d-88be-484d-bec8-11af38086d1f&quot;&gt;
&lt;p id=&quot;SE-e715f3d5-d3ee-4591-866a-7d69c75aa80b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 이미지 로딩이 완료되었다!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0b046fe7-0a12-44fa-9cba-92171a69e812&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-301c94d1-5940-4495-937e-7f763f44965d&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-2188e0e1-791c-48a6-8030-f5dd48a0dd36&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;axios&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-05045406-6f71-42fe-a889-123e55f4866c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;axios cdn 검색 -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;&amp;lt;script&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&lt;a href=&quot;https://cdnjs.cloudflare.com/ajax/libs/axios/1.0.0-alpha.1/axios.min.js&quot;&gt;https://cdnjs.cloudflare.com/ajax/libs/axios/1.0.0-alpha.1/axios.min.js&lt;/a&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;integrity&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;sha512-xIPqqrfvUAc/Cspuj7Bq0UtHNo/5qkdyngx6Vwt+tmbvTLDszzXM0G6c91LXmGrRx8KEPulT+AfOOez+TeVylg==&quot;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;crossorigin&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;anonymous&quot;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;referrerpolicy&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;no-referrer&quot;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;입력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c7c11b4c-068b-4c74-939b-954b5a8d4208&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-013743ec-e6e4-4a35-9710-483e2c544ad8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-013743ec-e6e4-4a35-9710-483e2c544ad8&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-013743ec-e6e4-4a35-9710-483e2c544ad8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;script&amp;gt;
  btn3.onclick = () =&amp;gt; {
    axios(USER_URL)
      .then((response) =&amp;gt; {
        const {id} = response.data;
        alert(`사용자의 아이디는 ${id}입니다.`);
      });
  };
  &amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e5c44f47-f1b7-4755-b2a1-872b560c3a5d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e5c44f47-f1b7-4755-b2a1-872b560c3a5d&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e5c44f47-f1b7-4755-b2a1-872b560c3a5d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e5c44f47-f1b7-4755-b2a1-872b560c3a5d&quot;&gt;
&lt;div data-unitid=&quot;SE-e5c44f47-f1b7-4755-b2a1-872b560c3a5d&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E9wrt/btsakcctZ42/Mlc3NQDpVndkMe8yeYshhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E9wrt/btsakcctZ42/Mlc3NQDpVndkMe8yeYshhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E9wrt/btsakcctZ42/Mlc3NQDpVndkMe8yeYshhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE9wrt%2FbtsakcctZ42%2FMlc3NQDpVndkMe8yeYshhK%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;433&quot; height=&quot;78&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-96c94c7f-b85a-4ae2-bf97-b7848da5cbb1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-96c94c7f-b85a-4ae2-bf97-b7848da5cbb1&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-96c94c7f-b85a-4ae2-bf97-b7848da5cbb1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-99f01a4e-58d1-4c41-9732-3e41df5c39c2&quot;&gt;
&lt;p id=&quot;SE-f1a48c96-da6f-478c-ad5c-7c945b56c2a2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위의 fetch보다 더 빠르게 확인 가능.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-885b2ad6-755f-4a44-8e0a-9e2b11dd8047&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-885b2ad6-755f-4a44-8e0a-9e2b11dd8047&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-885b2ad6-755f-4a44-8e0a-9e2b11dd8047&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;  btn4.onclick = () =&amp;gt; {
    axios(&quot;https://dog.ceo/api/breeds/image/random&quot;)
      .then(({data}) =&amp;gt; loadDogImage(data))
      .then((img) =&amp;gt; {
        img.remove();
        console.log('dog 이미지 제거완료!');
      });
  };

  const loadDogImage = (data) =&amp;gt; {
    return new Promise((resolve) =&amp;gt; {
      const {message, status} = data;
        if(status === 'success'){
          const img = document.createElement(&quot;img&quot;);
          img.src = message;
          img.onload = () =&amp;gt; {
            console.log('dog 이미지 로드완료!');
            setTimeout(() =&amp;gt; {
              resolve(img);
            }, 3000);
          };
          const wrapper = document.querySelector(&quot;.dogs&quot;);
          wrapper.innerHTML = &quot;&quot;; // 초기화
          wrapper.append(img);
        }
    });
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-756e609c-42e5-44f3-9300-22eea6143ed8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-756e609c-42e5-44f3-9300-22eea6143ed8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-756e609c-42e5-44f3-9300-22eea6143ed8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-756e609c-42e5-44f3-9300-22eea6143ed8&quot;&gt;
&lt;div data-unitid=&quot;SE-756e609c-42e5-44f3-9300-22eea6143ed8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNwN2w/btsakdbp60k/HY7wK7C2eiCq6Yfz38DV61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNwN2w/btsakdbp60k/HY7wK7C2eiCq6Yfz38DV61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNwN2w/btsakdbp60k/HY7wK7C2eiCq6Yfz38DV61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNwN2w%2Fbtsakdbp60k%2FHY7wK7C2eiCq6Yfz38DV61%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;355&quot; height=&quot;524&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;524&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-eaf91488-9021-4217-90f0-82a1a8ab8eb5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-eaf91488-9021-4217-90f0-82a1a8ab8eb5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-eaf91488-9021-4217-90f0-82a1a8ab8eb5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c0e59464-660d-40cf-af04-cd450e5b2e62&quot;&gt;
&lt;p id=&quot;SE-0566b87e-e431-4463-94b9-997ff403973d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 강아지가 로드되고, 3초뒤에 제거된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-360c166b-8fc6-4b7c-a6e6-3c356754e94d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-360c166b-8fc6-4b7c-a6e6-3c356754e94d&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-360c166b-8fc6-4b7c-a6e6-3c356754e94d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-360c166b-8fc6-4b7c-a6e6-3c356754e94d&quot;&gt;
&lt;div data-unitid=&quot;SE-360c166b-8fc6-4b7c-a6e6-3c356754e94d&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tuboW/btsahJ3ePyP/16m79TOVJCTCdeKPMAyjZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tuboW/btsahJ3ePyP/16m79TOVJCTCdeKPMAyjZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tuboW/btsahJ3ePyP/16m79TOVJCTCdeKPMAyjZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtuboW%2FbtsahJ3ePyP%2F16m79TOVJCTCdeKPMAyjZ1%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;347&quot; height=&quot;40&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7f5a1e55-df54-43da-89ad-69ce15130146&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7f5a1e55-df54-43da-89ad-69ce15130146&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7f5a1e55-df54-43da-89ad-69ce15130146&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3fb6be74-cab6-4562-b771-3eb52cd8b4e8&quot;&gt;
&lt;p id=&quot;SE-c3f6c5df-2d1e-45a5-b3bc-d7f54c87560d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;강아지 사진은 랜덤으로 나오고, dog ceo 라는 사이트에서 dog api 를 가져온 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-993e8248-421f-49cc-8149-1ad8081e87ee&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-d348682a-3848-4e31-86c5-a1f28404d8ba&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-4a51ec80-1c6b-46b6-b667-44aa20e0c401&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;async&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-fb98d10f-8ab7-4c5e-9dbd-6ed718ce54b9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ES2017에 추가된 일반함수의 Promise화를 지원하는 문법&lt;/span&gt;&lt;/p&gt;
&lt;h4 id=&quot;SE-5ff07c40-ff60-41c1-972c-53cceabb4175&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;await&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-12e18efd-3f40-46e3-91c6-501e99fcf504&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;async함수 안에서만 사용이 가능&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-bbe0943d-bb49-4a37-899d-a7251133291c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;promise의 동기적 처리를 지원&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0b6e89ab-1f29-4af5-96b2-da9e71e8cb51&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0b6e89ab-1f29-4af5-96b2-da9e71e8cb51&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0b6e89ab-1f29-4af5-96b2-da9e71e8cb51&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn1.addEventListener('click', () =&amp;gt; {
    zoo()
      .then((value) =&amp;gt; console.log(value));
  });
  const zoo = async () =&amp;gt; 10;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4119b92c-cf31-4671-a045-9b61659fafdb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4119b92c-cf31-4671-a045-9b61659fafdb&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4119b92c-cf31-4671-a045-9b61659fafdb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4119b92c-cf31-4671-a045-9b61659fafdb&quot;&gt;
&lt;div data-unitid=&quot;SE-4119b92c-cf31-4671-a045-9b61659fafdb&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zNT4R/btsaipwEu1N/Utk1aTcUM1An6B4cpMgAcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zNT4R/btsaipwEu1N/Utk1aTcUM1An6B4cpMgAcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zNT4R/btsaipwEu1N/Utk1aTcUM1An6B4cpMgAcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzNT4R%2FbtsaipwEu1N%2FUtk1aTcUM1An6B4cpMgAcK%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;347&quot; height=&quot;23&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e51697db-8c61-4f5b-8c4f-633cc5f1fb29&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e51697db-8c61-4f5b-8c4f-633cc5f1fb29&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e51697db-8c61-4f5b-8c4f-633cc5f1fb29&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-21353957-e557-4d09-b680-1777c23f9a7c&quot;&gt;
&lt;p id=&quot;SE-d9584cf7-6395-4d6b-9c81-6d96d4ff801b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;async로 불러온 zoo가 콘솔창에 Promise문법인 then으로 전달된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ae7c36ff-538c-46b9-a15f-29545dd47a99&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ae7c36ff-538c-46b9-a15f-29545dd47a99&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ae7c36ff-538c-46b9-a15f-29545dd47a99&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;  btn2.addEventListener('click', async () =&amp;gt; {
    // 프라미스 사용
    // xoo()
    //   .then((value) =&amp;gt; console.log(value));

    const value = await xoo();
    console.log(value);
  });

  const xoo = () =&amp;gt; new Promise((resolve) =&amp;gt; {
    setTimeout(() =&amp;gt; resolve(100), 3000);
  });

  (async () =&amp;gt; {
    const value = await xoo();
    console.log(value);
  })();&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ed6f95a6-7bef-4015-80de-b766d3f8baa4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ed6f95a6-7bef-4015-80de-b766d3f8baa4&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ed6f95a6-7bef-4015-80de-b766d3f8baa4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ed6f95a6-7bef-4015-80de-b766d3f8baa4&quot;&gt;
&lt;div data-unitid=&quot;SE-ed6f95a6-7bef-4015-80de-b766d3f8baa4&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sw5Tt/btsajcYaMA7/kTaoWKEkq9hb5AT56ty90K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sw5Tt/btsajcYaMA7/kTaoWKEkq9hb5AT56ty90K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sw5Tt/btsajcYaMA7/kTaoWKEkq9hb5AT56ty90K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsw5Tt%2FbtsajcYaMA7%2FkTaoWKEkq9hb5AT56ty90K%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;355&quot; height=&quot;21&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f4313aae-f113-4da7-8b92-33046ff26228&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f4313aae-f113-4da7-8b92-33046ff26228&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f4313aae-f113-4da7-8b92-33046ff26228&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8f29f6ab-8340-4dd9-9095-fb1ca57860a9&quot;&gt;
&lt;p id=&quot;SE-99657008-6853-4607-b039-8bf769cd2174&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;창이켜지고 3초뒤, 100이 resolve를 통해서 출력되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b8988e03-0477-4406-a5f9-fe16186605c8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;xoo는 Promise문법, async로 전달한 await xoo(=value)를 통해 value값(=100)이 전달된다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-4c5ea496-b31d-4194-ae1e-20fbd97bef1d&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-299dcc42-d860-497f-95ec-d4077fd2f765&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-299dcc42-d860-497f-95ec-d4077fd2f765&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-299dcc42-d860-497f-95ec-d4077fd2f765&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn3.addEventListener('click', async () =&amp;gt; {
    // loadScript('js/1.js')
    //   .then(() =&amp;gt; loadScript(bar()))
    //   .then(() =&amp;gt; loadScript(car()))
    //   .then(() =&amp;gt; dar());

    await loadScript('js/1.js'); // resolve되기전까지 기다린다.(동기적)
    let path = bar();
    await loadScript(path);
    path = car();
    await loadScript(path);
    dar();
  });

  const loadScript = (path) =&amp;gt; new Promise((resolve) =&amp;gt; {
    const script = document.createElement('script');
    script.src = path;
    script.onload = () =&amp;gt; {
      console.log(`${path} 로드 완료!`);
      resolve();
    } 
    document.head.append(script);
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6d5c8184-7a19-4821-be7f-d173cab653de&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6d5c8184-7a19-4821-be7f-d173cab653de&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6d5c8184-7a19-4821-be7f-d173cab653de&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6d5c8184-7a19-4821-be7f-d173cab653de&quot;&gt;
&lt;div data-unitid=&quot;SE-6d5c8184-7a19-4821-be7f-d173cab653de&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUkR9W/btsal3TDbVv/TjZ5ZJVHuDNfl4p6twRcYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUkR9W/btsal3TDbVv/TjZ5ZJVHuDNfl4p6twRcYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUkR9W/btsal3TDbVv/TjZ5ZJVHuDNfl4p6twRcYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUkR9W%2Fbtsal3TDbVv%2FTjZ5ZJVHuDNfl4p6twRcYk%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;347&quot; height=&quot;127&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;127&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-45e13e05-c0d9-4995-8b1b-4bef190ba050&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-45e13e05-c0d9-4995-8b1b-4bef190ba050&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-45e13e05-c0d9-4995-8b1b-4bef190ba050&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8885d72e-3778-47b4-9024-7c084d04f9ac&quot;&gt;
&lt;p id=&quot;SE-1d4f7f31-4221-4eda-883c-1c502a39413d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주석 부분은 promise문법.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-382ed8ef-1077-4381-b50b-0aa4f5efa57a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-007ca6db-2bd6-4377-8a49-9400c9c8002e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;await fetch&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e48a938d-acb9-4d70-a443-f18e604ce6af&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e48a938d-acb9-4d70-a443-f18e604ce6af&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e48a938d-acb9-4d70-a443-f18e604ce6af&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;  const USER_URL = &quot;https://asia-northeast3-focal-elf-326215.cloudfunctions.net/user&quot;; // google cloud function
  const GITHUB_URL = &quot;https://api.github.com/users/&quot;;
  btn4.addEventListener('click', async () =&amp;gt; {
    const resp = await axios(USER_URL);
    console.log(resp);
    const {data : {id}} = resp;

    const {data: {avatar_url}} = await axios(GITHUB_URL + id)
    console.log(avatar_url);

    const img = await loadImg(avatar_url);
    setTimeout(() =&amp;gt; img.remove(), 3000);
  
  });

  const loadImg = (url) =&amp;gt; new Promise((resolve) =&amp;gt; {
    const img = document.createElement(&quot;img&quot;);
    img.src = url;
    img.onload = () =&amp;gt; resolve(img);
    document.body.append(img);
  });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d97349b2-2c48-4042-bfd9-997bcd845a36&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d97349b2-2c48-4042-bfd9-997bcd845a36&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d97349b2-2c48-4042-bfd9-997bcd845a36&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d97349b2-2c48-4042-bfd9-997bcd845a36&quot;&gt;
&lt;div data-unitid=&quot;SE-d97349b2-2c48-4042-bfd9-997bcd845a36&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bz8vQe/btsah9ULVUs/UE4CbtrRvKaNNeP3p978f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bz8vQe/btsah9ULVUs/UE4CbtrRvKaNNeP3p978f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bz8vQe/btsah9ULVUs/UE4CbtrRvKaNNeP3p978f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz8vQe%2Fbtsah9ULVUs%2FUE4CbtrRvKaNNeP3p978f1%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;453&quot; height=&quot;452&quot; data-origin-width=&quot;453&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-be14d1a9-651f-4908-a6b0-5556d28ce499&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-be14d1a9-651f-4908-a6b0-5556d28ce499&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-be14d1a9-651f-4908-a6b0-5556d28ce499&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-be14d1a9-651f-4908-a6b0-5556d28ce499&quot;&gt;
&lt;div data-unitid=&quot;SE-be14d1a9-651f-4908-a6b0-5556d28ce499&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/36NYL/btsah9ULVT4/b8PBHA3OG7xLLcHzl1Mfgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/36NYL/btsah9ULVT4/b8PBHA3OG7xLLcHzl1Mfgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/36NYL/btsah9ULVT4/b8PBHA3OG7xLLcHzl1Mfgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F36NYL%2Fbtsah9ULVT4%2Fb8PBHA3OG7xLLcHzl1Mfgk%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;352&quot; height=&quot;195&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5ea7d806-7ce9-448b-aac4-935ef1bcc842&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5ea7d806-7ce9-448b-aac4-935ef1bcc842&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5ea7d806-7ce9-448b-aac4-935ef1bcc842&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-9f7c376e-757a-485e-9697-3ee52c056958&quot;&gt;
&lt;p id=&quot;SE-084bee6b-25cd-4f2c-80bd-0d3ebf27a725&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Promise때와 같은 사진 불러오기 성공&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-db6e0fd9-25aa-47e9-bb74-8ce441fe5fd8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-26d7ff77-499f-45e6-9060-0b20734adaa5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Random Dog&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cfbe00cf-2784-4f70-bd3a-a913fb7ed002&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cfbe00cf-2784-4f70-bd3a-a913fb7ed002&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cfbe00cf-2784-4f70-bd3a-a913fb7ed002&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;  btn5.onclick = async () =&amp;gt; {
    const {data} = await axios(&quot;https://dog.ceo/api/breeds/image/random&quot;);
    const img = await loadDogImage(data);
    img.remove();
    console.log('dog 이미지 제거완료!');
  };

  const loadDogImage = (data) =&amp;gt; {
    return new Promise((resolve) =&amp;gt; {
      const {message, status} = data;
        if(status === 'success'){
          const img = document.createElement(&quot;img&quot;);
          img.src = message;
          img.onload = () =&amp;gt; {
            console.log('dog 이미지 로드완료!');
            setTimeout(() =&amp;gt; {
              resolve(img);
            }, 3000);
          };
          const wrapper = document.querySelector(&quot;.dogs&quot;);
          wrapper.innerHTML = &quot;&quot;; // 초기화
          wrapper.append(img);
        }
    });
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b92be496-449d-4197-8f33-1d03950c6b9d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b92be496-449d-4197-8f33-1d03950c6b9d&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b92be496-449d-4197-8f33-1d03950c6b9d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b92be496-449d-4197-8f33-1d03950c6b9d&quot;&gt;
&lt;div data-unitid=&quot;SE-b92be496-449d-4197-8f33-1d03950c6b9d&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;356&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/miZl3/btsafODNmvJ/Evgv59rxfv3Q4x3I55yIx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/miZl3/btsafODNmvJ/Evgv59rxfv3Q4x3I55yIx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/miZl3/btsafODNmvJ/Evgv59rxfv3Q4x3I55yIx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmiZl3%2FbtsafODNmvJ%2FEvgv59rxfv3Q4x3I55yIx1%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;356&quot; height=&quot;360&quot; data-origin-width=&quot;356&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Frontend/Javascript</category>
      <category>async</category>
      <category>await</category>
      <category>fetch</category>
      <category>javascript</category>
      <category>JS</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/76</guid>
      <comments>https://cheerup313.tistory.com/76#entry76comment</comments>
      <pubDate>Sat, 15 Apr 2023 22:07:33 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 68일차] Javascript - Promise (프로미스)</title>
      <link>https://cheerup313.tistory.com/75</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;b&gt;Promise&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;SE-e629f515-a7c5-4010-a94e-8132e20b63c1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e629f515-a7c5-4010-a94e-8132e20b63c1&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e629f515-a7c5-4010-a94e-8132e20b63c1&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-ddcb1afe-920a-4e99-9286-fa2c240f865c&quot;&gt;
&lt;p id=&quot;SE-4c8105c3-11d5-4d7e-8ef9-a458b53bc62d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기존 callback함수를 통한 비동기처리를 개선하기 위한 문법&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e171ddf9-13f0-41b7-9e56-0f8eeb00be8f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;producer/consumer 코드를 연결&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-07de6ede-adc3-43ba-ba0b-d45b71df5af7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;producer(비동기처리가 포함된 코드)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-becc50b4-26d4-4ffe-ae2c-cd60c4b74ce8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;consumer(비동기완료 후 실행할 코드)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b8ddde09-2a83-4f01-a089-56cbed3e7963&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-dfa92ca2-1c3f-487d-9915-6a7f3525a2c3&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;속성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;status&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;pending -&amp;gt; fulfilled(이행) / rejected(거부)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;result&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;undefined -&amp;gt; value(이행할 경우) / error 객체 (거부될 경우)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-501166a2-b337-422f-87a7-5322b8e3e3ab&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-fe2b1c9b-a11f-4d30-a891-1ca803392617&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;resolve&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 이행시 호출할 콜백함수 (then에서 전달) -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실행시 PromiseState : fulfilled / PromiseResult : value&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f900fb2f-c433-400f-b112-8b287c176ee9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;reject&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 거부시 호출할 콜백함수 (catch에서 전달) -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;거부시 PromiseState : rejected / PromiseResult : error&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fd5953f3-536d-41ab-a31e-ad3d0136158a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fd5953f3-536d-41ab-a31e-ad3d0136158a&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fd5953f3-536d-41ab-a31e-ad3d0136158a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;  btn1.onclick = () =&amp;gt; {
    // resolve 이행시 호출할 콜백함수. then에서 전달.
    // reject 거부시 호출할 콜백함수. catch에서 전달.
    const promise = new Promise((resolve, reject) =&amp;gt; {
      const num = Math.floor(Math.random() * 2);  // 0 1
      console.log(&quot;producing.....&quot;, num);

      try {
        if(!num) throw new Error(&quot;오류 발생&quot;);
        resolve(num); // 이행 콜백호출
      } catch(e){
        reject(e); // 거부 콜백 호출
      }
    });
    console.log(promise); 

    promise
      .then((value) =&amp;gt; {
        console.log('result : ', value);
      })
      .catch((err) =&amp;gt; {
        console.error('result : ', err);
      });
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3bd1dfc6-aca4-40df-8c7a-0bccd67889c9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3bd1dfc6-aca4-40df-8c7a-0bccd67889c9&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3bd1dfc6-aca4-40df-8c7a-0bccd67889c9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b62bd247-6c69-4177-bbf8-bb2da1d36894&quot;&gt;
&lt;p id=&quot;SE-bf4d9ad1-cfaf-41b5-9785-88a40e7e38e0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 프로미스 객체를 만들고 프로미스 객체 안에 resolve, reject 를 인자로 가지는 callback 함수를 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b4d1ffab-233f-4274-a852-f60dc9e62f83&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;resolve : 이행시 호출할 콜백함수 (then에서 전달) -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실행시 PromiseState : fulfilled / PromiseResult : value&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ad1f9183-48d5-427b-8b73-8fd5b058a25c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;reject : 거부시 호출할 콜백함수 (catch에서 전달) -&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;거부시 PromiseState : rejected / PromiseResult : error&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b6f9eedb-792b-4670-b90a-52f9685bc81e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같은 결과가 나올 것으로 예상이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-cf3f2431-62cd-4cee-9d60-6b6c9067a2b1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1e5f64e4-2140-407c-85fc-8254561f3785&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1e5f64e4-2140-407c-85fc-8254561f3785&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1e5f64e4-2140-407c-85fc-8254561f3785&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1e5f64e4-2140-407c-85fc-8254561f3785&quot;&gt;
&lt;div data-unitid=&quot;SE-1e5f64e4-2140-407c-85fc-8254561f3785&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oRCuF/btr9RuYry3n/hGIAXKNjO72WmAzq7xaje0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oRCuF/btr9RuYry3n/hGIAXKNjO72WmAzq7xaje0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oRCuF/btr9RuYry3n/hGIAXKNjO72WmAzq7xaje0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoRCuF%2Fbtr9RuYry3n%2FhGIAXKNjO72WmAzq7xaje0%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;451&quot; height=&quot;115&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;115&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cddd4643-1332-4f0c-9f2a-851aa89ec649&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cddd4643-1332-4f0c-9f2a-851aa89ec649&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cddd4643-1332-4f0c-9f2a-851aa89ec649&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-332e53da-f2dd-4104-8210-aa524ce77b93&quot;&gt;
&lt;p id=&quot;SE-ad3533d5-aa9e-4415-a58d-d9532e69ca0d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행시 다음과 같은 코드가 나오고&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c0259a8b-a396-4519-a3f5-bd4091d6d7c1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c0259a8b-a396-4519-a3f5-bd4091d6d7c1&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c0259a8b-a396-4519-a3f5-bd4091d6d7c1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c0259a8b-a396-4519-a3f5-bd4091d6d7c1&quot;&gt;
&lt;div data-unitid=&quot;SE-c0259a8b-a396-4519-a3f5-bd4091d6d7c1&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xTt7Q/btr9QUW9QfM/cuUcQY4ioZsabkCURkjNe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xTt7Q/btr9QUW9QfM/cuUcQY4ioZsabkCURkjNe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xTt7Q/btr9QUW9QfM/cuUcQY4ioZsabkCURkjNe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxTt7Q%2Fbtr9QUW9QfM%2FcuUcQY4ioZsabkCURkjNe0%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;452&quot; height=&quot;165&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5d74afeb-c7c5-4ee5-a780-57279178dd9f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5d74afeb-c7c5-4ee5-a780-57279178dd9f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5d74afeb-c7c5-4ee5-a780-57279178dd9f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-855c5df1-5f43-41e6-a9d2-79d2190d18c6&quot;&gt;
&lt;p id=&quot;SE-275c1461-ea5b-4936-bfc7-eafdaa933d29&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;거부시 다음과 같은 코드가 나오게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ea010706-8307-4245-a412-8caca2aa4647&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-bcc259d2-6663-4c53-a6bf-5996fd59d68b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;setTimeout을 Promise로 작성하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ef8ee055-69d0-41e4-a895-cba3ad607282&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ef8ee055-69d0-41e4-a895-cba3ad607282&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ef8ee055-69d0-41e4-a895-cba3ad607282&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn2.onclick = () =&amp;gt; {
    getTimeoutPromise(&quot;안녕&quot;, 2000)
    .then((value) =&amp;gt; {
      alert(value);
      // then은 암묵적으로 promise객체를 만들어 반환 (promise chain)
    })
    .then(() =&amp;gt; {
      alert(&quot;실행 끝~&quot;);
    });
  };
  const getTimeoutPromise = (msg, millis) =&amp;gt; {
    return new Promise((resolve) =&amp;gt; {
      setTimeout(() =&amp;gt; {
        resolve(msg);
      }, millis);
    });
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-db66afac-1b98-4cb3-b5a2-9f926d076558&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-db66afac-1b98-4cb3-b5a2-9f926d076558&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-db66afac-1b98-4cb3-b5a2-9f926d076558&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4875b4c2-03a6-4891-bafa-5e8c3751a4f1&quot;&gt;
&lt;p id=&quot;SE-a9e6306e-8c80-46dc-85ab-27bf052dc421&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;then은 암묵적으로 promise 객체를 만들어서 반환하기때문에 2초후 안녕 - 실행끝 이 나오게된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-5ba2a05a-56c9-41f2-ad5b-5edd33c60768&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getTimeoutPromise 안 resolve에서 메세지인 &quot;안녕&quot;을 받았기 때문에 then의 value에서 그 값을 받고, alert로 출력되는 구조이다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-42ed2df2-b4d3-41ae-b12a-827dc8f3e38c&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-d786e1c4-c1bb-4990-a9c6-d87bbdd9d61f&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Promise Chain&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;암묵적 chain&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: then의 resolve 콜백에서 리턴값이 없다면, 암묵적으로 promise 객체 반환&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;resolve 콜백에서 특정값을 리턴한다면, 암묵적 promise 객체의 result 값으로 사용된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;명시적 chain&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: then의 resolve 콜백에서 다시 promise객체를 반환 후 then 메소드로 chaining 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-223afa13-9549-40dc-ac28-789b78b3f1f3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e5cc99de-97ad-4176-8e47-f860d3c2ae2c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e5cc99de-97ad-4176-8e47-f860d3c2ae2c&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e5cc99de-97ad-4176-8e47-f860d3c2ae2c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn3.onclick = () =&amp;gt; {
    getTimeoutPromise(&quot;안녕&quot;, 1000)
      .then((msg) =&amp;gt; { //then(1)
        console.log(msg);
        return getTimeoutPromise(&quot;잘가&quot;, 1000);
      })
      .then((msg) =&amp;gt; { //then(2)
        alert(msg);
      });
  };

  const getTimeoutPromise = (msg, millis) =&amp;gt; {
    return new Promise((resolve) =&amp;gt; {
      setTimeout(() =&amp;gt; {
        resolve(msg);
      }, millis);
    });
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6eee979e-1bc8-4b3a-9ab3-60c6eb2ee0d5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6eee979e-1bc8-4b3a-9ab3-60c6eb2ee0d5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6eee979e-1bc8-4b3a-9ab3-60c6eb2ee0d5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-97ff6588-063a-4103-8230-ac3783e8b617&quot;&gt;
&lt;p id=&quot;SE-62e3cee3-86b7-425b-ab98-3e5442946e81&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바깥 getTimeoutPromise에서 &quot;안녕&quot;을 받아서 then(1)이 1초 뒤 콘솔에 출력하고&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c36f3415-77d9-4598-b2f4-20d686693381&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;return의 getTimeoutPromise에서 &quot;잘가&quot;를 받아서 아래의 then(2)에서 출력한다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c4411396-955b-4c7c-a791-a63c92046bc7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-10cdda48-d3dd-4057-9815-2df066e63c31&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실습문제 - 배경색 변경하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-08c8ecd3-d04b-40a8-a177-76ddc1849cc2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. bg-box 배경색을 1초단위로 빨-초-노-파-핑 으로 변경&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-54f8f06b-f728-4a90-b95d-4c4b1dfaee8c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-54f8f06b-f728-4a90-b95d-4c4b1dfaee8c&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-54f8f06b-f728-4a90-b95d-4c4b1dfaee8c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn4.onclick = () =&amp;gt; {
    changeBgcolorPromise('red', 1000)
      .then(() =&amp;gt; changeBgcolorPromise('green', 1000))
      .then(() =&amp;gt; changeBgcolorPromise('yellow', 1000))
      .then(() =&amp;gt; changeBgcolorPromise('blue', 1000))
      .then(() =&amp;gt; changeBgcolorPromise('pink', 1000))
  };

  const changeBgcolorPromise = (color, millis) =&amp;gt; {
    const target = document.querySelector(&quot;.bg-box&quot;);
    return new Promise((resolve) =&amp;gt; {
      setTimeout(() =&amp;gt; {
        target.style.backgroundColor = color;
        resolve();
      }, millis);
    });
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-389b7221-6bd4-4850-8e56-fe8a4a9cbd90&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-389b7221-6bd4-4850-8e56-fe8a4a9cbd90&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-389b7221-6bd4-4850-8e56-fe8a4a9cbd90&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-631fac2e-8469-4024-bb84-0f629afac299&quot;&gt;
&lt;p id=&quot;SE-d9932fae-950a-49bd-94e0-63731ea6cf79&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 .bg-box의 배경색을 millis이후에 color로 변환하는 프로미스를 선언한다 (=changeBgcolorPromise)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-51262121-28c4-4962-bb5f-9eae33e54a89&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 후 changeBgcolorPromise를 호출하고, then에서 받고 , then에서 다시 호출하고, 받고 를 반복한다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ff1828c8-2bb7-49f8-9f4b-bf0c13270b09&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-unitid=&quot;SE-6a37301f-5661-4794-9cfa-0d08219d299a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7He7g/btr9N9Oe0bM/QKwZLvG9wHocvGkpOubFB0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7He7g/btr9N9Oe0bM/QKwZLvG9wHocvGkpOubFB0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7He7g/btr9N9Oe0bM/QKwZLvG9wHocvGkpOubFB0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/b7He7g/btr9N9Oe0bM/QKwZLvG9wHocvGkpOubFB0/img.gif&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;242&quot; height=&quot;480&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;SE-ff1828c8-2bb7-49f8-9f4b-bf0c13270b09&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;SE-8f66f817-5bed-4af5-ba13-e17386e03be8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;다음과 같은 결과가 나오게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-163f1525-3749-4e40-86e4-6524c279c254&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-163f1525-3749-4e40-86e4-6524c279c254&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-163f1525-3749-4e40-86e4-6524c279c254&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-b32a258e-b958-4f55-8680-3571ed93fa91&quot;&gt;
&lt;p id=&quot;SE-f86f06d6-ddfd-4b47-b35e-e30d108070e6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-a7be5576-481d-4b2c-9202-227d251d972b&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;js파일 로드&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-760525d2-cd72-486b-8f09-fc5d85be5449&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-760525d2-cd72-486b-8f09-fc5d85be5449&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-760525d2-cd72-486b-8f09-fc5d85be5449&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;  btn5.onclick = () =&amp;gt; {
    loadScriptPromise('js/1.js')
      .then(() =&amp;gt; {
        const path = bar(); // js/2.js
        return loadScriptPromise(path);
      })
      .then(() =&amp;gt; {
        const path = car();
        return loadScriptPromise(path);
      })
      .then(() =&amp;gt; {
        dar();
      });
  };

  const loadScriptPromise = (path) =&amp;gt; {
    return new Promise((resolve) =&amp;gt; {
      const script = document.createElement(&quot;script&quot;);
      script.src = path;
      script.onload = () =&amp;gt; {
        console.log(`${path} 로딩완료!`);
        resolve();
      };
      document.head.append(script);
    });
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cb43da4c-9f82-4ce9-85fc-5bbec7172b12&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cb43da4c-9f82-4ce9-85fc-5bbec7172b12&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cb43da4c-9f82-4ce9-85fc-5bbec7172b12&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;//1.js
const bar = () =&amp;gt; {
  console.log(&quot;bar&quot;);
  return 'js/2.js';
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-eccfd9c9-6eed-4fa4-99e3-a73c54b68f16&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-eccfd9c9-6eed-4fa4-99e3-a73c54b68f16&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-eccfd9c9-6eed-4fa4-99e3-a73c54b68f16&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;//2.js
const car = () =&amp;gt; {
  console.log(&quot;car&quot;);
  return &quot;js/3.js&quot;;
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c8465cf4-0213-4eaf-91fe-edbfebad7148&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c8465cf4-0213-4eaf-91fe-edbfebad7148&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c8465cf4-0213-4eaf-91fe-edbfebad7148&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;//3.js
const dar = () =&amp;gt; {
  console.log(&quot;dar&quot;);
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-f47cc698-236b-474a-afd5-b7a329f58bfc&quot;&gt;
&lt;div id=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-unitid=&quot;SE-bd1a2564-be7f-4eee-a34d-385cbb425c0a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yu77n/btr9ObefhFj/h2pwybSfTGqXlxj8IM1W20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yu77n/btr9ObefhFj/h2pwybSfTGqXlxj8IM1W20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yu77n/btr9ObefhFj/h2pwybSfTGqXlxj8IM1W20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyu77n%2Fbtr9ObefhFj%2Fh2pwybSfTGqXlxj8IM1W20%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;450&quot; height=&quot;121&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-60c7f3ef-3b0d-4a12-bce0-fcaf003fa26f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-60c7f3ef-3b0d-4a12-bce0-fcaf003fa26f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-60c7f3ef-3b0d-4a12-bce0-fcaf003fa26f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-efa556d7-2b98-40d3-92fb-9d7714d78112&quot;&gt;
&lt;p id=&quot;SE-8d9a32fe-2e6c-460e-aadb-f59ebfb76c24&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;버튼 클릭시 로딩이 동시에 진행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6960b224-a4ba-46d2-9ec4-8059f010317c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;return한 값이 path로 들어가서 다음 값을 계속 불러오는 구조이다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c4725f02-14a5-4e34-992c-01b6ce251dc6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-d61e09c2-18b8-41e7-aba3-b8eea4dc8a73&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;action이 랜덤으로 일어나는 코드 만들기&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1bbebb6b-cf95-45fc-942d-a6e31d44a173&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1bbebb6b-cf95-45fc-942d-a6e31d44a173&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1bbebb6b-cf95-45fc-942d-a6e31d44a173&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;moonscript&quot;&gt;&lt;code&gt;  const devActions = {
    gotocafe : {
      actionname : '카페로 출발합니다.',
      duration : 1000,
      next : 'arriveatcafe'
    },
    arriveatcafe : {
      actionname : '카페에 도착했습니다.',
      duration : 100,
      next : 'startcoding'
    },
    startcoding : {
      actionname : '코딩을 시작합니다.',
      duration : 3000,
      next : 'finishcoding'
    },
    finishcoding : {
      actionname : '코딩을 마칩니다.',
      duration : 10,
      next : 'gotohome'
    },
    gotohome : {
      actionname : '집으로 출발합니다.',
      duration : 1000,
      next : 'gethome'
    },
    gethome : {
      actionname : '집에 도착했습니다.',
      duration : 0
    },
  }

  btn6.onclick = () =&amp;gt; {
    runDevAction('gotocafe')
      .then((action) =&amp;gt; runDevAction(action))
      .then((action) =&amp;gt; runDevAction(action))
      .then((action) =&amp;gt; runDevAction(action))
      .then((action) =&amp;gt; runDevAction(action))
      .then((action) =&amp;gt; runDevAction(action))
      .catch((err) =&amp;gt; console.error(err))
      .finally(() =&amp;gt; {
        console.log('해가 지고, 하루가 끝났습니다.');
      });
  };

  const runDevAction = (action) =&amp;gt; {
    const {actionname, duration, next} = devActions[action];
    console.log(actionname);
    return new Promise((resolve, reject) =&amp;gt; {
      Math.random() * 100 &amp;gt; 90 &amp;amp;&amp;amp; reject(new Error('친구에게 전화가 왔습니다.'));
      setTimeout(() =&amp;gt; {
        resolve(next);
      }, duration);
    });
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-72792fb0-f93a-45cf-aab6-55d35ed154cc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-72792fb0-f93a-45cf-aab6-55d35ed154cc&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-72792fb0-f93a-45cf-aab6-55d35ed154cc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-63f5838e-b0e0-4fa8-bff0-969c2ccc6e45&quot;&gt;
&lt;p id=&quot;SE-de5a2e71-6fca-4e9d-a817-6d11bd0aa6d6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;runDevAction 는 action의 종류, 유지시간, 다음 action을 지정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-810c27ae-8161-4081-b594-34c21ee10110&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Promise 객체에서 랜덤으로 다음 액션을 지정하고, setTimeout 으로 일정 시간이 지난 다음, 다음 액션이 일어나도록 resolve에 다음 액션을 입력받는다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-00de5eb1-e0b3-4e65-b6df-403607d44d88&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;버튼을 클릭하면 gotocafe에서 부터 then으로 다음 액션들이 실행된다. 만약 error(친구에게 전화가 온 경우) 가 발생할 경우 error창을 받도록 catch절도 넣었다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8a81e6d8-1b15-4f63-be1c-8162f5beccdd&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8a81e6d8-1b15-4f63-be1c-8162f5beccdd&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8a81e6d8-1b15-4f63-be1c-8162f5beccdd&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3d47a757-6439-4810-9935-cc2e8516905f&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot;&gt;
&lt;div data-unitid=&quot;SE-1dfa4785-f655-4f5f-b149-818b9314a7ee&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EzIFo/btr9NmtO0nQ/sEL2ac32HjFSDs2psQ7Av0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EzIFo/btr9NmtO0nQ/sEL2ac32HjFSDs2psQ7Av0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EzIFo/btr9NmtO0nQ/sEL2ac32HjFSDs2psQ7Av0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/EzIFo/btr9NmtO0nQ/sEL2ac32HjFSDs2psQ7Av0/img.gif&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;391&quot; height=&quot;480&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3caf6de0-1fc2-48aa-805d-3532c9aaa829&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3caf6de0-1fc2-48aa-805d-3532c9aaa829&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3caf6de0-1fc2-48aa-805d-3532c9aaa829&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3caf6de0-1fc2-48aa-805d-3532c9aaa829&quot;&gt;
&lt;div data-unitid=&quot;SE-3caf6de0-1fc2-48aa-805d-3532c9aaa829&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ei6C1P/btr9Nl9wAlL/M4SEnxecwx680ZEYZzdW30/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ei6C1P/btr9Nl9wAlL/M4SEnxecwx680ZEYZzdW30/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ei6C1P/btr9Nl9wAlL/M4SEnxecwx680ZEYZzdW30/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ei6C1P/btr9Nl9wAlL/M4SEnxecwx680ZEYZzdW30/img.gif&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;394&quot; height=&quot;480&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-41274313-d589-4a82-9239-b5512a2c1768&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-41274313-d589-4a82-9239-b5512a2c1768&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-41274313-d589-4a82-9239-b5512a2c1768&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-41274313-d589-4a82-9239-b5512a2c1768&quot;&gt;
&lt;div data-unitid=&quot;SE-41274313-d589-4a82-9239-b5512a2c1768&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OIyV0/btr9N1Juf54/U4kkbnBQsRPIYx0ZcnSqIK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OIyV0/btr9N1Juf54/U4kkbnBQsRPIYx0ZcnSqIK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OIyV0/btr9N1Juf54/U4kkbnBQsRPIYx0ZcnSqIK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/OIyV0/btr9N1Juf54/U4kkbnBQsRPIYx0ZcnSqIK/img.gif&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;391&quot; height=&quot;480&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8a81e6d8-1b15-4f63-be1c-8162f5beccdd&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8a81e6d8-1b15-4f63-be1c-8162f5beccdd&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8a81e6d8-1b15-4f63-be1c-8162f5beccdd&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3d47a757-6439-4810-9935-cc2e8516905f&quot;&gt;
&lt;p id=&quot;SE-689d2b55-16dc-45c7-a41a-07ba8ed1fe51&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같이 다양한 경우가 발생하는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;SE-689d2b55-16dc-45c7-a41a-07ba8ed1fe51&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-170ebb97-ba4b-48af-8d5e-28e42fcfd59e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-1243b2a2-cb0a-49d7-b7f1-8edf3bf739da&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Promise Chain - 값 반환&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8ef8e54c-4d0c-4269-95e9-2e52ac756ae5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8ef8e54c-4d0c-4269-95e9-2e52ac756ae5&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8ef8e54c-4d0c-4269-95e9-2e52ac756ae5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;  btn7.onclick = () =&amp;gt; {
    new Promise((resolve) =&amp;gt; {
      resolve(1);                 //producing
    })
    .then((value) =&amp;gt; {           //consumer
      console.log(value); // 1
      return value * 2; // 암묵적 Promise객체의 resolve(value)의 result(value)값이 된다. 
    })
    .then((value) =&amp;gt; {
      console.log(value); // 2
      return value * 2;
    })
    .then((value) =&amp;gt; {
      console.log(value); // 4
      return value * 2;
    })
    .then((value) =&amp;gt; {
      console.log(value); // 8
      return value * 2;
    });
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8e83806a-fef9-4d91-be4e-285196c96821&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8e83806a-fef9-4d91-be4e-285196c96821&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8e83806a-fef9-4d91-be4e-285196c96821&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2204266a-447c-4672-9f56-350a5ec542dc&quot;&gt;
&lt;p id=&quot;SE-9cd05fd8-ba02-4161-b102-f62c8abc5a5b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;return값은 암묵적 프로미스 객체의 resolve(value) 의 결과가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c464162c-13a4-40d5-a435-bfabc88c731c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;return값이 *2 이므로 두배씩 증가하는 값이 나온다는 사실을 예상할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e1242a6a-72a7-427d-b74d-92d75797a5b0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-2e519817-1cbc-400e-ae5b-2bcc6dca488d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;producing 으로 resolve값 1 이 생기면 then에서는 resolve값을 받아서 사용하게된다 (consumer)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-02e38c64-561d-4e43-acae-6b2a02874b6b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생산자와 사용자가 연결된 좋은 코드라고 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-d738f2b1-a801-4650-9626-3c33034454f4&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-unitid=&quot;SE-72e6daa7-b62a-4993-84b6-b999d24ed5d3&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LmuZ0/btr9QmsN6pe/uVieJZvzAEEtzB9SCZxn7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LmuZ0/btr9QmsN6pe/uVieJZvzAEEtzB9SCZxn7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LmuZ0/btr9QmsN6pe/uVieJZvzAEEtzB9SCZxn7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLmuZ0%2Fbtr9QmsN6pe%2FuVieJZvzAEEtzB9SCZxn7k%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;454&quot; height=&quot;82&quot; data-origin-width=&quot;454&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;SE-172bc268-e7e5-493f-a690-0e52c11dbc58&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-11fe0091-a2fb-4aed-91ff-c97814fe5727&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-11fe0091-a2fb-4aed-91ff-c97814fe5727&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-11fe0091-a2fb-4aed-91ff-c97814fe5727&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8588575c-ecaf-4d20-908d-a9b9fd187b4e&quot;&gt;
&lt;p id=&quot;SE-d122d585-cac3-4506-8b94-41dc9e5a4fb4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같은 결과가 나오게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6e955eed-4203-4690-8b68-84fcf90c4675&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-b5139cb2-5bad-4354-ad88-5671376d4c5e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Frontend/Javascript</category>
      <category>javscript</category>
      <category>JS</category>
      <category>Promise</category>
      <category>promise chain</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/75</guid>
      <comments>https://cheerup313.tistory.com/75#entry75comment</comments>
      <pubDate>Thu, 13 Apr 2023 11:32:29 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 67일차] Javascript - Asynchronous (비동기처리) / Html5api - LocalStorage</title>
      <link>https://cheerup313.tistory.com/74</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;b&gt;Web Storage&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;SE-73ca20ec-32dd-4ea9-8467-d4d6748e10b3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-73ca20ec-32dd-4ea9-8467-d4d6748e10b3&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-73ca20ec-32dd-4ea9-8467-d4d6748e10b3&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-ba90631e-d0e6-458d-9da4-3a7965470adf&quot;&gt;
&lt;p id=&quot;SE-ac57786b-5c4d-44aa-a96d-2955ce07346f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹서버에 많은 정보를 Client에 저장해 두는 것.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;localStorage 도메인별로 관리 . 직접 삭제하기 전까지 영구적으로 보관&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;sessionStorage 도메인별로 관리. 접속한 동안만 데이터를 유지&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-f2ce5d4d-1ba8-427c-8853-d38473e99a8b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-37303776-99b6-49fd-bd50-f5a2d1443ed8&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Cookie와 다른점&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;color: #000000;&quot;&gt;&lt;b&gt;크기에 제한이 없음&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- cookie는 4KB , Web Storage는 제한이 없음.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;서버로 보내지지 않음&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- Cookie는 HTTP Request에 의해 자동으로 서버에 전송이 되지만 Web Storage는 전송되지 않음.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;유효기간의 제한이 없음&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- Cookie처럼 특정 기간이 지나면 자동으로 삭제되지 않음.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;JavaScript 객체를 저장할 수 있음&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p id=&quot;SE-166ea8b5-2ba7-459d-8383-3d1a6b8e5006&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-9edf7623-013d-4853-b01f-fe9b24047000&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-1479fa14-6194-49ec-aeb6-ab5c8a597716&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;localStorage로 CRUD(Create Read Update Delete) 기능 만들기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-de5d9973-6e0b-49e7-bf4e-1bbdc0de7eae&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. Create&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-728694c3-d597-4592-92a7-d2778110e5bd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로컬 스토리지에 값 작성해서 넣기 :&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;localStorage.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;&lt;b&gt;setItem&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;( 키값 , 밸류값 );&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6ff6d888-0556-4518-9e5c-3259c3eba18d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6ff6d888-0556-4518-9e5c-3259c3eba18d&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6ff6d888-0556-4518-9e5c-3259c3eba18d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;h2&amp;gt;CRUD&amp;lt;/h2&amp;gt;
    &amp;lt;fieldset&amp;gt;
        &amp;lt;legend&amp;gt;Local Storage&amp;lt;/legend&amp;gt;
        &amp;lt;input type=&quot;text&quot; id=&quot;key&quot; placeholder=&quot;key&quot;&amp;gt;
        &amp;lt;input type=&quot;text&quot; id=&quot;value&quot; placeholder=&quot;value&quot;&amp;gt;
        &amp;lt;hr&amp;gt;
        &amp;lt;button id=&quot;btn1&quot;&amp;gt;저장&amp;lt;/button&amp;gt;
        &amp;lt;button id=&quot;btn2&quot;&amp;gt;조회&amp;lt;/button&amp;gt;
        &amp;lt;button id=&quot;btn3&quot;&amp;gt;삭제&amp;lt;/button&amp;gt;
        &amp;lt;button id=&quot;btn4&quot;&amp;gt;전체삭제&amp;lt;/button&amp;gt;
    &amp;lt;/fieldset&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1af3138c-4b89-46ab-aaa5-27560e7227db&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1af3138c-4b89-46ab-aaa5-27560e7227db&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1af3138c-4b89-46ab-aaa5-27560e7227db&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;    btn1.onclick=()=&amp;gt;{
        const keyVal=key.value;
        const ValueVal=value.value;
        //유효성검사
        if(!keyVal || !ValueVal)return;

        //저장 - 모두 문자열로 저장됨
        localStorage.setItem(keyVal,ValueVal);

        //초기화
        key.value='';
        value.value='';
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cc4e57b0-91df-4a31-96c3-d8f67021ac4c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cc4e57b0-91df-4a31-96c3-d8f67021ac4c&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cc4e57b0-91df-4a31-96c3-d8f67021ac4c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-cc4e57b0-91df-4a31-96c3-d8f67021ac4c&quot;&gt;
&lt;div data-unitid=&quot;SE-cc4e57b0-91df-4a31-96c3-d8f67021ac4c&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MU8Pb/btr9N4zviQY/iufIsoYKgNakt22vtSXY1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MU8Pb/btr9N4zviQY/iufIsoYKgNakt22vtSXY1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MU8Pb/btr9N4zviQY/iufIsoYKgNakt22vtSXY1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMU8Pb%2Fbtr9N4zviQY%2FiufIsoYKgNakt22vtSXY1k%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;463&quot; height=&quot;111&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5e4bbb8f-ac5c-4f97-9c69-d54ff3626ec2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5e4bbb8f-ac5c-4f97-9c69-d54ff3626ec2&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5e4bbb8f-ac5c-4f97-9c69-d54ff3626ec2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b9a6f524-1a46-4bf8-bac0-c54300f5e8f4&quot;&gt;
&lt;p id=&quot;SE-b61152d1-3ba5-4d94-9185-c7e8f67d1195&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;key와 value를 입력했다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cae9a51c-51c4-4b60-a918-1e66eae81337&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cae9a51c-51c4-4b60-a918-1e66eae81337&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cae9a51c-51c4-4b60-a918-1e66eae81337&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-cae9a51c-51c4-4b60-a918-1e66eae81337&quot;&gt;
&lt;div data-unitid=&quot;SE-cae9a51c-51c4-4b60-a918-1e66eae81337&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpd7TV/btr9NnlXsrp/5AaqsoXkfimp8xJuLU0XTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpd7TV/btr9NnlXsrp/5AaqsoXkfimp8xJuLU0XTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpd7TV/btr9NnlXsrp/5AaqsoXkfimp8xJuLU0XTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpd7TV%2Fbtr9NnlXsrp%2F5AaqsoXkfimp8xJuLU0XTK%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;467&quot; height=&quot;310&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-05988a51-42c8-404d-baf8-5139c874c3a6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-05988a51-42c8-404d-baf8-5139c874c3a6&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-05988a51-42c8-404d-baf8-5139c874c3a6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0135c38f-0d59-474e-8fdd-92a5b6f42d12&quot;&gt;
&lt;p id=&quot;SE-4b6b58a4-7ea4-4329-9041-d8e94ac88747&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Console 옆 Application의 Storage -&amp;gt; Local Storage에서 Key 값 = key, Value값 = value가 저장된 것을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3621342b-b512-4cd0-aa5d-23e4a1b81bda&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;key에 개발자 , value에 춘딩 을 넣어보겠다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e8db82f8-9fa5-4faa-9e18-ba07f5f5405f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e8db82f8-9fa5-4faa-9e18-ba07f5f5405f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e8db82f8-9fa5-4faa-9e18-ba07f5f5405f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e8db82f8-9fa5-4faa-9e18-ba07f5f5405f&quot;&gt;
&lt;div data-unitid=&quot;SE-e8db82f8-9fa5-4faa-9e18-ba07f5f5405f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bF6tTG/btr9NiycpAu/fu2b9oXKiNA187lPCKCcXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bF6tTG/btr9NiycpAu/fu2b9oXKiNA187lPCKCcXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bF6tTG/btr9NiycpAu/fu2b9oXKiNA187lPCKCcXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbF6tTG%2Fbtr9NiycpAu%2Ffu2b9oXKiNA187lPCKCcXk%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;262&quot; height=&quot;62&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;62&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-130a4e7b-8822-429e-a6b3-d1a1250d7bc7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-130a4e7b-8822-429e-a6b3-d1a1250d7bc7&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-130a4e7b-8822-429e-a6b3-d1a1250d7bc7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4a228fff-1b5f-4d9e-a321-d0025335d6d9&quot;&gt;
&lt;p id=&quot;SE-034f0a4b-65f3-4fa6-b43e-a1edc1904c34&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 역시 저장되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-93791948-1a6c-404b-ad90-3ee56093ae00&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-3ad5e875-ee64-413e-b406-56b5e725d42c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. Read&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fbafba7e-d75e-4a0b-bcd3-8a198c15a4a1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로컬 스토리지에서 값 가져오기 :&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;localStorage.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;&lt;b&gt;getItem&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;(key.value);&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f2b4a5aa-5b14-4e63-ab54-7600da6e8721&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f2b4a5aa-5b14-4e63-ab54-7600da6e8721&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f2b4a5aa-5b14-4e63-ab54-7600da6e8721&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;    btn2.onclick=()=&amp;gt;{
        const keyVal=key.value;

        const value=localStorage.getItem(keyVal);
        console.log(typeof(value),value);//모두 문자열

        if(value){
            document.querySelector(&quot;#value&quot;).value=value;
        }
        else{
            alert(`${keyVal}에 해당하는 값이 없습니다.`);
            key.select();
        }
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e53005b3-66d9-491e-ac82-03c36de2bd5f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e53005b3-66d9-491e-ac82-03c36de2bd5f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e53005b3-66d9-491e-ac82-03c36de2bd5f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e53005b3-66d9-491e-ac82-03c36de2bd5f&quot;&gt;
&lt;div data-unitid=&quot;SE-e53005b3-66d9-491e-ac82-03c36de2bd5f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4f6zM/btr9Noyqu7I/p3pAGDNgtAsniUyZh0KkGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4f6zM/btr9Noyqu7I/p3pAGDNgtAsniUyZh0KkGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4f6zM/btr9Noyqu7I/p3pAGDNgtAsniUyZh0KkGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4f6zM%2Fbtr9Noyqu7I%2Fp3pAGDNgtAsniUyZh0KkGk%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;470&quot; height=&quot;114&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-723db38f-865d-4b85-9554-ceafb9275ef9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-723db38f-865d-4b85-9554-ceafb9275ef9&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-723db38f-865d-4b85-9554-ceafb9275ef9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-cbf62a09-d511-4a49-990a-3e60230f3172&quot;&gt;
&lt;p id=&quot;SE-9fa62e40-e703-4801-a75a-f5d86d08322a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개발자를 입력하고 조회를 누르면 value부분에 value값인 '춘딩' 이 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fa145dd6-fed3-4e67-b584-913495ccfdc5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fa145dd6-fed3-4e67-b584-913495ccfdc5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fa145dd6-fed3-4e67-b584-913495ccfdc5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-fa145dd6-fed3-4e67-b584-913495ccfdc5&quot;&gt;
&lt;div data-unitid=&quot;SE-fa145dd6-fed3-4e67-b584-913495ccfdc5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG3huq/btr9P5kjznQ/TQwItRGRGKMxuqswaEpWvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG3huq/btr9P5kjznQ/TQwItRGRGKMxuqswaEpWvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG3huq/btr9P5kjznQ/TQwItRGRGKMxuqswaEpWvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG3huq%2Fbtr9P5kjznQ%2FTQwItRGRGKMxuqswaEpWvk%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;467&quot; height=&quot;110&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ywLsA/btr9NiEZhr0/cndSlGjN3FLBgiYk6UFbH1/img.png&quot; width=&quot;441&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;82&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8e10e72f-ef96-4682-8071-5151639d6dfa&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8e10e72f-ef96-4682-8071-5151639d6dfa&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8e10e72f-ef96-4682-8071-5151639d6dfa&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d0714690-9cfb-4904-b4d5-115c0363fabd&quot;&gt;
&lt;p id=&quot;SE-66c20e6a-337c-4476-a658-2d2b002a6fc7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;없는 값을 입력하면 다음과 같은 알림창이 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-babc406a-8897-43d6-943e-21e963ec37f9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-9c456a43-946f-4b95-a3f9-11050a2b09b0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3. Delete&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f856df72-ae0b-4cbc-a159-bd5e12fe67cf&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로컬스토리지에서 값 삭제하기 :&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;localStorage.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;&lt;b&gt;removeItem&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;(key.value);&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-523d286b-eb45-4815-a7bb-7752d6d1a348&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-523d286b-eb45-4815-a7bb-7752d6d1a348&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-523d286b-eb45-4815-a7bb-7752d6d1a348&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;    btn3.onclick=()=&amp;gt;{
        const keyVal=key.value;

        //제거
        localStorage.removeItem(keyVal);

        //초기화
        key.value='';
        value.value='';
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-046581e8-4dbd-42df-bbdd-d2410d98c28c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-046581e8-4dbd-42df-bbdd-d2410d98c28c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-046581e8-4dbd-42df-bbdd-d2410d98c28c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d412478f-f3af-40a5-a010-b213a23ec180&quot;&gt;
&lt;p id=&quot;SE-3cb2134c-1f99-4930-9aea-00c4b199728e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;없는 값을 key 박스에 입력하고 삭제를 누르면 아무 일도 일어나지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-099533ba-0134-4020-8300-711f9cdcb80e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-099533ba-0134-4020-8300-711f9cdcb80e&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-099533ba-0134-4020-8300-711f9cdcb80e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-099533ba-0134-4020-8300-711f9cdcb80e&quot;&gt;
&lt;div data-unitid=&quot;SE-099533ba-0134-4020-8300-711f9cdcb80e&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgmyb2/btr9SPBdHSW/eLb9tFBKvX5kEBkGn8Imu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgmyb2/btr9SPBdHSW/eLb9tFBKvX5kEBkGn8Imu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgmyb2/btr9SPBdHSW/eLb9tFBKvX5kEBkGn8Imu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgmyb2%2Fbtr9SPBdHSW%2FeLb9tFBKvX5kEBkGn8Imu1%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;470&quot; height=&quot;114&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b955eeab-0fae-4dff-905f-acfbcc9140bd&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b955eeab-0fae-4dff-905f-acfbcc9140bd&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b955eeab-0fae-4dff-905f-acfbcc9140bd&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5f102a25-a4b3-4a05-87f3-8241dd979824&quot;&gt;
&lt;p id=&quot;SE-bead994d-68d6-4057-9e6b-f4f10e2c3c2e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개발자를 입력하고 삭제를 누르면, localStorage에서 삭제된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e54b8bae-cf6d-4646-abe8-7e7e1a359f1a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e54b8bae-cf6d-4646-abe8-7e7e1a359f1a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e54b8bae-cf6d-4646-abe8-7e7e1a359f1a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e54b8bae-cf6d-4646-abe8-7e7e1a359f1a&quot;&gt;
&lt;div data-unitid=&quot;SE-e54b8bae-cf6d-4646-abe8-7e7e1a359f1a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWCHiQ/btr9SPurIwc/CVUl8NfXMN8VK92jlDAD21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWCHiQ/btr9SPurIwc/CVUl8NfXMN8VK92jlDAD21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWCHiQ/btr9SPurIwc/CVUl8NfXMN8VK92jlDAD21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWCHiQ%2Fbtr9SPurIwc%2FCVUl8NfXMN8VK92jlDAD21%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;266&quot; height=&quot;93&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-93836746-8de5-42fe-967a-25383ed07468&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-93836746-8de5-42fe-967a-25383ed07468&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-93836746-8de5-42fe-967a-25383ed07468&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0ce7fd81-f24e-46d7-8fd6-95e35c578bde&quot;&gt;
&lt;p id=&quot;SE-8370a1b5-248b-4f35-9b03-07af4e32ffa8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-d80cae19-d613-4066-b97b-358dae878731&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4. Delete all&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b51e5abd-33af-46bd-ac4c-007cb93f151c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로컬 스토리지 전체 삭제 :&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;localStorage.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;&lt;b&gt;clear&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;();&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c8d9c7d7-d6b7-404b-9371-a2b581d2c590&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c8d9c7d7-d6b7-404b-9371-a2b581d2c590&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c8d9c7d7-d6b7-404b-9371-a2b581d2c590&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    btn4.onclick=()=&amp;gt;{
        localStorage.clear();
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5b415b6b-7d34-45e4-8caf-7829cbd270a0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5b415b6b-7d34-45e4-8caf-7829cbd270a0&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5b415b6b-7d34-45e4-8caf-7829cbd270a0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5b415b6b-7d34-45e4-8caf-7829cbd270a0&quot;&gt;
&lt;div data-unitid=&quot;SE-5b415b6b-7d34-45e4-8caf-7829cbd270a0&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNmgxh/btr9V9sGWuw/0WXYMxmRiMGGtiVqNT32eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNmgxh/btr9V9sGWuw/0WXYMxmRiMGGtiVqNT32eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNmgxh/btr9V9sGWuw/0WXYMxmRiMGGtiVqNT32eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNmgxh%2Fbtr9V9sGWuw%2F0WXYMxmRiMGGtiVqNT32eK%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;362&quot; height=&quot;123&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7711e507-f4e9-427f-a3ad-12ddf80a2854&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7711e507-f4e9-427f-a3ad-12ddf80a2854&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7711e507-f4e9-427f-a3ad-12ddf80a2854&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-59e7147b-a43c-4ba2-9581-9be005ada22b&quot;&gt;
&lt;p id=&quot;SE-2feca7ee-8e53-4794-aeca-262a4cf9ea8b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같은 값이 존재할 때, 전체삭제를 누르면 전부 없어진다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d25bcbbc-acdc-46d5-9128-650bf58fb577&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d25bcbbc-acdc-46d5-9128-650bf58fb577&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d25bcbbc-acdc-46d5-9128-650bf58fb577&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d25bcbbc-acdc-46d5-9128-650bf58fb577&quot;&gt;
&lt;div data-unitid=&quot;SE-d25bcbbc-acdc-46d5-9128-650bf58fb577&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvJT3P/btr9NAMdwuN/xQbJt7PiZpFb29jKpPBbvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvJT3P/btr9NAMdwuN/xQbJt7PiZpFb29jKpPBbvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvJT3P/btr9NAMdwuN/xQbJt7PiZpFb29jKpPBbvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvJT3P%2Fbtr9NAMdwuN%2FxQbJt7PiZpFb29jKpPBbvK%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;360&quot; height=&quot;120&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a0e1cd61-aef0-4b14-ae8e-5781b6ca03a5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a0e1cd61-aef0-4b14-ae8e-5781b6ca03a5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a0e1cd61-aef0-4b14-ae8e-5781b6ca03a5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-fc14f701-a22b-49e6-87ae-9f7a5ac03280&quot;&gt;
&lt;p id=&quot;SE-0732bb3e-e0d2-494a-8636-f6cb5455b6d5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8f933e69-d316-4b48-9ae4-5d311128071c&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-f65a5dd2-f9c4-48f1-b511-c3f9be1b8970&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;localStorage에 객체와 배열저장&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-ab46b06d-b4b4-4d29-a951-3377f47f4198&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;web storage에 저장되는 key/value는 모두 string타입이다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f71a5e58-a47b-43a9-a97d-3974795800d8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 배열, 객체를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;그대로 저장하게 되면&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;toString 호출 결과를 저장한다. 즉,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;데이터가 유실&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a9059728-dc29-4bb3-9cba-338a0a5d2292&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;배열과 객체 JSON으로 변환 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;JSON.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;&lt;b&gt;stringify&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;(배열명, 객체명)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3eee388a-4aa6-45d5-9f34-44676fd64b02&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JSON으로 변환한 객체 js(javascript)로 변환 :&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;JSON.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;&lt;b&gt;parse&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;(localStorage.&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;&lt;b&gt;getItem&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;(&quot;arr&quot;))&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a7c3ad00-e6c9-4897-b278-2e8ff35f2f88&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a7c3ad00-e6c9-4897-b278-2e8ff35f2f88&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a7c3ad00-e6c9-4897-b278-2e8ff35f2f88&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;    &amp;lt;button id=&quot;btn5&quot;&amp;gt;실행&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8ebb86ca-11bd-46e7-99d2-9bb84a0303bc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8ebb86ca-11bd-46e7-99d2-9bb84a0303bc&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8ebb86ca-11bd-46e7-99d2-9bb84a0303bc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    btn5.onclick=()=&amp;gt;{
        const arr=[1,2,3,['a','b','c']];
        const obj={
            id:123456,
            name:'애플토마토',
            expired : Date.now()+(1000*60),
            options : ['red','green','blue'],
            maker : {
                id: 'honggd'
            }
        };
        console.log(arr,obj);
        const arrJsonStr=JSON.stringify(arr);
        const objJsonStr=JSON.stringify(obj);
        console.log(typeof arrJsonStr,arrJsonStr);
        console.log(typeof objJsonStr,objJsonStr);

        //저장
        localStorage.setItem('arr',arrJsonStr);
        localStorage.setItem('obj',objJsonStr);

        //가져와서 js로 변환
        const arr2=JSON.parse(localStorage.getItem(&quot;arr&quot;));
        console.log(typeof arr2,arr2);
        const obj2=JSON.parse(localStorage.getItem(&quot;obj&quot;));
        console.log(typeof obj2, obj2);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a5d69d35-969e-40ed-8604-c25c4d1caccb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a5d69d35-969e-40ed-8604-c25c4d1caccb&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a5d69d35-969e-40ed-8604-c25c4d1caccb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a5d69d35-969e-40ed-8604-c25c4d1caccb&quot;&gt;
&lt;div data-unitid=&quot;SE-a5d69d35-969e-40ed-8604-c25c4d1caccb&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MdVaG/btr9Mdw9o5U/w4y8bHHklsPViyNr3BmoQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MdVaG/btr9Mdw9o5U/w4y8bHHklsPViyNr3BmoQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MdVaG/btr9Mdw9o5U/w4y8bHHklsPViyNr3BmoQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMdVaG%2Fbtr9Mdw9o5U%2Fw4y8bHHklsPViyNr3BmoQK%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;363&quot; height=&quot;100&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2aa45015-c7d4-4942-802d-708a67afa299&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2aa45015-c7d4-4942-802d-708a67afa299&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2aa45015-c7d4-4942-802d-708a67afa299&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2aa45015-c7d4-4942-802d-708a67afa299&quot;&gt;
&lt;div data-unitid=&quot;SE-2aa45015-c7d4-4942-802d-708a67afa299&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UXrJN/btr9N3HictZ/i6tojZRtkpYOeD1WKuWQ2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UXrJN/btr9N3HictZ/i6tojZRtkpYOeD1WKuWQ2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UXrJN/btr9N3HictZ/i6tojZRtkpYOeD1WKuWQ2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUXrJN%2Fbtr9N3HictZ%2Fi6tojZRtkpYOeD1WKuWQ2k%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;449&quot; height=&quot;168&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1d7b7802-2f5d-4d25-b08e-e4eadb42980d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1d7b7802-2f5d-4d25-b08e-e4eadb42980d&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1d7b7802-2f5d-4d25-b08e-e4eadb42980d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-18a46a68-9816-4872-8774-88c5374a4648&quot;&gt;
&lt;p id=&quot;SE-68665c1e-9406-45ac-99e1-1d69189f6ebc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;obj에 Object(객체)가 제대로 들어간 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6c454651-18d5-4c0f-bbbc-68e8b947ab62&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-391a51da-3b48-4e61-b424-3c5c637f84a9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-6501f4ac-812c-4bf5-9377-36a3e87fff56&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-248a2b7d-8ba7-4040-aaae-6ea492ba62cd&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;방명록 만들기 (정보 저장 및 호출)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-47d15862-65a2-4b99-aab9-a49c32016f99&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-47d15862-65a2-4b99-aab9-a49c32016f99&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-47d15862-65a2-4b99-aab9-a49c32016f99&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;h2&amp;gt;방명록&amp;lt;/h2&amp;gt;
    &amp;lt;form action=&quot;javascript:saveGuestbook();&quot; name=&quot;guestbookFrm&quot;&amp;gt;
    &amp;lt;table&amp;gt;
        &amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;&amp;lt;label for=&quot;username&quot;&amp;gt;이름&amp;lt;/label&amp;gt;&amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; id=&quot;username&quot;&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;&amp;lt;label for=&quot;content&quot;&amp;gt;내용&amp;lt;/label&amp;gt;&amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; id=&quot;content&quot;&amp;gt;&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
        &amp;lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot;&amp;gt;
            &amp;lt;button&amp;gt;저장&amp;lt;/button&amp;gt;
        &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/table&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;table id=&quot;tb-guestbook&quot;&amp;gt;
    &amp;lt;thead&amp;gt;
        &amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;No&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;이름&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;내용&amp;lt;/th&amp;gt;
        &amp;lt;th&amp;gt;일시&amp;lt;/th&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/thead&amp;gt;
    &amp;lt;tbody&amp;gt;&amp;lt;/tbody&amp;gt;
    &amp;lt;/table&amp;gt;
  &amp;lt;script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-09c0057d-97d5-4642-ac42-697558a69a6d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-09c0057d-97d5-4642-ac42-697558a69a6d&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-09c0057d-97d5-4642-ac42-697558a69a6d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;script&amp;gt;
  class Guestbook {
    constructor(username, content, datetime = Date.now()){
      this.username = username;
      this.content = content;
      this.datetime = datetime;
    }
  }

    /**
     * 유효성검사
     */
     document.guestbookFrm.onsubmit = () =&amp;gt; {
        if(!username.value || !content.value){
        alert(&quot;이름과 내용을 작성해주세요&quot;);
        return false;
        }
    };
    /**
     * 방명록 저장
     * 사용자 입력값 -&amp;gt; guestbook객체 -&amp;gt;배열에 저장 -&amp;gt;json -&amp;gt; localStorage 저장
     */
    const saveGuestbook =()=&amp;gt;{
        // 사용자 입력값 처리
        const usernameVal=username.value;
        const contentVal=content.value;
        //guestbook 객체
        const guestbook = new Guestbook(usernameVal,contentVal);
        
        //배열에 저장
        const guestbooks=JSON.parse(localStorage.getItem(&quot;guestbooks&quot;)) || [];//null일경우 오른쪽에 값 담김
        console.log(guestbook);
        guestbooks.push(guestbook);

        //json
        const data=JSON.stringify(guestbooks);
        console.log(data);

        //localStorage에 저장
        localStorage.setItem('guestbooks',data);

        //초기화
        document.guestbookFrm.reset();

        //렌더링
        renderGuestbook(guestbooks);
    };
    const renderGuestbook=(guestbooks)=&amp;gt;{
        if(!guestbooks) return;
        const tbody=document.querySelector(&quot;#tb-guestbook tbody&quot;);
        tbody.innerHTML=&quot;&quot;;
        guestbooks.map((guestbook,index)=&amp;gt;{ //행 한칸씩 추가
            const {username,content,datetime}=guestbook;
            return `&amp;lt;tr&amp;gt;
                &amp;lt;td&amp;gt;${index+1}&amp;lt;/td&amp;gt;
                &amp;lt;td&amp;gt;${username}&amp;lt;/td&amp;gt;
                &amp;lt;td&amp;gt;${content}&amp;lt;/td&amp;gt;
                &amp;lt;td&amp;gt;${datetimeFormatter(datetime)}&amp;lt;/td&amp;gt;
            &amp;lt;tr&amp;gt;`;
        }).forEach((tr)=&amp;gt;{
            tbody.innerHTML+=tr;
        });
    }

    const datetimeFormatter=(millis)=&amp;gt;{
        const d=new Date(millis);
        const f=(n)=&amp;gt;n&amp;lt;10?'0'+n:n;//무조건10의자리 만들기위해사용
        const yyyy=d.getFullYear();
        const mm=f(d.getMonth()+1);
        const dd=f(d.getDate());
        const hh=f(d.getHours());
        const mi=f(d.getMinutes());
        return `${yyyy}/${mm}/${dd} ${hh}:${mi}`;
    }
    &amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0c734ded-a090-4833-9541-0f7c23c26d48&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0c734ded-a090-4833-9541-0f7c23c26d48&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0c734ded-a090-4833-9541-0f7c23c26d48&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0c734ded-a090-4833-9541-0f7c23c26d48&quot;&gt;
&lt;div data-unitid=&quot;SE-0c734ded-a090-4833-9541-0f7c23c26d48&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;242&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgR3Dj/btr9YlzPD1Y/veOKujXE69lykorCccEyo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgR3Dj/btr9YlzPD1Y/veOKujXE69lykorCccEyo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgR3Dj/btr9YlzPD1Y/veOKujXE69lykorCccEyo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgR3Dj%2Fbtr9YlzPD1Y%2FveOKujXE69lykorCccEyo1%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;242&quot; height=&quot;166&quot; data-origin-width=&quot;242&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-68c1fe4c-bfae-4bcb-aca0-a25e19ac87bc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-68c1fe4c-bfae-4bcb-aca0-a25e19ac87bc&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-68c1fe4c-bfae-4bcb-aca0-a25e19ac87bc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-68c1fe4c-bfae-4bcb-aca0-a25e19ac87bc&quot;&gt;
&lt;div data-unitid=&quot;SE-68c1fe4c-bfae-4bcb-aca0-a25e19ac87bc&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WYQj5/btr9Gbl6xdb/DfRcvvXdPN64pXivuwX9L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WYQj5/btr9Gbl6xdb/DfRcvvXdPN64pXivuwX9L0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WYQj5/btr9Gbl6xdb/DfRcvvXdPN64pXivuwX9L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWYQj5%2Fbtr9Gbl6xdb%2FDfRcvvXdPN64pXivuwX9L0%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;438&quot; height=&quot;204&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0935e85c-f986-47cc-9edf-b1da95c5eea0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0935e85c-f986-47cc-9edf-b1da95c5eea0&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0935e85c-f986-47cc-9edf-b1da95c5eea0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3ae7646f-1adf-425a-b86c-4e5031097162&quot;&gt;
&lt;p id=&quot;SE-5fab6594-b3cf-4437-be0c-01e9152de5fb&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이름과 내용을 입력하면 다음과 같이 저장된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7572837a-618a-4109-8730-a8cf867cd88a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7572837a-618a-4109-8730-a8cf867cd88a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7572837a-618a-4109-8730-a8cf867cd88a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7572837a-618a-4109-8730-a8cf867cd88a&quot;&gt;
&lt;div data-unitid=&quot;SE-7572837a-618a-4109-8730-a8cf867cd88a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lBmYy/btr9MpYHcS0/zbGmarwPc7bsU2kzw63Ln1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lBmYy/btr9MpYHcS0/zbGmarwPc7bsU2kzw63Ln1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lBmYy/btr9MpYHcS0/zbGmarwPc7bsU2kzw63Ln1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlBmYy%2Fbtr9MpYHcS0%2FzbGmarwPc7bsU2kzw63Ln1%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;668&quot; height=&quot;390&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1e6cd060-d520-4c6b-b8ad-9f3a4d4a34be&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1e6cd060-d520-4c6b-b8ad-9f3a4d4a34be&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1e6cd060-d520-4c6b-b8ad-9f3a4d4a34be&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-cdf95853-88ea-4e35-875b-c001ca8a9d1a&quot;&gt;
&lt;p id=&quot;SE-2a1364ea-b0a3-436e-bad1-fa71472274ee&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Application에서도 다음과 같이 내용을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-520602f2-53eb-409e-9339-763738883660&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-9e2a2d18-8cb7-48ba-9d00-1ee277f753bf&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-d543deef-7211-4257-a146-3cc4856c0621&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;비동기처리&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-0be0950b-36db-4753-93a9-f0deaa557ba2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동기 (synchronous) |&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;비동기(asynchronous)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-923f7d66-1578-40bd-8f65-aa411c9511d4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바스크립트는 싱글쓰레드로 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2223e627-4516-4a89-b59a-363d72e4b64f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비동기처리함수(Timer API, DOM관련, 이벤트처리, Ajax요청) 호출시,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;백그라운드에 처리를 위임&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-63986e9b-8156-449b-ab25-44a3eba86a2c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동기함수의 모든 처리가 끝나면&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(call stack이 비워지면) 실행&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-83e6bc75-64d3-4f7d-9f37-1626c55aebc0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;heap = 객체 저장공간&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-60a0cae0-1f94-4ea8-834a-3546b5ac7ba5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;call stack = 함수 실행 스택&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9a0fc8cc-933b-49d5-b3b2-712ff3e5618d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Web APIs&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3a0a3e69-46d9-4843-a989-e669424fab06&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Callback Queue&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c0a9c3dd-60b8-4c19-a938-38c3cc41a358&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Event Loop&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7b983ea6-a6ea-4dc4-86bc-a6cc2b3ab9cc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-c1ac9343-ba5c-4923-acb5-6884c9513f33&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;비동기 처리 함수 - Timer API&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-00311005-9c3a-46e5-b59a-ee4934ab874e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-00311005-9c3a-46e5-b59a-ee4934ab874e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-00311005-9c3a-46e5-b59a-ee4934ab874e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;button id=&quot;btn1&quot;&amp;gt;Async - Timer&amp;lt;/button&amp;gt;
  &amp;lt;button id=&quot;btn2&quot;&amp;gt;Async - DOM&amp;lt;/button&amp;gt;
  &amp;lt;button id=&quot;btn3&quot;&amp;gt;Async - DOM 연속&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c6482606-af9e-4c84-b40a-a5d494dfd4b1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c6482606-af9e-4c84-b40a-a5d494dfd4b1&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c6482606-af9e-4c84-b40a-a5d494dfd4b1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;  btn1.onclick = () =&amp;gt; {
    // 동기식처리
    let result = foo();
    console.log(result);

    // 비동기식처리
    let result2;
    // Timer API 함수들은 호출과 동시에 background(Web APIs)에 처리를 위임한다.
    setTimeout(() =&amp;gt; {
      result2 = 100;
      console.log('result2 : ', result2); // 1. 코드위치 수정
    }, 0);
  };

  const foo = () =&amp;gt; {
    console.log('foo');
    return 100;
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1718aba7-2b60-4a6d-a9cc-18c0bb0f30d4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1718aba7-2b60-4a6d-a9cc-18c0bb0f30d4&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1718aba7-2b60-4a6d-a9cc-18c0bb0f30d4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1718aba7-2b60-4a6d-a9cc-18c0bb0f30d4&quot;&gt;
&lt;div data-unitid=&quot;SE-1718aba7-2b60-4a6d-a9cc-18c0bb0f30d4&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B0xr6/btr9YlNm5Y8/3C6dpbmFrHMAfaJZDNuOk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B0xr6/btr9YlNm5Y8/3C6dpbmFrHMAfaJZDNuOk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B0xr6/btr9YlNm5Y8/3C6dpbmFrHMAfaJZDNuOk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB0xr6%2Fbtr9YlNm5Y8%2F3C6dpbmFrHMAfaJZDNuOk1%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;426&quot; height=&quot;61&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c367b358-ebfa-48cb-8dc7-56d8a21e99ad&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c367b358-ebfa-48cb-8dc7-56d8a21e99ad&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c367b358-ebfa-48cb-8dc7-56d8a21e99ad&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-320fa2ff-6769-44da-b786-1265b4e42faf&quot;&gt;
&lt;p id=&quot;SE-91fc88b2-859c-43e4-aba7-7e002402ec1e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;버튼 클릭과 동시에 result2 : 100이 돌아온다. (시간차를 두지 않음)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-053480b8-4069-42a2-9494-ab99164db47b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Timer API함수들은 호출과 동시에 background(Web API)에 처리를 위임한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-41973318-581c-43e6-a560-55d901cd4268&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-1f7c54c7-e701-4963-9835-fb8e7e165897&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-c880cb87-3cb9-49a4-b03a-1cffe53843eb&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;비동기처리 - DOM관련, event 처리&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ecaddc29-7e03-4a44-88fc-ddc96ff962b1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ecaddc29-7e03-4a44-88fc-ddc96ff962b1&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ecaddc29-7e03-4a44-88fc-ddc96ff962b1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;const bar = () =&amp;gt; {
  console.log(&quot;bar&quot;);
  return 'js/2.js';
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c8e7aa73-4ad7-40d2-a6e1-69df4e473d0e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c8e7aa73-4ad7-40d2-a6e1-69df4e473d0e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c8e7aa73-4ad7-40d2-a6e1-69df4e473d0e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-9e515a25-e851-4987-9a03-104d0c97650f&quot;&gt;
&lt;p id=&quot;SE-50950278-7ffb-491f-8dd8-36291d2caf4b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.js 파일&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3641d0e9-8ae8-4e82-ab56-b0256f272430&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3641d0e9-8ae8-4e82-ab56-b0256f272430&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3641d0e9-8ae8-4e82-ab56-b0256f272430&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;const car = () =&amp;gt; {
  console.log(&quot;car&quot;);
  return &quot;js/3.js&quot;;
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-baa21ca1-b5d1-4ef0-b44d-9644b47323d7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-baa21ca1-b5d1-4ef0-b44d-9644b47323d7&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-baa21ca1-b5d1-4ef0-b44d-9644b47323d7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a9106e8a-3220-4b92-903d-e7ed72255fed&quot;&gt;
&lt;p id=&quot;SE-dbb44884-2c34-42a8-9f60-e9611079afc9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.js 파일&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-da9243ea-51e4-486f-aed9-bf8635a23252&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-da9243ea-51e4-486f-aed9-bf8635a23252&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-da9243ea-51e4-486f-aed9-bf8635a23252&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;const dar = () =&amp;gt; {
  console.log(&quot;dar&quot;);
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-21c0f8de-afe5-4bbd-9e94-4b9e1e4ef743&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-21c0f8de-afe5-4bbd-9e94-4b9e1e4ef743&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-21c0f8de-afe5-4bbd-9e94-4b9e1e4ef743&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0e868b65-9c3f-4052-99fc-efe3d34a3904&quot;&gt;
&lt;p id=&quot;SE-3a6571bc-f75c-4950-9c60-31f2e4190a1c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3.js 파일&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6b1fcc5f-1b23-441b-8a4e-951de8fab588&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6b1fcc5f-1b23-441b-8a4e-951de8fab588&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6b1fcc5f-1b23-441b-8a4e-951de8fab588&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;  btn2.onclick = () =&amp;gt; {
    // loadScript(&quot;js/1.js&quot;);
    // bar(); // Uncaught ReferenceError: bar is not defined

    loadScript(&quot;js/1.js&quot;, () =&amp;gt; {
      console.log('load완료!');
      bar(); // bar
    });
  };

  // const loadScript = (path) =&amp;gt; {
  //   const script = document.createElement('script');
  //   script.src = path;
  //   document.head.append(script); // 비동기처리
  // };

  const loadScript = (path, callback) =&amp;gt; {
    const script = document.createElement('script');
    script.src = path;
    script.onload = callback; // 2. callback함수
    document.head.append(script); // 비동기처리하는부분. append되길 기다리지 않고 실행
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a0349783-de99-48b0-b80c-bd216aa6171f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a0349783-de99-48b0-b80c-bd216aa6171f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a0349783-de99-48b0-b80c-bd216aa6171f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a0349783-de99-48b0-b80c-bd216aa6171f&quot;&gt;
&lt;div data-unitid=&quot;SE-a0349783-de99-48b0-b80c-bd216aa6171f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;422&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctjCoQ/btr9MfuZILg/2YOxKd6B6QpxKvpkhackFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctjCoQ/btr9MfuZILg/2YOxKd6B6QpxKvpkhackFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctjCoQ/btr9MfuZILg/2YOxKd6B6QpxKvpkhackFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctjCoQ%2Fbtr9MfuZILg%2F2YOxKd6B6QpxKvpkhackFk%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;422&quot; height=&quot;42&quot; data-origin-width=&quot;422&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0d8ff6bd-6385-4e21-8a4c-cf88232e5a90&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0d8ff6bd-6385-4e21-8a4c-cf88232e5a90&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0d8ff6bd-6385-4e21-8a4c-cf88232e5a90&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ea858941-8f7d-47b0-a5ca-2bca620570da&quot;&gt;
&lt;p id=&quot;SE-e4db3716-0526-4805-9d26-223576784dd7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;button 2 클릭시 다음과 같은 콘솔창을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-74644a82-a611-49b2-b259-c64e9fa2b8d1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;load완료 후 bar(1.js파일)를 호출하면 bar가 출력된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1ded6499-19a8-4627-b4d8-f330667a08b1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-af584dd5-a0f5-4565-88b5-e0c3fd842858&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-af584dd5-a0f5-4565-88b5-e0c3fd842858&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-af584dd5-a0f5-4565-88b5-e0c3fd842858&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;  /**
   * js/1.js 로드 - bar() 다음에 로드할 js의 주소값 리턴
   */
  btn3.onclick = () =&amp;gt; {
    loadScript('js/1.js', () =&amp;gt; {
      loadScript(bar(), () =&amp;gt; {
        car();
      });
    });
  };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-add9b647-0fc9-4ada-8ac3-bd0832074067&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-add9b647-0fc9-4ada-8ac3-bd0832074067&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-add9b647-0fc9-4ada-8ac3-bd0832074067&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-add9b647-0fc9-4ada-8ac3-bd0832074067&quot;&gt;
&lt;div data-unitid=&quot;SE-add9b647-0fc9-4ada-8ac3-bd0832074067&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQAdoF/btr9N2V0itG/7MphTki9whGAMm3RKwVSiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQAdoF/btr9N2V0itG/7MphTki9whGAMm3RKwVSiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQAdoF/btr9N2V0itG/7MphTki9whGAMm3RKwVSiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQAdoF%2Fbtr9N2V0itG%2F7MphTki9whGAMm3RKwVSiK%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;424&quot; height=&quot;41&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-76a9eade-cc86-44c7-bc37-2342446b1b5b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-76a9eade-cc86-44c7-bc37-2342446b1b5b&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-76a9eade-cc86-44c7-bc37-2342446b1b5b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8164c45c-660a-42aa-a1d6-4c479ecd6725&quot;&gt;
&lt;p id=&quot;SE-d7719784-e3d4-4e36-8d98-c92d6ac206c6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같이 실행할 경우, bar가 나온 다음에 car가 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-247718b0-7443-485e-84cd-976cba047c8e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.js를 로드한 이유는 bar() 다음에 로드할 js의 주소값을 리턴하기 위함이다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3524ca9f-fa54-48ea-a5e1-8ec4e40fefbe&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-5db45c9c-cf04-488f-a444-b65f22539b08&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-fa9b6bce-d989-47b7-a05e-9410f1a6fb8a&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;배경색 연속변경&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-905eeb45-8bc9-4a3e-afc1-30c8156988a1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-905eeb45-8bc9-4a3e-afc1-30c8156988a1&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-905eeb45-8bc9-4a3e-afc1-30c8156988a1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;button id=&quot;btn4&quot;&amp;gt;@실습문제 - 배경색 연속변경&amp;lt;/button&amp;gt;
  &amp;lt;div class=&quot;bg-box&quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;style&amp;gt;
  .bg-box {
    width: 100px;
    height: 100px;
    margin: 10px;
    border: 1px solid #000;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b73a8092-eae5-45b8-9821-b8c5142069a3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b73a8092-eae5-45b8-9821-b8c5142069a3&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b73a8092-eae5-45b8-9821-b8c5142069a3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;  btn4.onclick = () =&amp;gt; {
    const target = document.querySelector(&quot;.bg-box&quot;);

    setTimeout(() =&amp;gt; {
      target.style.backgroundColor = &quot;red&quot;;
      setTimeout(() =&amp;gt; {
        target.style.backgroundColor = &quot;green&quot;;
        setTimeout(() =&amp;gt; {
          target.style.backgroundColor = &quot;yellow&quot;;
          setTimeout(() =&amp;gt; {
            target.style.backgroundColor = &quot;blue&quot;;
            setTimeout(() =&amp;gt; {
              target.style.backgroundColor = &quot;pink&quot;;
            }, 1000);
          }, 1000);
        }, 1000);
      }, 1000);
    }, 1000);

  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e38b36f9-2ede-4e0e-a57c-347f8b96d2c9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e38b36f9-2ede-4e0e-a57c-347f8b96d2c9&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e38b36f9-2ede-4e0e-a57c-347f8b96d2c9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7ab99fcc-85ea-4fa3-9cc3-c4a74e275375&quot;&gt;
&lt;p id=&quot;SE-06e8acf2-4ef7-4c45-abbe-37f69709b9b6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클릭시 1초 단위로 색이 바뀌고, pink에서 멈추는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f26d1dd3-21f5-41a1-ba04-944d5e1f2c0b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-052b8ab4-3367-4c1f-b11d-59c3fb2a7e28&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-dc117ccb-a569-4949-879d-7f8649fc22d7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-dc117ccb-a569-4949-879d-7f8649fc22d7&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-dc117ccb-a569-4949-879d-7f8649fc22d7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-dc117ccb-a569-4949-879d-7f8649fc22d7&quot;&gt;
&lt;div data-unitid=&quot;SE-dc117ccb-a569-4949-879d-7f8649fc22d7&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;677&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p6RvV/btr9Oytzj65/0yqbbC0ePgZsBdXNtJbLI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p6RvV/btr9Oytzj65/0yqbbC0ePgZsBdXNtJbLI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p6RvV/btr9Oytzj65/0yqbbC0ePgZsBdXNtJbLI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp6RvV%2Fbtr9Oytzj65%2F0yqbbC0ePgZsBdXNtJbLI0%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;842&quot; height=&quot;677&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;677&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-39d82a96-275d-43d9-b821-4f566235ea62&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-39d82a96-275d-43d9-b821-4f566235ea62&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-39d82a96-275d-43d9-b821-4f566235ea62&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-251f7069-fe63-4f58-b290-e7ad3eaf5272&quot;&gt;
&lt;p id=&quot;SE-8a985da6-e743-4d12-a98a-68efb80c61ac&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Call Stack &amp;amp; Heap -&amp;gt; WEB API's -&amp;gt; Callback Queue -&amp;gt; Call Stack &amp;amp; Heap 이벤트 발생 루프&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-5e814209-c54d-4943-ab9d-c1fe6c5c49a9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-href=&quot;http://latentflip.com/loupe/?code=CgoKCgokLm9uKCdidXR0b24nLCAnY2xpY2snLCBmdW5jdGlvbiBvbkNsaWNrKCkgewogICAgc2V0VGltZW91dChmdW5jdGlvbiB0aW1lcigpIHsKICAgICAgICBjb25zb2xlLmxvZygnWW91IGNsaWNrZWQgdGhlIGJ1dHRvbiEnKTsgICAgCiAgICB9LCAyMDAwKTsKfSk7Cgpjb25zb2xlLmxvZygiSGkhIik7CgpzZXRUaW1lb3V0KGZ1bmN0aW9uIHRpbWVvdXQoKSB7CiAgICBjb25zb2xlLmxvZygiQ2xpY2sgdGhlIGJ1dHRvbiEiKTsKfSwgNTAwMCk7Cgpjb25zb2xlLmxvZygiV2VsY29tZSB0byBsb3VwZS4iKTs%3D!!!PGJ1dHRvbj5DbGljayBtZSE8L2J1dHRvbj4%3D&quot;&gt;&lt;a href=&quot;http://latentflip.com/loupe/?code=CgoKCgokLm9uKCdidXR0b24nLCAnY2xpY2snLCBmdW5jdGlvbiBvbkNsaWNrKCkgewogICAgc2V0VGltZW91dChmdW5jdGlvbiB0aW1lcigpIHsKICAgICAgICBjb25zb2xlLmxvZygnWW91IGNsaWNrZWQgdGhlIGJ1dHRvbiEnKTsgICAgCiAgICB9LCAyMDAwKTsKfSk7Cgpjb25zb2xlLmxvZygiSGkhIik7CgpzZXRUaW1lb3V0KGZ1bmN0aW9uIHRpbWVvdXQoKSB7CiAgICBjb25zb2xlLmxvZygiQ2xpY2sgdGhlIGJ1dHRvbiEiKTsKfSwgNTAwMCk7Cgpjb25zb2xlLmxvZygiV2VsY29tZSB0byBsb3VwZS4iKTs%3D!!!PGJ1dHRvbj5DbGljayBtZSE8L2J1dHRvbj4%3D&quot;&gt;http://latentflip.com/loupe/?code=CgoKCgokLm9uKCdidXR0b24nLCAnY2xpY2snLCBmdW5jdGlvbiBvbkNsaWNrKCkgewogICAgc2V0VGltZW91dChmdW5jdGlvbiB0aW1lcigpIHsKICAgICAgICBjb25zb2xlLmxvZygnWW91IGNsaWNrZWQgdGhlIGJ1dHRvbiEnKTsgICAgCiAgICB9LCAyMDAwKTsKfSk7Cgpjb25zb2xlLmxvZygiSGkhIik7CgpzZXRUaW1lb3V0KGZ1bmN0aW9uIHRpbWVvdXQoKSB7CiAgICBjb25zb2xlLmxvZygiQ2xpY2sgdGhlIGJ1dHRvbiEiKTsKfSwgNTAwMCk7Cgpjb25zb2xlLmxvZygiV2VsY29tZSB0byBsb3VwZS4iKTs%3D!!!PGJ1dHRvbj5DbGljayBtZSE8L2J1dHRvbj4%3D&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-239218b7-19b2-41f1-b73b-6facc827aa1f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-239218b7-19b2-41f1-b73b-6facc827aa1f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-239218b7-19b2-41f1-b73b-6facc827aa1f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-204d6e91-9b51-41c3-b7b1-db325c7fb9c1&quot;&gt;
&lt;p id=&quot;SE-7b0c77fc-f7fe-4923-ac23-b1b7864fa06e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 실행하면 눈으로 코드가 실행되는 순서를 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b1a30eb6-088f-4d18-b742-235edb0c9af9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;callStack이 비면 비동기함수 실행 가능 (Callback Queue -&amp;gt; Call Stack)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7524c499-5944-4bb8-8862-78de444d5fcc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7524c499-5944-4bb8-8862-78de444d5fcc&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7524c499-5944-4bb8-8862-78de444d5fcc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7524c499-5944-4bb8-8862-78de444d5fcc&quot;&gt;
&lt;div data-unitid=&quot;SE-7524c499-5944-4bb8-8862-78de444d5fcc&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/10kHx/btr9MpqPvyX/gdar28z5614xYZa8BKFwlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/10kHx/btr9MpqPvyX/gdar28z5614xYZa8BKFwlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/10kHx/btr9MpqPvyX/gdar28z5614xYZa8BKFwlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F10kHx%2Fbtr9MpqPvyX%2Fgdar28z5614xYZa8BKFwlK%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;642&quot; height=&quot;538&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-18d56135-e1b4-4ad5-8c80-58a5e4c8d34a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-18d56135-e1b4-4ad5-8c80-58a5e4c8d34a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-18d56135-e1b4-4ad5-8c80-58a5e4c8d34a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b57fed9c-be7d-4378-8663-719a9dc8e44f&quot;&gt;
&lt;p id=&quot;SE-b95f83df-4a5c-4447-8227-7eee6f8df6b0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;A에서 B를 신경쓰지않고 바로 실행되는것 = 비동기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <category>ajax</category>
      <category>javascript</category>
      <category>JS</category>
      <category>비동기</category>
      <category>비동기통신</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/74</guid>
      <comments>https://cheerup313.tistory.com/74#entry74comment</comments>
      <pubDate>Thu, 13 Apr 2023 11:28:44 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 66일차] Javascript - RegExp (정규표현식)</title>
      <link>https://cheerup313.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;b&gt;정규표현식(RegExp : Regular Expression)&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;SE-f1eb05f7-4146-4b43-bbb4-1a0cdf18cd0a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f1eb05f7-4146-4b43-bbb4-1a0cdf18cd0a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f1eb05f7-4146-4b43-bbb4-1a0cdf18cd0a&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-410038f6-ee3a-439a-8cb6-eb5d4820d237&quot;&gt;
&lt;p id=&quot;SE-6795af6e-de37-461d-99b3-820c70aa1ef8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특정 규칙을 가진 문자열 집합에 대한 표현식.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;유효성 검사, 검색, 문자열 대체&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등에 유용&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-13a48a93-7f75-4a80-988e-340d39a83ca6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;언어독립적. 간결하게 복잡한 조건을 검사가능. 문법자체가 복잡하므로 학습 비용이 비교적 높음&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-187c3ab8-adbe-461c-8e1d-a25c58f65e70&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1c1d1424-f260-401b-b0cf-93dd42a51869&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1c1d1424-f260-401b-b0cf-93dd42a51869&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1c1d1424-f260-401b-b0cf-93dd42a51869&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1c1d1424-f260-401b-b0cf-93dd42a51869&quot;&gt;
&lt;div data-unitid=&quot;SE-1c1d1424-f260-401b-b0cf-93dd42a51869&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QQwB5/btr9OasQN9T/NUdbsyJM1FcE1bSk9ik221/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QQwB5/btr9OasQN9T/NUdbsyJM1FcE1bSk9ik221/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QQwB5/btr9OasQN9T/NUdbsyJM1FcE1bSk9ik221/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQQwB5%2Fbtr9OasQN9T%2FNUdbsyJM1FcE1bSk9ik221%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;864&quot; height=&quot;1120&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ed095436-d1e1-4139-98bb-a3e63e22ea3f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ed095436-d1e1-4139-98bb-a3e63e22ea3f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ed095436-d1e1-4139-98bb-a3e63e22ea3f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ed095436-d1e1-4139-98bb-a3e63e22ea3f&quot;&gt;
&lt;div data-unitid=&quot;SE-ed095436-d1e1-4139-98bb-a3e63e22ea3f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;1062&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuAqVb/btr9MeCRg1L/DWxmiEnZlDAzydzeyAqxM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuAqVb/btr9MeCRg1L/DWxmiEnZlDAzydzeyAqxM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuAqVb/btr9MeCRg1L/DWxmiEnZlDAzydzeyAqxM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuAqVb%2Fbtr9MeCRg1L%2FDWxmiEnZlDAzydzeyAqxM1%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;866&quot; height=&quot;1062&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;1062&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-1f8a0d4a-1925-4a93-9448-34bd0b073ebb&quot;&gt;
&lt;div id=&quot;SE-4680bcac-5e23-4422-9be2-ff224388fca5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4680bcac-5e23-4422-9be2-ff224388fca5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4680bcac-5e23-4422-9be2-ff224388fca5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4680bcac-5e23-4422-9be2-ff224388fca5&quot;&gt;
&lt;div data-unitid=&quot;SE-4680bcac-5e23-4422-9be2-ff224388fca5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKlcxq/btr9RwIHfMU/2c5aKqFQKwNzhk3dkU1izK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKlcxq/btr9RwIHfMU/2c5aKqFQKwNzhk3dkU1izK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKlcxq/btr9RwIHfMU/2c5aKqFQKwNzhk3dkU1izK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKlcxq%2Fbtr9RwIHfMU%2F2c5aKqFQKwNzhk3dkU1izK%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;864&quot; height=&quot;578&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f5d9d31d-ec87-47d0-a8a1-0d11d43d0883&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f5d9d31d-ec87-47d0-a8a1-0d11d43d0883&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f5d9d31d-ec87-47d0-a8a1-0d11d43d0883&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f5d9d31d-ec87-47d0-a8a1-0d11d43d0883&quot;&gt;
&lt;div data-unitid=&quot;SE-f5d9d31d-ec87-47d0-a8a1-0d11d43d0883&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciwYbR/btr9RvptM4D/CHV9vdNOsoEnCXgjdipiHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciwYbR/btr9RvptM4D/CHV9vdNOsoEnCXgjdipiHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciwYbR/btr9RvptM4D/CHV9vdNOsoEnCXgjdipiHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciwYbR%2Fbtr9RvptM4D%2FCHV9vdNOsoEnCXgjdipiHk%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;613&quot; height=&quot;134&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1f8a0d4a-1925-4a93-9448-34bd0b073ebb&quot;&gt;
&lt;p id=&quot;SE-b0027fe6-e154-4c59-9ae7-45bd8ce86b1a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-53f438bc-9bfd-416c-9aaf-e537a03f413d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-53f438bc-9bfd-416c-9aaf-e537a03f413d&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-53f438bc-9bfd-416c-9aaf-e537a03f413d&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-b7942e2c-ffb6-41a5-89de-c48f199baf91&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-efd09203-100a-4965-87a5-57d1986594e4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1f8a0d4a-1925-4a93-9448-34bd0b073ebb&quot;&gt;
&lt;h3 id=&quot;SE-ad00a579-52e5-4e45-9f61-c5b5e7570193&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정규표현식 객체 생성하기&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0170753d-62ab-4c1d-b706-35a1122576d9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0170753d-62ab-4c1d-b706-35a1122576d9&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0170753d-62ab-4c1d-b706-35a1122576d9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;    &amp;lt;button id=&quot;btn1&quot;&amp;gt;정규표현식 객체&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-33a0ff41-6f1f-496e-bab3-fb1cb2f1c5a2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-33a0ff41-6f1f-496e-bab3-fb1cb2f1c5a2&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-33a0ff41-6f1f-496e-bab3-fb1cb2f1c5a2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;    btn1.addEventListener('click',(e)=&amp;gt;{
        //숫자포함여부 검사용 정규표현식
        const regexp1 = /[0-9]/gi;
        const regexp2 = new RegExp(/[0-9]/gi);
        const regexp3 = new RegExp(&quot;[0-9]&quot;,&quot;gi&quot;);
        console.dir(regexp1);
        console.dir(regexp2);
        console.dir(regexp3);
    });
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-94ee34ca-75ef-4ef7-8a6d-bced2fb78f4f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-94ee34ca-75ef-4ef7-8a6d-bced2fb78f4f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-94ee34ca-75ef-4ef7-8a6d-bced2fb78f4f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-94ee34ca-75ef-4ef7-8a6d-bced2fb78f4f&quot;&gt;
&lt;div data-unitid=&quot;SE-94ee34ca-75ef-4ef7-8a6d-bced2fb78f4f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZh1Yh/btr9Mev45Zb/lOAl66NS2Jo6wl5LxCSHk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZh1Yh/btr9Mev45Zb/lOAl66NS2Jo6wl5LxCSHk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZh1Yh/btr9Mev45Zb/lOAl66NS2Jo6wl5LxCSHk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZh1Yh%2Fbtr9Mev45Zb%2FlOAl66NS2Jo6wl5LxCSHk1%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;426&quot; height=&quot;590&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-05850559-edf4-4003-a23f-aa399bbd8101&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-05850559-edf4-4003-a23f-aa399bbd8101&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-05850559-edf4-4003-a23f-aa399bbd8101&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f67eab20-94a1-4f45-b55f-2747cfd7e3c6&quot;&gt;
&lt;p id=&quot;SE-3f86ec58-5690-4cc7-8964-df4ba2518e68&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모두 똑같이 표현되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-61eeb664-07fd-41b0-92c3-81552c1baafd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;gi&quot;를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;플래그&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-046c96bb-4894-4e7d-bb46-f78b9a41528f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-222593ed-e789-49f0-b1ee-d69394ed67cf&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-222593ed-e789-49f0-b1ee-d69394ed67cf&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-222593ed-e789-49f0-b1ee-d69394ed67cf&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;    btn1.addEventListener('click',(e)=&amp;gt;{
        //숫자포함여부 검사용 정규표현식
        const regexp1 = /[0-9]/gi;
        const regexp2 = new RegExp(/[0-9]/gi);
        const regexp3 = new RegExp(&quot;[0-9]&quot;,&quot;gi&quot;);

        //정규식
        console.log(regexp1.test(&quot;abcde&quot;));//false
        console.log(regexp1.test(&quot;hello123&quot;,regexp1.lastIndex));//true 한개라도 해당되면 true
        console.log(regexp1.exec(&quot;hello123&quot;,regexp1.lastIndex));//매칭결과를 배열로 변환
        console.log(regexp1.exec(&quot;hello123&quot;,regexp1.lastIndex));
        console.log(regexp1.exec(&quot;hello123&quot;,regexp1.lastIndex));

    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f6444dd5-4379-4ae0-b346-853912e61ee5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f6444dd5-4379-4ae0-b346-853912e61ee5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f6444dd5-4379-4ae0-b346-853912e61ee5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f6444dd5-4379-4ae0-b346-853912e61ee5&quot;&gt;
&lt;div data-unitid=&quot;SE-f6444dd5-4379-4ae0-b346-853912e61ee5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XwG3E/btr9Ga1OqLd/8QXU4Ikey6sKMNBKw1b0G1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XwG3E/btr9Ga1OqLd/8QXU4Ikey6sKMNBKw1b0G1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XwG3E/btr9Ga1OqLd/8QXU4Ikey6sKMNBKw1b0G1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXwG3E%2Fbtr9Ga1OqLd%2F8QXU4Ikey6sKMNBKw1b0G1%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;440&quot; height=&quot;135&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1403569f-5244-4377-9f0d-097f8d05230a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1403569f-5244-4377-9f0d-097f8d05230a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1403569f-5244-4377-9f0d-097f8d05230a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-07289c55-6837-4b4b-b8f3-1d597abe4858&quot;&gt;
&lt;p id=&quot;SE-729edf72-a398-4b1c-a524-5ee6c8cbc91b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정규식 테스트는 1개라도 해당이 되면 true를 리턴한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-72e82d8a-c2fc-4f72-bc99-8a097d2a688b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;regexp1.lastIndex 는 매칭의 결과를 배열로 변환한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a3c8c880-6e89-453a-aaae-d5c74213c7b2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;lastIndex를 계속 입력할 경우 그다음인덱스, 그다음 인덱스, ... 를 반환하고&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-46f6f083-c755-4164-b63e-3cb7521ef5cc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;hello123&quot;보다 긴 인덱스를 찾을 경우 null을 반환한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7e140045-55da-438f-a41f-7a6a50a6e4e5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-4c45b262-5a2a-4c63-bd95-6d03dfa8b1b9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;.search&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 처음 일치한 인덱스 반환&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-44eedaee-d9d1-45fb-a524-60b848a06ff2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;.replace(정규표현식,&quot;바꿀문자&quot;)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 일치하는 부분 바꿀문자로 변환&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6acd8134-2b95-4566-826d-d4c828f1ba83&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;split(/[ ]/)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: [ ] 안에 들어가는 값으로 split&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b6375af8-8711-4bd0-aa34-c4f239ed4c0f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;match&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 일치하는 요소를 배열로 변환&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e7acece7-b19e-43e6-96f6-06efc54967b8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e7acece7-b19e-43e6-96f6-06efc54967b8&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e7acece7-b19e-43e6-96f6-06efc54967b8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;    btn1.addEventListener('click',(e)=&amp;gt;{
        //숫자포함여부 검사용 정규표현식
        const regexp1 = /[0-9]/gi;
        const regexp2 = new RegExp(/[0-9]/gi);
        const regexp3 = new RegExp(&quot;[0-9]&quot;,&quot;gi&quot;);

        //문자열
        console.log(&quot;hello123&quot;.search(regexp1));//5 처음 일치한 인덱스 반환
        console.log(&quot;hello123&quot;.replace(regexp1,&quot;*&quot;));//hello*** 일치하는 부분을 *으로 변환
        console.log(&quot;a,p/p l,e&quot;.split(/[,/ ]/));//['a','p','p','l','e']
        console.log(&quot;hello123&quot;.match(regexp1));//일치하는 요소를 배열로 반환 ['1','2','3']
    });
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b0561dfc-3649-49f4-8a9c-7d35736e5cf5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b0561dfc-3649-49f4-8a9c-7d35736e5cf5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b0561dfc-3649-49f4-8a9c-7d35736e5cf5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b0561dfc-3649-49f4-8a9c-7d35736e5cf5&quot;&gt;
&lt;div data-unitid=&quot;SE-b0561dfc-3649-49f4-8a9c-7d35736e5cf5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WoSqt/btr9V88pPfP/Jg7QIbykCxPBB44FPOpuDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WoSqt/btr9V88pPfP/Jg7QIbykCxPBB44FPOpuDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WoSqt/btr9V88pPfP/Jg7QIbykCxPBB44FPOpuDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWoSqt%2Fbtr9V88pPfP%2FJg7QIbykCxPBB44FPOpuDK%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;444&quot; height=&quot;84&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9c6c4b66-0b92-4b77-a95b-e868f9d0d9df&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9c6c4b66-0b92-4b77-a95b-e868f9d0d9df&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9c6c4b66-0b92-4b77-a95b-e868f9d0d9df&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-558a6cda-9ecb-419f-882b-066eaff2ee69&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;SE-ae36cab1-f9fc-4463-8abc-b82d7c74dc21&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;대체문자&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String#replace시 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$&amp;amp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;매칭된 문자열&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$`&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;매칭 이전 문자열&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;$'&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;매칭 이후 문자열&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d8491fed-4422-4fe3-8b6f-225b5b2e3f07&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d8491fed-4422-4fe3-8b6f-225b5b2e3f07&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d8491fed-4422-4fe3-8b6f-225b5b2e3f07&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;     btn2.addEventListener('click',(e)=&amp;gt;{
        const str=&quot;javascript jquery ajax css sass&quot;;
        const regexp=/as/g;
        area2.innerHTML=`${str.replace(regexp,&quot;&amp;lt;mark&amp;gt;$&amp;amp;&amp;lt;/mark&amp;gt;&quot;)}&amp;lt;br/&amp;gt;`;
        area2.innerHTML+=`${str.replace(regexp,&quot;&amp;lt;mark&amp;gt;$`&amp;lt;/mark&amp;gt;&quot;)}&amp;lt;br/&amp;gt;`;
        area2.innerHTML+=`${str.replace(regexp,&quot;&amp;lt;mark&amp;gt;$'&amp;lt;/mark&amp;gt;&quot;)}&amp;lt;br/&amp;gt;`;
        area2.innerHTML+=`${str.replace(regexp,(matched)=&amp;gt;`&amp;lt;mark&amp;gt;${matched}&amp;lt;/mark&amp;gt;`)}&amp;lt;br/&amp;gt;`;
    });&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-442ae43d-6d9f-4ea6-9feb-996564c45044&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-442ae43d-6d9f-4ea6-9feb-996564c45044&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-442ae43d-6d9f-4ea6-9feb-996564c45044&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-442ae43d-6d9f-4ea6-9feb-996564c45044&quot;&gt;
&lt;div data-unitid=&quot;SE-442ae43d-6d9f-4ea6-9feb-996564c45044&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;91&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHxFj5/btr9NlIsSK5/82owSd4IHSpIYELY47KWM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHxFj5/btr9NlIsSK5/82owSd4IHSpIYELY47KWM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHxFj5/btr9NlIsSK5/82owSd4IHSpIYELY47KWM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHxFj5%2Fbtr9NlIsSK5%2F82owSd4IHSpIYELY47KWM1%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;548&quot; height=&quot;91&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;91&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e1359cdc-17bb-4692-ac6e-fc394c1d7351&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e1359cdc-17bb-4692-ac6e-fc394c1d7351&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e1359cdc-17bb-4692-ac6e-fc394c1d7351&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4fcab062-7526-4293-a9c6-e63d34c6bd11&quot;&gt;
&lt;p id=&quot;SE-e2216a33-4881-4232-af16-b54b9abcf864&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/as/g : as를 전역으로 찾음&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c4c7f120-e9a0-44c9-95fd-d99defc5750b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-6d8ea4a0-cf60-4def-89cf-7528e49ae1ff&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-87d99201-3f4a-4729-97bf-95bb134bcb5c&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;flag 문자&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fff593; color: #000000;&quot;&gt;(정규표현식 옵션)&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;g&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;global : 전역비교수행. 여러건 매칭을 처리. g가 없으면 첫 매칭만 처리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;i&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ignoreCase : 영문자에 한해 대소문자 구분하지 않고 처리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;m&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;multiLine : 여러줄인 경우(\n) 행단위로 처리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1b65d8da-cda2-4881-b1fd-85e122d8e50b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1b65d8da-cda2-4881-b1fd-85e122d8e50b&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1b65d8da-cda2-4881-b1fd-85e122d8e50b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const SUBSTITUTE = &quot;&amp;lt;mark&amp;gt;$&amp;amp;&amp;lt;/mark&amp;gt;&quot;;
    btn3.onclick=(e)=&amp;gt;{
        const str=&quot;Javascript jQuery Ajax Sass&quot;;
        area3.innerHTML =`${str.replace(/a/g,SUBSTITUTE)}&amp;lt;br&amp;gt;`;
        area3.innerHTML +=`${str.replace(/a/g,SUBSTITUTE)}&amp;lt;br&amp;gt;`;
        area3.innerHTML +=`${str.replace(/a/gi,SUBSTITUTE)}&amp;lt;br&amp;gt;`; //대문자도 포함

    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-98961f13-f887-41f3-8ffe-655258c238a0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-98961f13-f887-41f3-8ffe-655258c238a0&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-98961f13-f887-41f3-8ffe-655258c238a0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-98961f13-f887-41f3-8ffe-655258c238a0&quot;&gt;
&lt;div data-unitid=&quot;SE-98961f13-f887-41f3-8ffe-655258c238a0&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uFNqw/btr9MfaGFnh/b8CwpfkakvTLVEHeO6Ixf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uFNqw/btr9MfaGFnh/b8CwpfkakvTLVEHeO6Ixf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uFNqw/btr9MfaGFnh/b8CwpfkakvTLVEHeO6Ixf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuFNqw%2Fbtr9MfaGFnh%2Fb8CwpfkakvTLVEHeO6Ixf0%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;546&quot; height=&quot;77&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-becf72a0-8973-4cd5-b0c4-5a0da8f5651c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-becf72a0-8973-4cd5-b0c4-5a0da8f5651c&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-becf72a0-8973-4cd5-b0c4-5a0da8f5651c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a7306cdb-7f86-4ba1-902a-1ad3b0586062&quot;&gt;
&lt;p id=&quot;SE-a5d46f56-bd4b-4ea5-9f3b-f57eb4f81d6d&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-1ccc3409-be23-445d-b133-5ed64ad28616&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;anchor&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;^ 시작&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;$ 끝&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c56cd4a2-58ba-4316-b362-5d27064d9024&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c56cd4a2-58ba-4316-b362-5d27064d9024&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c56cd4a2-58ba-4316-b362-5d27064d9024&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    btn4.onclick=(e)=&amp;gt;{
        const str=&quot;Javascript xxx jQuery Ajax&quot;;
        area4.innerHTML=`${str.replace(/^j/i,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;//i안붙이면 해당사항없
        area4.innerHTML+=`${str.replace(/x$/,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;

        const str2=`Javascript
xxx
jQuery
Ajax`; //탭안쓰고 바짝붙여써야 플래그 실행됨
        area4.innerHTML+=`${str2.replace(/^j/img,SUBSTITUTE)}&amp;lt;br/&amp;gt;`; //플래그 사이 순서 상관없
        // m = 줄단위 수행. 엔터쳐야 의미있음
        area4.innerHTML+=`${str2.replace(/x$/gm,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
    };
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0d5005f3-eb54-49db-b487-cc5a992f911f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0d5005f3-eb54-49db-b487-cc5a992f911f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0d5005f3-eb54-49db-b487-cc5a992f911f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0d5005f3-eb54-49db-b487-cc5a992f911f&quot;&gt;
&lt;div data-unitid=&quot;SE-0d5005f3-eb54-49db-b487-cc5a992f911f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czC1IA/btr9N3HhR1X/PIKTSN5EtSxch95suWaVx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czC1IA/btr9N3HhR1X/PIKTSN5EtSxch95suWaVx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czC1IA/btr9N3HhR1X/PIKTSN5EtSxch95suWaVx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczC1IA%2Fbtr9N3HhR1X%2FPIKTSN5EtSxch95suWaVx1%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;544&quot; height=&quot;88&quot; data-origin-width=&quot;544&quot; data-origin-height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-831c1786-b7a8-4d4c-95d3-ad314ee02f15&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-831c1786-b7a8-4d4c-95d3-ad314ee02f15&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-831c1786-b7a8-4d4c-95d3-ad314ee02f15&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b36b75cb-3105-4327-8f6d-cc4e299ea998&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e10f28ee-a137-415e-b7cd-e2dc7d991369&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;.(온점)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 임의의 한글자 의미&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7c22c701-a273-48b4-857d-384966eee938&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문자, 특수문자, 공백문자 하나를 가리킴&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-42c0ce55-5655-4a05-a5c7-cf066c772e6c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개행문자(\n)는 임의의 글자에 포함되지 않음. 띄어쓰기는 포함&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-96cf59a6-7f87-463a-b65f-0814df18e7fa&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-96cf59a6-7f87-463a-b65f-0814df18e7fa&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-96cf59a6-7f87-463a-b65f-0814df18e7fa&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;    btn5.onclick=(e)=&amp;gt;{
        const regexp =/^a.b/;
        console.log(&quot;acb&quot;,regexp.test(&quot;acb&quot;));//true
        console.log(&quot;acbc&quot;,regexp.test(&quot;acbc&quot;));//true
        console.log(&quot;acbcccccccc&quot;,regexp.test(&quot;acbcccccccc&quot;)); //true
        console.log(&quot;aaba&quot;,regexp.test(&quot;aaba&quot;))//true
        console.log(&quot;ab&quot;,regexp.test(&quot;ab&quot;))//false
        console.log(&quot;a b&quot;,regexp.test(&quot;a b&quot;))//true
        console.log(&quot;a\nb&quot;,regexp.test(&quot;a\nb&quot;))//false

        const regexp2=/in.$/; //in다음에 한글자 있고 끝이나는 문자열 검사
        console.log(&quot;going&quot;,regexp2.test(&quot;going&quot;)); //true
        console.log(&quot;inner&quot;,regexp2.test(&quot;inner&quot;)); //f
        console.log(&quot;holidayin&quot;,regexp2.test(&quot;holidayin&quot;));//f
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-42d0b857-bbae-4e23-ab46-13ad98de5564&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-42d0b857-bbae-4e23-ab46-13ad98de5564&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-42d0b857-bbae-4e23-ab46-13ad98de5564&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-42d0b857-bbae-4e23-ab46-13ad98de5564&quot;&gt;
&lt;div data-unitid=&quot;SE-42d0b857-bbae-4e23-ab46-13ad98de5564&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRLTmp/btr9V90wSRg/xE9KwECQ9h56EL7eHTOmH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRLTmp/btr9V90wSRg/xE9KwECQ9h56EL7eHTOmH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRLTmp/btr9V90wSRg/xE9KwECQ9h56EL7eHTOmH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRLTmp%2Fbtr9V90wSRg%2FxE9KwECQ9h56EL7eHTOmH0%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;405&quot; height=&quot;218&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2dd056d5-8891-44e9-9dd9-c619019f66dd&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2dd056d5-8891-44e9-9dd9-c619019f66dd&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2dd056d5-8891-44e9-9dd9-c619019f66dd&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2056bbab-a03b-435e-9956-f0dfb1efdc05&quot;&gt;
&lt;h3 id=&quot;SE-176a44b2-65ee-46a0-ab79-66d8d4a25e06&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;[ ]&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-ace61c0c-7e67-4cd9-bac3-146277299ae8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나의 문자에 대한 값목록(순서상관없음), 범위(아스키코드(유니코드)작은순-큰순) [abc] [김이]&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f2e24a0e-88d7-4fcf-a985-a8e3d2127b9a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[^abc]&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fff593; color: #000000;&quot;&gt;&lt;b&gt;[ ]안에 사용된 ^은 반전을 의미&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. abc가 아닌 문자&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a4538430-b0ad-438f-8e0d-ea99ba6b6996&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a4538430-b0ad-438f-8e0d-ea99ba6b6996&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a4538430-b0ad-438f-8e0d-ea99ba6b6996&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;    btn6.onclick=(e)=&amp;gt;{
        const str=&quot;Javascript jQuery Ajax 12345 안녕 ㄱㄴㄷ ㅏㅔㅣㅗㅜ&quot;;
        area6.innerHTML=`${str.replace(/[0123456789]/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area6.innerHTML+=`${str.replace(/[0-9]/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area6.innerHTML+=`${str.replace(/[A-Za-z]/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;//범위쓸때는 (유니코드)작은값부터 큰값으로
        area6.innerHTML+=`${str.replace(/[a-z]/gi,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area6.innerHTML+=`${str.replace(/[가-힣ㄱ-ㅎㅏ-ㅣ]/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;//자모음분리상태는 이걸로 체크 불가
        
        //@실습문제
        //1. 알파벳소문자로 시작하는 문자열 여부검색
        const re1=/^[a-z]/g;
        console.log(re1.test(&quot;abcde&quot;));//true
        console.log(re1.test(&quot;123qwerty&quot;));//false
        console.log(re1.test(&quot;Hello World&quot;));//f
        console.log(re1.test(&quot;aㅏㅏㅏㅏㅏㅏ&quot;));//true
        console.log(re1.test(&quot;ㄱaaaㄹaaaa&quot;));//f

        //2. 숫자 4자리 여부 검사
        const re2=/^[0-9][0-9][0-9][0-9]$/g;
        console.log(re2.test(&quot;1234&quot;));//t
        console.log(re2.test(&quot;123456&quot;));//f
        console.log(re2.test(&quot;abcd&quot;));//f
        console.log(re2.test(&quot;12&quot;));//f
        console.log(re2.test(&quot;가나다라&quot;));//f
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3ccb89fa-c32e-4ea1-8fbe-9e47e878a328&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3ccb89fa-c32e-4ea1-8fbe-9e47e878a328&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3ccb89fa-c32e-4ea1-8fbe-9e47e878a328&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3ccb89fa-c32e-4ea1-8fbe-9e47e878a328&quot;&gt;
&lt;div data-unitid=&quot;SE-3ccb89fa-c32e-4ea1-8fbe-9e47e878a328&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2U3a7/btr9NmgiyOa/YLLw64TcgL91AFvkdmSuR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2U3a7/btr9NmgiyOa/YLLw64TcgL91AFvkdmSuR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2U3a7/btr9NmgiyOa/YLLw64TcgL91AFvkdmSuR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2U3a7%2Fbtr9NmgiyOa%2FYLLw64TcgL91AFvkdmSuR1%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;550&quot; height=&quot;110&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-41b211cc-8d70-4f96-9d8c-3fe7f5bd8915&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-41b211cc-8d70-4f96-9d8c-3fe7f5bd8915&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-41b211cc-8d70-4f96-9d8c-3fe7f5bd8915&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-41b211cc-8d70-4f96-9d8c-3fe7f5bd8915&quot;&gt;
&lt;div data-unitid=&quot;SE-41b211cc-8d70-4f96-9d8c-3fe7f5bd8915&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6Wrbl/btr9Mdw88cr/z2WsgykwfB2KVsRWKlZx01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Wrbl/btr9Mdw88cr/z2WsgykwfB2KVsRWKlZx01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Wrbl/btr9Mdw88cr/z2WsgykwfB2KVsRWKlZx01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Wrbl%2Fbtr9Mdw88cr%2Fz2WsgykwfB2KVsRWKlZx01%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;398&quot; height=&quot;202&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6e1e2ca3-e7dc-4858-be6a-f8fbbbf6f011&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6e1e2ca3-e7dc-4858-be6a-f8fbbbf6f011&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6e1e2ca3-e7dc-4858-be6a-f8fbbbf6f011&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e0a55486-4af6-4eac-a113-833fb25c613c&quot;&gt;
&lt;p id=&quot;SE-2f77e8f5-ae9e-44a9-91ab-6fadb250bff3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-452d43b3-8093-4a13-98f7-1c0eaef893eb&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;단축문자&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;\d digit : 숫자 한글자&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;\w word : 영문자/숫자/_ 한글자&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;\s space : 공백문자/개행문자/탭문자 한글자&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;\D : 숫자아닌 한글자&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;\W : 영문자, 숫자, _ 아닌 한글자&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;\S : 공백문자, 개행문자, 탭문자가 아닌 한글자&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-23c10e9f-959a-4708-80e8-cda4e48a345f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-23c10e9f-959a-4708-80e8-cda4e48a345f&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-23c10e9f-959a-4708-80e8-cda4e48a345f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    btn7.onclick=(e)=&amp;gt;{
        const str = `A1 B2 c3 d_4 e:5 fG12345 -@!@#$% 
안녕    잘가
水`;
        area7.innerHTML=`${str.replace(/\d/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML+=`${str.replace(/\D/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML+=`${str.replace(/\w/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML+=`${str.replace(/\W/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML+=`${str.replace(/\s/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML+=`${str.replace(/\S/g,SUBSTITUTE)}&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;`;

        //[]문법
        area7.innerHTML += `${str.replace(/[0-9]/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML += `${str.replace(/[^0-9]/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML += `${str.replace(/[A-Za-z0-9_]/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML += `${str.replace(/[^A-Za-z0-9_]/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML += `${str.replace(/[ \n\t]/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
        area7.innerHTML += `${str.replace(/[^ \n\t]/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-228eb5ca-b5b1-4a90-9acc-d64bc5f9b8b5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-228eb5ca-b5b1-4a90-9acc-d64bc5f9b8b5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-228eb5ca-b5b1-4a90-9acc-d64bc5f9b8b5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-228eb5ca-b5b1-4a90-9acc-d64bc5f9b8b5&quot;&gt;
&lt;div data-unitid=&quot;SE-228eb5ca-b5b1-4a90-9acc-d64bc5f9b8b5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQIBju/btr9Qk2O7ui/IYkTABCP1QuOiFjd5pGXMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQIBju/btr9Qk2O7ui/IYkTABCP1QuOiFjd5pGXMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQIBju/btr9Qk2O7ui/IYkTABCP1QuOiFjd5pGXMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQIBju%2Fbtr9Qk2O7ui%2FIYkTABCP1QuOiFjd5pGXMk%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;548&quot; height=&quot;248&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1f1e18d4-0774-4aa7-85ab-3879ce123f9b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1f1e18d4-0774-4aa7-85ab-3879ce123f9b&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1f1e18d4-0774-4aa7-85ab-3879ce123f9b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3f26b8a5-a156-4aa7-85fe-19687a4c4443&quot;&gt;
&lt;p id=&quot;SE-46d771b7-7ea6-4918-a2e4-70c60771f467&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-0bfe843e-11f3-4f76-a1ca-e03b81fcc042&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;( ) grouping , | or&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-99f9c4a2-83d1-4400-92cd-33fa13d76ee8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-99f9c4a2-83d1-4400-92cd-33fa13d76ee8&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-99f9c4a2-83d1-4400-92cd-33fa13d76ee8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;btn8.onclick = (e) =&amp;gt; {
  const str = '월요일에는 월요병, 화가 부르르르 화요일 홧병, 수수술한잔 하는 수요일, 목이 컥~ 목요일, 금방 오지 않는 금요일, 그리고 오늘은 월요일';
  area8.innerHTML = `${str.replace(/(수요일|목요일|금요일)/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
  area8.innerHTML += `${str.replace(/(수|목|금)요일/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
  area8.innerHTML += `${str.replace(/[수목금]요일/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;

  // String#match:매칭된 결과를 배열로 반환
  console.log(str.match(/(월요일|화요일)/g));
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cbf2f416-6dca-4abe-9652-9cf9064d7dbb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cbf2f416-6dca-4abe-9652-9cf9064d7dbb&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cbf2f416-6dca-4abe-9652-9cf9064d7dbb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-cbf2f416-6dca-4abe-9652-9cf9064d7dbb&quot;&gt;
&lt;div data-unitid=&quot;SE-cbf2f416-6dca-4abe-9652-9cf9064d7dbb&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddV5mK/btr9Sj3rHO0/JDcFlIlOkKXP47U3LgFpY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddV5mK/btr9Sj3rHO0/JDcFlIlOkKXP47U3LgFpY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddV5mK/btr9Sj3rHO0/JDcFlIlOkKXP47U3LgFpY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddV5mK%2Fbtr9Sj3rHO0%2FJDcFlIlOkKXP47U3LgFpY1%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;546&quot; height=&quot;122&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-beee946d-5b93-44f4-b2cd-19ff76187944&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-beee946d-5b93-44f4-b2cd-19ff76187944&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-beee946d-5b93-44f4-b2cd-19ff76187944&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f04712a6-c66c-49aa-ab0e-5e24a86d1f0c&quot;&gt;
&lt;p id=&quot;SE-4b95876a-45a5-4c89-8867-081e698d0935&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-397b0185-48b6-41d6-a162-6931cc703da1&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;escaping&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;wildcard문자를 문자그대로 사용하고자 하는 경우 \와 함께 escaping할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[ ]안에서 escaping 필요없음. (단 \\ 처리 필요)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-42a20c6c-8de8-4ea7-bdb4-2e437034511e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-42a20c6c-8de8-4ea7-bdb4-2e437034511e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-42a20c6c-8de8-4ea7-bdb4-2e437034511e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;btn9.onclick = (e) =&amp;gt; { 
  const str = '\\3.4^2$'; 
  area9.innerHTML = `${str.replace(/\$/, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/\./, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/\\/, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/\^/, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/[$]/, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/[.]/, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/[\\]/, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/[\^$]/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
  area9.innerHTML += `${str.replace(/[$^]/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;

};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e0d101f0-f548-4b12-a2e4-79d3d6e81ecf&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e0d101f0-f548-4b12-a2e4-79d3d6e81ecf&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e0d101f0-f548-4b12-a2e4-79d3d6e81ecf&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e0d101f0-f548-4b12-a2e4-79d3d6e81ecf&quot;&gt;
&lt;div data-unitid=&quot;SE-e0d101f0-f548-4b12-a2e4-79d3d6e81ecf&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t1rvm/btr9SPurujC/42opYkCjK1KKjZPrQw3dO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t1rvm/btr9SPurujC/42opYkCjK1KKjZPrQw3dO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t1rvm/btr9SPurujC/42opYkCjK1KKjZPrQw3dO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft1rvm%2Fbtr9SPurujC%2F42opYkCjK1KKjZPrQw3dO1%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;545&quot; height=&quot;174&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d0b5b8a5-29d2-4256-863a-5cfbbea5c73e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d0b5b8a5-29d2-4256-863a-5cfbbea5c73e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d0b5b8a5-29d2-4256-863a-5cfbbea5c73e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-06a6efb2-c109-455c-a431-6b3cd1fc98b7&quot;&gt;
&lt;p id=&quot;SE-e6df91f6-c629-4ed5-81aa-a4dee490c4e6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-ab2f7ce6-2729-49d0-b27c-af4e605ab5f0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;수량자 Quantifier&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;a*&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;a가 0개이상&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;a+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;a가 1개이상&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;a?&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;a가 0,1개&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;a{2,5}&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;a가 2개이상 5개이하&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;a{2, }&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;a가 2개이상&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;a{3}&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;a가 3개&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;s&gt;&lt;b&gt;a{ , 5}&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/s&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;s&gt;a가 5개 이하 (지원하지 않는 문법)&lt;/s&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-20cd99c1-c0b8-4dd1-8481-3a763bdf93f5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-20cd99c1-c0b8-4dd1-8481-3a763bdf93f5&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-20cd99c1-c0b8-4dd1-8481-3a763bdf93f5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;    btn10.onclick = () =&amp;gt; {
    const str = &quot;aabc abc bc&quot;;
    area10.innerHTML = `${str.replace(/a*b/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
    area10.innerHTML += `${str.replace(/a+b/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;
    area10.innerHTML += `${str.replace(/a?b/g, SUBSTITUTE)}&amp;lt;br/&amp;gt;`;

    // @실습문제 
    // a로 시작하고, z로 끝나는 문자열 검사
    const regexp = /^a.*z$/;
    console.log(regexp.test(&quot;abcdefz&quot;)); // true
    console.log(regexp.test(&quot;a*z&quot;)); // true
    console.log(regexp.test(&quot;az&quot;)); // true
    console.log(regexp.test(&quot;abc&quot;)); // false
    console.log(regexp.test(&quot;xyz&quot;)); // false
    console.log(regexp.test(&quot;안a하b이c녕z&quot;)); // false
    console.log(&quot;-----------------------&quot;)

    // 영문자만으로 이루어진 문자열 검사
    const regexp2 = /^[A-Za-z]+$/;
    console.log(regexp2.test(&quot;abcde&quot;));
    console.log(regexp2.test(&quot;a&quot;));
    console.log(regexp2.test(&quot;&quot;));
    console.log(regexp2.test(&quot;123&quot;));
    console.log(regexp2.test(&quot;abc123&quot;));
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-19aab397-04c7-4612-bcd4-00576f014ef7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-19aab397-04c7-4612-bcd4-00576f014ef7&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-19aab397-04c7-4612-bcd4-00576f014ef7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-19aab397-04c7-4612-bcd4-00576f014ef7&quot;&gt;
&lt;div data-unitid=&quot;SE-19aab397-04c7-4612-bcd4-00576f014ef7&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MoXnO/btr9QUJCt7y/1VeMLndg7KgRwvUPXJ9Uc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MoXnO/btr9QUJCt7y/1VeMLndg7KgRwvUPXJ9Uc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MoXnO/btr9QUJCt7y/1VeMLndg7KgRwvUPXJ9Uc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMoXnO%2Fbtr9QUJCt7y%2F1VeMLndg7KgRwvUPXJ9Uc1%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;547&quot; height=&quot;74&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;74&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e4343360-a3d8-4654-a84e-56806610cace&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e4343360-a3d8-4654-a84e-56806610cace&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e4343360-a3d8-4654-a84e-56806610cace&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e4343360-a3d8-4654-a84e-56806610cace&quot;&gt;
&lt;div data-unitid=&quot;SE-e4343360-a3d8-4654-a84e-56806610cace&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U0DGh/btr9Gh0VQ8L/LHQrImGo6EQO4reJO0T1F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U0DGh/btr9Gh0VQ8L/LHQrImGo6EQO4reJO0T1F1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U0DGh/btr9Gh0VQ8L/LHQrImGo6EQO4reJO0T1F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU0DGh%2Fbtr9Gh0VQ8L%2FLHQrImGo6EQO4reJO0T1F1%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;408&quot; height=&quot;245&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-10ca9c02-a655-4f2b-937a-600f752ab086&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-10ca9c02-a655-4f2b-937a-600f752ab086&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-10ca9c02-a655-4f2b-937a-600f752ab086&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;    btn11.onclick = () =&amp;gt; {
    const str = &quot;aa aba abba abbba&quot;;
    area10.innerHTML = `${str.replace(/ab{0,}a/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area10.innerHTML += `${str.replace(/ab*a/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area10.innerHTML += `${str.replace(/ab{1,}a/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area10.innerHTML += `${str.replace(/ab+a/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area10.innerHTML += `${str.replace(/ab{0,1}a/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area10.innerHTML += `${str.replace(/ab?a/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area10.innerHTML += `${str.replace(/ab{1}a/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;

    // 4자리 숫자로 이루어진 비밀번호 검사
    const regexp1 = /^\d{4}$/;
    console.log(&quot;1234&quot;, regexp1.test(&quot;1234&quot;)); // true
    console.log(&quot;123456&quot;, regexp1.test(&quot;123456&quot;)); // false
    console.log(&quot;abcd&quot;, regexp1.test(&quot;abcd&quot;)); // false
    console.log(&quot;12&quot;, regexp1.test(&quot;12&quot;)); // false
    console.log(&quot;가나다라&quot;, regexp1.test(&quot;가나다라&quot;)); // false
    console.log(&quot;----------------------------------&quot;)
    // 숫자로 시작하고 영문자가 3개이상 나오고, .로 끝나는 문자열 검사
    const regexp2 = /^\d[a-zA-Z]{3,}\.$/;
    console.log(&quot;9abcdefg.&quot;, regexp2.test(&quot;9abcdefg.&quot;)); // true
    console.log(&quot;9abc.&quot;, regexp2.test(&quot;9abc.&quot;)); // true
    console.log(&quot;100&quot;, regexp2.test(&quot;100&quot;)); // false
    console.log(&quot;1가나다.&quot;, regexp2.test(&quot;1가나다.&quot;)); // false
    console.log(&quot;123abc가나다.&quot;, regexp2.test(&quot;123abc가나다.&quot;)); // false
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5e0f16c9-2cf4-491c-914b-3efd1e4177c7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5e0f16c9-2cf4-491c-914b-3efd1e4177c7&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5e0f16c9-2cf4-491c-914b-3efd1e4177c7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5e0f16c9-2cf4-491c-914b-3efd1e4177c7&quot;&gt;
&lt;div data-unitid=&quot;SE-5e0f16c9-2cf4-491c-914b-3efd1e4177c7&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpKIg7/btr9QUv3CzQ/gZKaAc8PnKyQtOKjBjOIx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpKIg7/btr9QUv3CzQ/gZKaAc8PnKyQtOKjBjOIx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpKIg7/btr9QUv3CzQ/gZKaAc8PnKyQtOKjBjOIx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpKIg7%2Fbtr9QUv3CzQ%2FgZKaAc8PnKyQtOKjBjOIx0%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;543&quot; height=&quot;139&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fc32277b-8a56-4044-ae70-e83f585cf634&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fc32277b-8a56-4044-ae70-e83f585cf634&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fc32277b-8a56-4044-ae70-e83f585cf634&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-fc32277b-8a56-4044-ae70-e83f585cf634&quot;&gt;
&lt;div data-unitid=&quot;SE-fc32277b-8a56-4044-ae70-e83f585cf634&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ORjQL/btr9Qmzwux3/0R9gl9m9KBHNdT1Nln2gbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ORjQL/btr9Qmzwux3/0R9gl9m9KBHNdT1Nln2gbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ORjQL/btr9Qmzwux3/0R9gl9m9KBHNdT1Nln2gbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FORjQL%2Fbtr9Qmzwux3%2F0R9gl9m9KBHNdT1Nln2gbk%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;405&quot; height=&quot;225&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7b5cb0b7-b981-484f-aa08-f1c9bcbafa5e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7b5cb0b7-b981-484f-aa08-f1c9bcbafa5e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7b5cb0b7-b981-484f-aa08-f1c9bcbafa5e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2d5e0350-4550-4a86-8f0a-030e1dd03c87&quot;&gt;
&lt;p id=&quot;SE-564c0262-6e8d-44d1-9187-c87737b09124&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e74535a5-c9d5-4d85-970f-109094f755c3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-bd7a5749-52a0-4083-a9a0-ed76cd0b2fac&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Look Around&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-dd88da3c-7f60-4360-b4a5-cf52234ebfb0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;검사만 실시하고 최종 결과에 포함되지 않는 것.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9dda3024-2e2b-4f16-a6ec-7d495884fbff&quot; 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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Look Ahead&lt;/b&gt;&lt;/span&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;color: #000000;&quot;&gt;a(?=b) b가 뒤따르는 a를 조회&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;a(?!b) b가 뒤따르지 않는 a를 조회&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Look behind&lt;/b&gt;&lt;/span&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;color: #000000;&quot;&gt;(?&amp;lt;=b) a앞에 b가 존재하는 a를 조회&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(?&amp;lt;! b) a앞에 b가 존재하지 않는 a를 조회&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a3b32800-63fe-4c4b-b1e9-f03cf3ee80f4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a3b32800-63fe-4c4b-b1e9-f03cf3ee80f4&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a3b32800-63fe-4c4b-b1e9-f03cf3ee80f4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    btn12.onclick = () =&amp;gt; {
    const str1 = 'hello world hello Tom hello Jane';
    area12.innerHTML = `${str1.replace(/hello(?= world)/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area12.innerHTML += `${str1.replace(/hello(?! world)/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    
    const str2 = 'hello world lotte world t world';
    area12.innerHTML += `${str2.replace(/(?&amp;lt;=hello )world/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    area12.innerHTML += `${str2.replace(/(?&amp;lt;!hello )world/g, SUBSTITUTE)}&amp;lt;br&amp;gt;`;
    
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3ca8a8dc-a185-4cf8-8106-f13d0ab355de&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3ca8a8dc-a185-4cf8-8106-f13d0ab355de&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3ca8a8dc-a185-4cf8-8106-f13d0ab355de&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3ca8a8dc-a185-4cf8-8106-f13d0ab355de&quot;&gt;
&lt;div data-unitid=&quot;SE-3ca8a8dc-a185-4cf8-8106-f13d0ab355de&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FSl8f/btr9SOPPLDe/zvYvyjYevgAb9GuKc5eqbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FSl8f/btr9SOPPLDe/zvYvyjYevgAb9GuKc5eqbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FSl8f/btr9SOPPLDe/zvYvyjYevgAb9GuKc5eqbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFSl8f%2Fbtr9SOPPLDe%2FzvYvyjYevgAb9GuKc5eqbK%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;550&quot; height=&quot;94&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-29f2e3dc-1280-44a0-8f90-81eb2fdd7c9a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-29f2e3dc-1280-44a0-8f90-81eb2fdd7c9a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-29f2e3dc-1280-44a0-8f90-81eb2fdd7c9a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e07ef067-5eef-4bd9-b28c-c338be3a8c20&quot;&gt;
&lt;p id=&quot;SE-ef31cb93-5e48-473f-8d98-ab186951ca42&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e51d0825-291a-40c1-9ae5-3a6e8af6d591&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-c2bc02a4-1df3-4381-a8c0-35d7ed4543af&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;*비밀번호 유효성 검사*&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1764e814-9e4b-4837-b3ce-5c698376f3df&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ex ) 8~12자리, 숫자/영문자/특수문자(!&amp;amp;/\*@)가 하나이상 포함된 비밀번호&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cbd8bb6a-a54b-42ec-85d4-f068c8b81b55&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cbd8bb6a-a54b-42ec-85d4-f068c8b81b55&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cbd8bb6a-a54b-42ec-85d4-f068c8b81b55&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;    &amp;lt;input type=&quot;text&quot; name=&quot;password&quot; id=&quot;password&quot; placeholder=&quot;비밀번호&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2774b509-76cf-4b6d-956c-211280444c79&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2774b509-76cf-4b6d-956c-211280444c79&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2774b509-76cf-4b6d-956c-211280444c79&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;    password.onblur = (e) =&amp;gt; {
    const val = e.target.value;

    if(!/^.{8,12}$/.test(val)){
        alert(&quot;비밀번호는 8 ~ 12자리여야 합니다.&quot;);
        return;
    }
    if(!/\d/.test(val)){
        alert(&quot;비밀번호는 하나이상의 숫자를 포함해야 합니다.&quot;);
        return;
    }
    if(!/[a-z]/i.test(val)){
        alert(&quot;비밀번호는 하나이상의 영문자를 포함해야 합니다.&quot;);
        return;
    }
    if(!/[!&amp;amp;/\\*@]/i.test(val)){
        alert(&quot;비밀번호는 하나이상의 특수문자(!&amp;amp;/\\*@)를 포함해야 합니다.&quot;);
        return;
    }

    console.log(&quot;비밀번호가 유효합니다.&quot;);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bf432b11-c488-4f7b-acee-8a3c84e1e7eb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bf432b11-c488-4f7b-acee-8a3c84e1e7eb&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bf432b11-c488-4f7b-acee-8a3c84e1e7eb&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-bf432b11-c488-4f7b-acee-8a3c84e1e7eb&quot;&gt;
&lt;div data-unitid=&quot;SE-bf432b11-c488-4f7b-acee-8a3c84e1e7eb&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;176&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OXOIn/btr9SkgXD6B/8I0geaGDFScBlh7LC28Pkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OXOIn/btr9SkgXD6B/8I0geaGDFScBlh7LC28Pkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OXOIn/btr9SkgXD6B/8I0geaGDFScBlh7LC28Pkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOXOIn%2Fbtr9SkgXD6B%2F8I0geaGDFScBlh7LC28Pkk%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;176&quot; height=&quot;61&quot; data-origin-width=&quot;176&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bc6d4361-1c47-455e-a8c1-00363abf64e6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bc6d4361-1c47-455e-a8c1-00363abf64e6&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bc6d4361-1c47-455e-a8c1-00363abf64e6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bc6d4361-1c47-455e-a8c1-00363abf64e6&quot;&gt;
&lt;div data-unitid=&quot;SE-bc6d4361-1c47-455e-a8c1-00363abf64e6&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1CMV0/btr9NCb7wE6/kNsUZsT5JQIgNeQw4c6gT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1CMV0/btr9NCb7wE6/kNsUZsT5JQIgNeQw4c6gT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1CMV0/btr9NCb7wE6/kNsUZsT5JQIgNeQw4c6gT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1CMV0%2Fbtr9NCb7wE6%2FkNsUZsT5JQIgNeQw4c6gT1%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;427&quot; height=&quot;77&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;77&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-37959044-752b-4a3b-b759-028677fc4bdb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-37959044-752b-4a3b-b759-028677fc4bdb&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-37959044-752b-4a3b-b759-028677fc4bdb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-37959044-752b-4a3b-b759-028677fc4bdb&quot;&gt;
&lt;div data-unitid=&quot;SE-37959044-752b-4a3b-b759-028677fc4bdb&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t0oKj/btr9YmrXPIf/ZAkk4uLuxW9ovMY9R9tyP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t0oKj/btr9YmrXPIf/ZAkk4uLuxW9ovMY9R9tyP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t0oKj/btr9YmrXPIf/ZAkk4uLuxW9ovMY9R9tyP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft0oKj%2Fbtr9YmrXPIf%2FZAkk4uLuxW9ovMY9R9tyP1%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;180&quot; height=&quot;59&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0c011b43-c451-4975-8529-537f6042f96a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0c011b43-c451-4975-8529-537f6042f96a&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0c011b43-c451-4975-8529-537f6042f96a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0c011b43-c451-4975-8529-537f6042f96a&quot;&gt;
&lt;div data-unitid=&quot;SE-0c011b43-c451-4975-8529-537f6042f96a&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;81&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG0ZUF/btr9NnGgLDs/0AiFVtyEZlG66wckVfwroK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG0ZUF/btr9NnGgLDs/0AiFVtyEZlG66wckVfwroK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG0ZUF/btr9NnGgLDs/0AiFVtyEZlG66wckVfwroK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG0ZUF%2Fbtr9NnGgLDs%2F0AiFVtyEZlG66wckVfwroK%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;430&quot; height=&quot;81&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;81&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5e719dff-25e5-4517-9837-fba746765ae1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5e719dff-25e5-4517-9837-fba746765ae1&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5e719dff-25e5-4517-9837-fba746765ae1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5e719dff-25e5-4517-9837-fba746765ae1&quot;&gt;
&lt;div data-unitid=&quot;SE-5e719dff-25e5-4517-9837-fba746765ae1&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;168&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/No4Pr/btr9NikHQ7P/OuhyG87Z3m46CsYnuhLnj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/No4Pr/btr9NikHQ7P/OuhyG87Z3m46CsYnuhLnj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/No4Pr/btr9NikHQ7P/OuhyG87Z3m46CsYnuhLnj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNo4Pr%2Fbtr9NikHQ7P%2FOuhyG87Z3m46CsYnuhLnj1%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;168&quot; height=&quot;60&quot; data-origin-width=&quot;168&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-76c64b76-b963-4797-a757-7c987fbff251&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-76c64b76-b963-4797-a757-7c987fbff251&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-76c64b76-b963-4797-a757-7c987fbff251&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-76c64b76-b963-4797-a757-7c987fbff251&quot;&gt;
&lt;div data-unitid=&quot;SE-76c64b76-b963-4797-a757-7c987fbff251&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NdRCQ/btr9SObgVZy/Jt8kVIsEDKoSh2NoN7K6UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NdRCQ/btr9SObgVZy/Jt8kVIsEDKoSh2NoN7K6UK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NdRCQ/btr9SObgVZy/Jt8kVIsEDKoSh2NoN7K6UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNdRCQ%2Fbtr9SObgVZy%2FJt8kVIsEDKoSh2NoN7K6UK%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;429&quot; height=&quot;76&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b05e73c2-95d9-4630-b3e1-564e9288355a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b05e73c2-95d9-4630-b3e1-564e9288355a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b05e73c2-95d9-4630-b3e1-564e9288355a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-24f8536f-56fb-4a2c-970e-f00c7e688117&quot;&gt;
&lt;p id=&quot;SE-1b543e08-0133-46a8-9bb1-498e9cb4366b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7bd3baf8-5536-458c-b17e-9761af56627f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7bd3baf8-5536-458c-b17e-9761af56627f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7bd3baf8-5536-458c-b17e-9761af56627f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7bd3baf8-5536-458c-b17e-9761af56627f&quot;&gt;
&lt;div data-unitid=&quot;SE-7bd3baf8-5536-458c-b17e-9761af56627f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;184&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lm8AD/btr9WaLTLPt/txHKYe56w47RPOqFXlt6f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lm8AD/btr9WaLTLPt/txHKYe56w47RPOqFXlt6f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lm8AD/btr9WaLTLPt/txHKYe56w47RPOqFXlt6f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flm8AD%2Fbtr9WaLTLPt%2FtxHKYe56w47RPOqFXlt6f1%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;184&quot; height=&quot;59&quot; data-origin-width=&quot;184&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-8120cca4-e198-4fd3-87b0-067167619815&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8120cca4-e198-4fd3-87b0-067167619815&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8120cca4-e198-4fd3-87b0-067167619815&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8120cca4-e198-4fd3-87b0-067167619815&quot;&gt;
&lt;div data-unitid=&quot;SE-8120cca4-e198-4fd3-87b0-067167619815&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mo0hi/btr9NpqBlEm/xTbmEXlmhgGJYdH9mwHrh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mo0hi/btr9NpqBlEm/xTbmEXlmhgGJYdH9mwHrh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mo0hi/btr9NpqBlEm/xTbmEXlmhgGJYdH9mwHrh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMo0hi%2Fbtr9NpqBlEm%2FxTbmEXlmhgGJYdH9mwHrh0%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;435&quot; height=&quot;86&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-6818fb51-4f57-4c86-88c8-d239cd98ecd8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6818fb51-4f57-4c86-88c8-d239cd98ecd8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6818fb51-4f57-4c86-88c8-d239cd98ecd8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6818fb51-4f57-4c86-88c8-d239cd98ecd8&quot;&gt;
&lt;div data-unitid=&quot;SE-6818fb51-4f57-4c86-88c8-d239cd98ecd8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;170&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qmwrb/btr9MoZPhRv/5M9Fo4XhalRa1RccOLuIk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qmwrb/btr9MoZPhRv/5M9Fo4XhalRa1RccOLuIk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qmwrb/btr9MoZPhRv/5M9Fo4XhalRa1RccOLuIk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQmwrb%2Fbtr9MoZPhRv%2F5M9Fo4XhalRa1RccOLuIk1%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;170&quot; height=&quot;61&quot; data-origin-width=&quot;170&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bc5813be-2c4c-4e1e-9c01-421cf84c92f7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bc5813be-2c4c-4e1e-9c01-421cf84c92f7&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bc5813be-2c4c-4e1e-9c01-421cf84c92f7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bc5813be-2c4c-4e1e-9c01-421cf84c92f7&quot;&gt;
&lt;div data-unitid=&quot;SE-bc5813be-2c4c-4e1e-9c01-421cf84c92f7&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;24&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clLTSF/btr9SObgVZC/cJQ5RG2h0z5DKgyA4bo4K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clLTSF/btr9SObgVZC/cJQ5RG2h0z5DKgyA4bo4K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clLTSF/btr9SObgVZC/cJQ5RG2h0z5DKgyA4bo4K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclLTSF%2Fbtr9SObgVZC%2FcJQ5RG2h0z5DKgyA4bo4K0%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;392&quot; height=&quot;24&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;24&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;SE-75c994a8-9c4e-4314-85a3-e36bce5bf889&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <category>javascript</category>
      <category>JS</category>
      <category>비밀번호유효성검사</category>
      <category>유효성검사</category>
      <category>정규표현식</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/73</guid>
      <comments>https://cheerup313.tistory.com/73#entry73comment</comments>
      <pubDate>Thu, 13 Apr 2023 11:24:34 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 65일차] Javascript - Event(이벤트)</title>
      <link>https://cheerup313.tistory.com/72</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-15ca7625-0590-4a54-820c-d3eb5d63bdbd&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-15ca7625-0590-4a54-820c-d3eb5d63bdbd&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-15ca7625-0590-4a54-820c-d3eb5d63bdbd&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c8c1e1ef-7eff-4094-871c-1496a9cca4e6&quot;&gt;
&lt;h3 id=&quot;SE-58bc1127-9d56-4268-a01d-f748893bd78e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Event (이벤트)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-61d63f77-43e9-4ef8-ac1f-266362e672eb&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문서가 모두 로딩되었을때 window의 load이벤트 발생!&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6c30de3f-1281-4903-bb08-a6f2baec66d2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;window.onload와 body.onload는 동일하다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-71c996f8-bb9d-4ea8-87ec-e4b77e4d1d54&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bea92856-6c50-4f25-9d63-f132c98b6789&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bea92856-6c50-4f25-9d63-f132c98b6789&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bea92856-6c50-4f25-9d63-f132c98b6789&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    window.onload=()=&amp;gt;{
        const h2=document.createElement(&quot;h2&quot;);
        h2.append(document.createTextNode(&quot;Hello Friday~&quot;));
        target.append(h2); //Uncaught ReferenceError: target is not defined -&amp;gt; 위에서부터 아래로 해석
    };
    &amp;lt;body onload=&quot;alert('Page Loading Complete')&quot;&amp;gt;&amp;lt;!--onload=&quot;alert('Page Loading Complete!')&quot;--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a23bb201-04b0-48f8-b8eb-ec281998860d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a23bb201-04b0-48f8-b8eb-ec281998860d&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a23bb201-04b0-48f8-b8eb-ec281998860d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a23bb201-04b0-48f8-b8eb-ec281998860d&quot;&gt;
&lt;div data-unitid=&quot;SE-a23bb201-04b0-48f8-b8eb-ec281998860d&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bItyhF/btr9MdRtqNr/A6zunLtLazNP2jyYsTs1FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bItyhF/btr9MdRtqNr/A6zunLtLazNP2jyYsTs1FK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bItyhF/btr9MdRtqNr/A6zunLtLazNP2jyYsTs1FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbItyhF%2Fbtr9MdRtqNr%2FA6zunLtLazNP2jyYsTs1FK%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;451&quot; height=&quot;131&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-19bbbe2b-9d70-4235-a0a7-6ded3af0b162&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-19bbbe2b-9d70-4235-a0a7-6ded3af0b162&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-19bbbe2b-9d70-4235-a0a7-6ded3af0b162&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-76416d58-2f2a-4461-8749-d975818dbeeb&quot;&gt;
&lt;p id=&quot;SE-8abbdca3-5e69-47b5-bb68-e502bc343bae&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-7868d308-b769-4348-a0ab-9f238e670c56&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;event&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-137ac23a-a7ee-4a3a-bdc6-1cf1d6884c80&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹페이지 상에 일어나는 모든&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;사용자의 action, 네트워크상 처리상태변화&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등 event라는 이름으로 하나의 이벤트로 관리됨.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9fb6fa88-da13-4844-949d-ae1b5a4be2de&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;event -&amp;gt; eventHandler&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 이벤트가 발생하면, 태그에 등록된 핸들러를 호출&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e3e962c2-7322-4f08-b327-99499b0f7d69&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;태그객체별로 event별 eventHandler 등록해서 사용&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-343dea45-a33c-451f-985c-10e597297333&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-343dea45-a33c-451f-985c-10e597297333&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-343dea45-a33c-451f-985c-10e597297333&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;h1&amp;gt;event&amp;lt;/h1&amp;gt;
    &amp;lt;a href=&quot;https://www.w3schools.com/tags/ref_eventattributes.asp&quot;&amp;gt;HTML Event Attributes&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-edf1f1c6-18b3-4b35-af56-223e6e19e82f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-edf1f1c6-18b3-4b35-af56-223e6e19e82f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-edf1f1c6-18b3-4b35-af56-223e6e19e82f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-edf1f1c6-18b3-4b35-af56-223e6e19e82f&quot;&gt;
&lt;div data-unitid=&quot;SE-edf1f1c6-18b3-4b35-af56-223e6e19e82f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;159&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bY1IVH/btr9Pdpk2KT/LNuK5ZU6gtQAMMrwO3I6D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bY1IVH/btr9Pdpk2KT/LNuK5ZU6gtQAMMrwO3I6D1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bY1IVH/btr9Pdpk2KT/LNuK5ZU6gtQAMMrwO3I6D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbY1IVH%2Fbtr9Pdpk2KT%2FLNuK5ZU6gtQAMMrwO3I6D1%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;159&quot; height=&quot;84&quot; data-origin-width=&quot;159&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d3bcdfc2-2f67-4a87-b5bd-bf9c4c8b1759&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d3bcdfc2-2f67-4a87-b5bd-bf9c4c8b1759&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d3bcdfc2-2f67-4a87-b5bd-bf9c4c8b1759&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d3bcdfc2-2f67-4a87-b5bd-bf9c4c8b1759&quot;&gt;
&lt;div data-unitid=&quot;SE-d3bcdfc2-2f67-4a87-b5bd-bf9c4c8b1759&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;847&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eyIfJi/btr9N31Camu/RpmEkfDUFIXoIH4Q6GXA9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eyIfJi/btr9N31Camu/RpmEkfDUFIXoIH4Q6GXA9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eyIfJi/btr9N31Camu/RpmEkfDUFIXoIH4Q6GXA9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeyIfJi%2Fbtr9N31Camu%2FRpmEkfDUFIXoIH4Q6GXA9K%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;847&quot; height=&quot;840&quot; data-origin-width=&quot;847&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d6b397cc-3e55-467e-adf7-fcf4a7df9f93&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d6b397cc-3e55-467e-adf7-fcf4a7df9f93&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d6b397cc-3e55-467e-adf7-fcf4a7df9f93&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-88829b64-a846-41cf-8016-f92ddda40132&quot;&gt;
&lt;p id=&quot;SE-bdf1e83f-309c-4316-985b-292ca38f3c4c&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-be954902-43b4-4cd1-a4d9-4a0c353666df&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-73e38469-31a5-4bc8-868b-30d897e1facb&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;handler binding&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-ac24b0d6-33cd-4c94-a779-64f49a53ffc3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;handler binding 1&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: inline 이벤트 속성에 작성한 내용이 핸들러함수의 몸통에 전달된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7c7b8e28-1f18-4bd1-9853-793d6970bcfe&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;handler binding 2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: 태그 객체의 이벤트 속성에 핸들러를 직접 지정, 하나의 핸들러만 적용 가능&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-24a9c43f-cdaa-47a1-a808-eb145010e4a3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;handler binding 3&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: addEventListener(이벤트명, 핸들러), 복수개의 핸들러 등록 가능&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-35c64dc2-b612-4371-b0f8-92faaa55b634&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-35c64dc2-b612-4371-b0f8-92faaa55b634&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-35c64dc2-b612-4371-b0f8-92faaa55b634&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    //handler binding 1
    const test1=()=&amp;gt;{
        console.log(btn1.onclick); //&amp;fnof; onclick(event) {test1();} 함수의 몸통에 전달됨.
    };
    //handler binding 2
    btn2.onclick=()=&amp;gt;{
        console.log(btn2.onclick);//()=&amp;gt;{console.log(btn2.onclick);}
    };
    btn2.onclick=()=&amp;gt;{
        console.log('#btn2 clicked! - 2 ');
        btn2.onclick=null; //등록된 함수 제거
    };
    //handler binding 3
    const foo1=()=&amp;gt;console.log('#btn3 clicked! - 1');
    const foo2=()=&amp;gt;{console.log('#btn3 clicked! - 2');
        btn3.removeEventListener('click',foo2);
    }
    btn3.addEventListener('click',foo1);
    btn3.addEventListener('click',foo2);&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f78911db-4b89-4ab1-ab29-1ff745477ffb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f78911db-4b89-4ab1-ab29-1ff745477ffb&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f78911db-4b89-4ab1-ab29-1ff745477ffb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-355b9c08-9db9-4289-9155-b9fee3b6ea91&quot;&gt;
&lt;p id=&quot;SE-b13cc933-e8bd-4696-9313-0bdc2aab220e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실습문제 _ 이미지 로딩하기&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1dd24d88-0d2a-491c-8bfb-a9163384c668&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;조건 ) #btn를 클릭하면, 동적으로 img태그를 생성해서 #target의 자식요소로 추가.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c6d26d3e-7d14-4c2a-9fb8-8e34e9ed9107&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추가가 완료되면(load) &quot;이미지 로딩이 완료되었습니다. &quot; 메세지를 alert하세요.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ba2a19d7-1fed-4198-bc58-698dbb0d09c5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ba2a19d7-1fed-4198-bc58-698dbb0d09c5&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ba2a19d7-1fed-4198-bc58-698dbb0d09c5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;div id=&quot;target&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;
    btn4.addEventListener('click',()=&amp;gt;{
        const img=document.createElement(&quot;img&quot;);
        img.src=&quot;../sample/image/hyunta.jpg&quot;;
        img.style=&quot;width:100px; border-radius:50%;&quot;;
        img.onload=()=&amp;gt;alert(&quot;이미지 로딩이 완료되었습니다.&quot;);
        target.innerHTML =&quot;&quot;;//자식요소 모두 제거
        target.append(img);
    });
    &amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ee848857-f96d-45c0-ad07-cb9aa1d696b8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ee848857-f96d-45c0-ad07-cb9aa1d696b8&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ee848857-f96d-45c0-ad07-cb9aa1d696b8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-db61fd8a-fe0d-4907-a4a5-951d98e1f4b2&quot;&gt;
&lt;p id=&quot;SE-50adb483-b443-4de5-8788-2545c55bb9b9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <category>javascript</category>
      <category>JS</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/72</guid>
      <comments>https://cheerup313.tistory.com/72#entry72comment</comments>
      <pubDate>Thu, 13 Apr 2023 11:19:01 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 64일차] Javascript - window객체 , BOM, DOM</title>
      <link>https://cheerup313.tistory.com/71</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-b90f1dbb-05ee-4ee0-ae25-e1b64f0b5254&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b90f1dbb-05ee-4ee0-ae25-e1b64f0b5254&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b90f1dbb-05ee-4ee0-ae25-e1b64f0b5254&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0b9ef45f-cc9e-4c83-afc8-b0ab4c64aca5&quot;&gt;
&lt;h2 id=&quot;SE-6fea7e93-3c88-435c-a8f9-4c43592117cb&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;window객체&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p id=&quot;SE-acccf722-8c8f-4697-95e6-7d7013ac59b0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹페이지의 모든 자원을 관리하는 객체&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2b8877f2-e246-4461-8621-673e8f713a72&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-6ab99d0e-28fc-4b73-bf53-fb2efa80be69&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;BOM (Browser Object Model)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a7f641ea-f022-45eb-a4f9-d5650f50b4a9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;navigator, location, history, screen, XMLHttpRequest, frames ...&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-34f95de3-8d00-492b-bdde-dc7e590a042e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-aee92088-3468-4916-9de0-3804d22d605b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DOM (Document Object Model)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9e70f7d3-550f-4f69-944e-a133a554f07b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;document (html로 부터 변환된 객체)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c7e99bdc-93ae-43ee-8255-c6dc8e6c0104&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-3c4ece31-1640-4569-9805-009f8e0342d0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Javascript (Object, String, Array, ...)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3f0291e0-b7f0-4554-acc1-b267d25c76ba&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-14103382-2d3b-4ea9-a6b6-455e75529ba5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오늘은 이렇게 배워봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9fb3f704-89a8-4f7c-8d09-b3609c621afa&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-141ab0a1-825c-45e4-86da-da0fe67f34fa&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;window 객체&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-d542771f-0a97-45f7-97eb-b6fb155f8755&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹페이지의 모든 자원을 관리하는 객체 (최상위)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bfd46f25-4a6b-42b2-a0e9-234a6049d925&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bfd46f25-4a6b-42b2-a0e9-234a6049d925&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bfd46f25-4a6b-42b2-a0e9-234a6049d925&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bfd46f25-4a6b-42b2-a0e9-234a6049d925&quot;&gt;
&lt;div data-unitid=&quot;SE-bfd46f25-4a6b-42b2-a0e9-234a6049d925&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9ABd9/btr8vagEoE7/SWTyQALOACTyoWC8c2WEa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9ABd9/btr8vagEoE7/SWTyQALOACTyoWC8c2WEa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9ABd9/btr8vagEoE7/SWTyQALOACTyoWC8c2WEa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9ABd9%2Fbtr8vagEoE7%2FSWTyQALOACTyoWC8c2WEa1%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;428&quot; height=&quot;726&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-47b5a36e-90d0-4d3a-a6f5-99c96698f693&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-47b5a36e-90d0-4d3a-a6f5-99c96698f693&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-47b5a36e-90d0-4d3a-a6f5-99c96698f693&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-aed274b0-267b-4114-83fc-a1f9a2befae1&quot;&gt;
&lt;p id=&quot;SE-5de1c510-2b64-4c53-b78b-023f723e06c2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-f433b092-c456-467f-92af-7cb0cfbf34ca&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;F12콘솔창에 this를 검색하면, 다음과 같이 window 가 가진 객체들이 뜬다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2241159b-657e-4e18-837f-ee77ac6e33b8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그외에도 window.Object , window.Array, window.String 등등 검색이 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-daad40d4-c584-4ef2-ad21-f3f8fdcec68d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;window객체는 페이지에 대한 관리로, 크롬 탭이 여러개일 경우 window객체도 여러개라고 봐야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-57074f4e-f591-487a-a1c1-0922da685769&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;window객체의 메소드들을 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-edae45ce-e7e8-459a-be63-c8df7432408f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-f372fd29-7516-4c85-9a7a-66865010efec&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;open&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;새 탭 또는 팝업을 시작하는 메소드&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;open&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(url, target, specs) : window&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;target : window 이름 또는 _self&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;specs : 팝업크기, 위치 지정&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1540a540-66e6-4dff-9e91-7e07fa514b64&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1540a540-66e6-4dff-9e91-7e07fa514b64&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1540a540-66e6-4dff-9e91-7e07fa514b64&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;    &amp;lt;button onclick=&quot;test1();&quot;&amp;gt;open&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test2();&quot;&amp;gt;close&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7220dc8e-2bff-43ff-ac87-7c90308ba480&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7220dc8e-2bff-43ff-ac87-7c90308ba480&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7220dc8e-2bff-43ff-ac87-7c90308ba480&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    const test1 = () =&amp;gt; {
      open(&quot;index.html&quot;);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fd2e6b23-d99c-42a8-af65-6db2efc0ceed&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fd2e6b23-d99c-42a8-af65-6db2efc0ceed&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fd2e6b23-d99c-42a8-af65-6db2efc0ceed&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-59755951-2c72-4bb3-bc46-f6e2fc20779a&quot;&gt;
&lt;p id=&quot;SE-33bccced-c0d9-4c7e-929f-9dacfb069328&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같이 입력하면, 버튼 open을 클릭시 index.html이 새 탭으로 나타난다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c57f5ee2-74b1-434f-97e2-40561a377186&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c57f5ee2-74b1-434f-97e2-40561a377186&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c57f5ee2-74b1-434f-97e2-40561a377186&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    const test1 = () =&amp;gt; {
      open(&quot;https://naver.com&quot;, &quot;_self&quot;);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bf550c8a-cc1a-4179-9f91-4098468a1f65&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bf550c8a-cc1a-4179-9f91-4098468a1f65&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bf550c8a-cc1a-4179-9f91-4098468a1f65&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-10d09826-872d-4fff-9fd0-38235302fa8a&quot;&gt;
&lt;p id=&quot;SE-2810b699-5070-4939-b938-3020102091ec&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같이 입력하면, open 클릭시 네이버로 가며, 새 탭이 아닌 현재 창에서 띄워진다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a19c3497-e78e-4e67-98dc-06f2526fe607&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a19c3497-e78e-4e67-98dc-06f2526fe607&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a19c3497-e78e-4e67-98dc-06f2526fe607&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;    let newWindow;
    const test1 = () =&amp;gt; {
      newWindow = open(&quot;index.html&quot;, &quot;javascript-index&quot;); // 새 window객체의 name
      console.log(newWindow);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3cdf384c-1556-4be1-ac0e-b47b53246354&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3cdf384c-1556-4be1-ac0e-b47b53246354&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3cdf384c-1556-4be1-ac0e-b47b53246354&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e38e5f13-dd3a-4ba1-905d-fc9379151e38&quot;&gt;
&lt;p id=&quot;SE-2909876c-72c7-4a97-b780-c5b581c2a00e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위와 같이 입력하면, index페이지가 새로 열리고, 그 index페이지의 window객체 이름은 javascript-index가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-ab244b8b-1401-4697-ba43-d895e265c381&quot;&gt;
&lt;div id=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot;&gt;
&lt;div data-unitid=&quot;SE-a74b326d-aa4e-47c9-aaf7-9fc18ff75395&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;52&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yAtZ7/btr8uTM2IGC/XW0bvzk7Ps7SV01N9obAmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yAtZ7/btr8uTM2IGC/XW0bvzk7Ps7SV01N9obAmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yAtZ7/btr8uTM2IGC/XW0bvzk7Ps7SV01N9obAmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyAtZ7%2Fbtr8uTM2IGC%2FXW0bvzk7Ps7SV01N9obAmk%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;444&quot; height=&quot;52&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;52&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;SE-07da4a31-d2e3-4f8a-9e7e-9bbe5bd3e1d2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;콘솔창에 window를 검색해보면 이름이 제대로 설정된 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8bb0ecf4-3b25-419e-bfdc-c0455ba571bf&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8bb0ecf4-3b25-419e-bfdc-c0455ba571bf&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8bb0ecf4-3b25-419e-bfdc-c0455ba571bf&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-4f8f9ea8-f37b-470f-82b4-7da2e375340e&quot;&gt;
&lt;p id=&quot;SE-394cea1b-24d9-432f-b299-4d7999ab3c8f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4cadec52-e6b4-4846-a4a9-2d58e1d9b2a7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4cadec52-e6b4-4846-a4a9-2d58e1d9b2a7&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4cadec52-e6b4-4846-a4a9-2d58e1d9b2a7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;    let newWindow;
    const test1 = () =&amp;gt; {
      newWindow = open(&quot;&quot;, &quot;popup&quot;, &quot;width=300px, heigimage.pnght=300px, left=200px, top=200px&quot;);
      console.log(newWindow);
    };
    const test2 = () =&amp;gt; {
      newWindow.alert('부모창(opener)에서 보낸 메세지~ '); // non-block | block (newWindow콘솔 open되었을때만!)
      newWindow.close();
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1cd63788-c5a0-4f96-b02a-7332999bb136&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1cd63788-c5a0-4f96-b02a-7332999bb136&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1cd63788-c5a0-4f96-b02a-7332999bb136&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a32e7c72-8d96-4315-8223-977887629e38&quot;&gt;
&lt;p id=&quot;SE-e813ef63-486e-4b50-86a7-442647299ccf&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;open을 누르면 새 창이 왼쪽에서부터 200px, 위에서부터 200px 아래에 존재하게 뜨는 것을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-477c654f-1840-4052-a60d-afaf7a48e8b8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 기준값은 '모니터의 크기' 이며, 브라우저 바 를 제외하고 창에서만 위치를 계산해서 따진다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-df84b6e3-a107-486f-97e0-94c4cbea6614&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;close를 누를 경우 종료가 제대로 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3a4a2af3-d1b8-44aa-a2fb-0d6911cb267b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-a025ab69-542b-4afd-8845-8e4cb189aa58&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;* 여기서 alert는 제대로 작동하지 않았는데, non-block | block에 따라 다르다고 하는데 이해를 하지 못했다 ㅠ&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b788198c-6637-46aa-8c40-5f5d4c85b041&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-c017f6a8-d735-4a1a-b897-ae9a596df5ab&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;setTimeout&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(callbackFunction, millis) : id&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7029768e-2a12-41c9-93dd-07c5890c529f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7029768e-2a12-41c9-93dd-07c5890c529f&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7029768e-2a12-41c9-93dd-07c5890c529f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;    &amp;lt;button onclick=&quot;test3();&quot;&amp;gt;setTimeout&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test4();&quot;&amp;gt;clearTimeout&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test5();&quot;&amp;gt;@실습문제 - 타이머&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-292dba4c-c441-468a-a43e-d69982596309&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-292dba4c-c441-468a-a43e-d69982596309&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-292dba4c-c441-468a-a43e-d69982596309&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    let timeoutId;
    const test3 = () =&amp;gt; {
      timeoutId = setTimeout(() =&amp;gt; {
        alert('안녕');
      }, 3000);
      console.log(&quot;timeoutId : &quot;, timeoutId);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d3a67e25-17b9-4a20-a8da-22571867c495&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d3a67e25-17b9-4a20-a8da-22571867c495&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d3a67e25-17b9-4a20-a8da-22571867c495&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    const test4 = () =&amp;gt; {
      clearTimeout(timeoutId);
      console.log(timeoutId + &quot;번 timeout을 취소!&quot;);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6d8b6932-fb24-487c-872d-56971acb51d2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6d8b6932-fb24-487c-872d-56971acb51d2&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6d8b6932-fb24-487c-872d-56971acb51d2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e6f3477e-ff98-4bdf-9c6b-55ab39c683d5&quot;&gt;
&lt;p id=&quot;SE-68e1729f-61eb-437c-97de-09e6d79b011a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;3000의 단위는 밀리초로, setTimeout 버튼을 클릭하면 3초뒤에 '안녕'이라는 팝업이 뜬다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a2338030-b1db-43d4-8c7d-bcca5c577b03&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a2338030-b1db-43d4-8c7d-bcca5c577b03&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a2338030-b1db-43d4-8c7d-bcca5c577b03&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-071ac1ad-a18c-4504-b2b2-5cdc02d31b05&quot;&gt;
&lt;p id=&quot;SE-ea191704-2db7-4cf0-8b4e-ee62aadbba4c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;팝업이 뜨기 전에 clearTimeout을 클릭하면 창이 뜨지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6c448b91-3fd7-4097-980d-fbe5fc154a58&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;팝업이 뜬 후에 clearTimeout을 입력하면, console창에 취소 메세지는 뜨지만, 실제로 취소할 수 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-00cd751f-4edc-485b-a4d8-4775b94a9baa&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-f871d575-8c34-49db-b12b-96f8ed7b703b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-b77fae96-b673-45d2-a9f5-c10d10f9f4fb&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;팝업 타이머 만들기&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a8db74a8-b9a3-4c56-81e5-635198fe827d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자부터 타이머메세지와 시간(초)를 입력받아 타이머를 생성해보자.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-73975c2d-722b-4597-ad3a-a5bff433f8de&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-73975c2d-722b-4597-ad3a-a5bff433f8de&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-73975c2d-722b-4597-ad3a-a5bff433f8de&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test5 = () =&amp;gt; {
      const msg = prompt(&quot;타이머 메세지를 입력해주세요~&quot;, &quot;밥 먹어라~&quot;);
      const sec = prompt(&quot;타이머 시간(초)을 입력해주세요~&quot;, &quot;3&quot;);
      timeoutId = setTimeout(() =&amp;gt; {
        alert(msg);
      }, sec * 1000);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot;&gt;
&lt;div data-unitid=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tNzrf/btr8vrW3qDj/G9hIg9SzLPI5UnMqgLjZbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tNzrf/btr8vrW3qDj/G9hIg9SzLPI5UnMqgLjZbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tNzrf/btr8vrW3qDj/G9hIg9SzLPI5UnMqgLjZbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtNzrf%2Fbtr8vrW3qDj%2FG9hIg9SzLPI5UnMqgLjZbk%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;447&quot; height=&quot;175&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d3eeb0cc-8227-4e7c-bc11-e0c1dd8e6482&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d3eeb0cc-8227-4e7c-bc11-e0c1dd8e6482&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d3eeb0cc-8227-4e7c-bc11-e0c1dd8e6482&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d3eeb0cc-8227-4e7c-bc11-e0c1dd8e6482&quot;&gt;
&lt;div data-unitid=&quot;SE-d3eeb0cc-8227-4e7c-bc11-e0c1dd8e6482&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXEHJr/btr8w7Kxx2g/orYd5cTy4zO3ZI97dR6c90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXEHJr/btr8w7Kxx2g/orYd5cTy4zO3ZI97dR6c90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXEHJr/btr8w7Kxx2g/orYd5cTy4zO3ZI97dR6c90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXEHJr%2Fbtr8w7Kxx2g%2ForYd5cTy4zO3ZI97dR6c90%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;444&quot; height=&quot;172&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4263f32a-301d-4ddb-9389-02473928c9db&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4263f32a-301d-4ddb-9389-02473928c9db&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4263f32a-301d-4ddb-9389-02473928c9db&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-03eedc1e-dcdc-4856-88bb-3cb5b947a007&quot;&gt;
&lt;p id=&quot;SE-d6cb95cd-6a4e-4bfa-9307-f73f556694f9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 입력하면&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot;&gt;
&lt;div data-unitid=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zLGy8/btr8znziNJG/Vv2HVOT4rW9UBJks65yXg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zLGy8/btr8znziNJG/Vv2HVOT4rW9UBJks65yXg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zLGy8/btr8znziNJG/Vv2HVOT4rW9UBJks65yXg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzLGy8%2Fbtr8znziNJG%2FVv2HVOT4rW9UBJks65yXg0%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;447&quot; height=&quot;128&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a4742ab6-a009-4534-96cd-fd0a287ae1b3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-de5975e6-b31f-42d2-9358-bf9af8dfe656&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f2cd7db0-ee4c-4c6e-ae13-d8a29b10f5fa&quot;&gt;
&lt;p id=&quot;SE-8234c06f-7300-4bca-854b-4e10b27d757f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;정확히 3초뒤에 입력한 내용 그대로 팝업이 뜬다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a5c84b81-f7e3-4b0d-8f77-75e0d33b7eb8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a5c84b81-f7e3-4b0d-8f77-75e0d33b7eb8&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a5c84b81-f7e3-4b0d-8f77-75e0d33b7eb8&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-b8ab2180-d44c-4b85-b211-38bf9c74c128&quot;&gt;
&lt;p id=&quot;SE-287b6d06-de04-4de7-b67d-6f3dafcf0450&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-a05ccf3f-6f73-4d36-865d-6b0f7df5c111&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;setInterval&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(callbackFunction, millis) : intervalId&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-85f46468-584c-4c71-a54e-2f8f7d8c0e48&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;millis초 후에 millis초 간격으로 callbackFunction 실행&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bbd50de9-cb02-49f6-9d77-546c441fbe4e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bbd50de9-cb02-49f6-9d77-546c441fbe4e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bbd50de9-cb02-49f6-9d77-546c441fbe4e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;h2 id=&quot;count&quot;&amp;gt;&amp;lt;/h2&amp;gt;
    &amp;lt;button onclick=&quot;test6();&quot;&amp;gt;setInterval&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test7();&quot;&amp;gt;clearInterval&amp;lt;/button&amp;gt;
    &amp;lt;h2 id=&quot;clock&quot;&amp;gt;&amp;lt;/h2&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-72ccfb03-b932-4d72-8348-10106f85ca14&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-72ccfb03-b932-4d72-8348-10106f85ca14&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-72ccfb03-b932-4d72-8348-10106f85ca14&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    let countNum = 10;
    count.innerHTML = countNum;
    let intervalId;
    const test6 = () =&amp;gt; {
      intervalId = setInterval(() =&amp;gt; {
        countNum--;
        count.innerHTML = countNum;
      }, 1000);
      console.log('intervalId :', intervalId);
    };
  
    const test7 = () =&amp;gt; {
      clearInterval(intervalId);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5ed53601-545d-4d9b-8d40-70e79f91fbd6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5ed53601-545d-4d9b-8d40-70e79f91fbd6&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5ed53601-545d-4d9b-8d40-70e79f91fbd6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4b6d97b0-cab0-4f24-bcfb-03861c533abd&quot;&gt;
&lt;p id=&quot;SE-18fa8682-d430-48c5-b8d8-5fc571d6ca68&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;setInterval 을 실행하면 1초(1000밀리초)에 숫자가 1개씩 줄어든다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-dd291c47-0246-4b3a-885c-6c72a29690a7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;clearInterval을 실행하면 계속 실행되던 setInterval이 멈춘다. (-값이어도 계속 진행됨)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-45b2f321-2100-4a6b-97a2-2fea6fc66314&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-1b90b105-5218-40c6-a998-a88f5a25a44c&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;시계만들기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-447d4d47-48a9-4935-8535-3d08da9d0ed4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-447d4d47-48a9-4935-8535-3d08da9d0ed4&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-447d4d47-48a9-4935-8535-3d08da9d0ed4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const clockString = () =&amp;gt; {
      const f = (n) =&amp;gt; n.toString().padStart(2, &quot;0&quot;);
      const now = new Date();
      const yyyy = now.getFullYear();
      const MM = f(now.getMonth() + 1);
      const dd = f(now.getDate());
      const hh = f(now.getHours());
      const mm = f(now.getMinutes());
      const ss = f(now.getSeconds());
      return `${yyyy}/${MM}/${dd} ${hh}:${mm}:${ss}`;
    };
    const displayClock = () =&amp;gt; clock.innerHTML = clockString();
    console.log(setInterval(displayClock, 1000));&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-unitid=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;204&quot; data-origin-height=&quot;39&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUtC4s/btr8ndrMyxG/j7b2kEmxyCDU8T9KVL8DJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUtC4s/btr8ndrMyxG/j7b2kEmxyCDU8T9KVL8DJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUtC4s/btr8ndrMyxG/j7b2kEmxyCDU8T9KVL8DJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUtC4s%2Fbtr8ndrMyxG%2Fj7b2kEmxyCDU8T9KVL8DJk%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;204&quot; height=&quot;39&quot; data-origin-width=&quot;204&quot; data-origin-height=&quot;39&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4be7a048-d510-43f4-b74a-1742645e19c3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-8c508dd4-6193-4c68-9fcb-b28d4550d671&quot;&gt;
&lt;p id=&quot;SE-5639b938-6055-4ae2-91e7-a1034ac6ae1f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;다음과 같이 실행하면, 현재 시간이 출력된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ff5a979c-a8ba-40a8-ada3-8ff85a131897&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ff5a979c-a8ba-40a8-ada3-8ff85a131897&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ff5a979c-a8ba-40a8-ada3-8ff85a131897&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-6277295e-4bdd-4daa-8551-2942d5706679&quot;&gt;
&lt;p id=&quot;SE-c05a8c33-0b06-4da1-902e-992923d57f6b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-9b72a218-87bb-4633-a1a5-203723b42744&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-aae1660c-42ff-483f-9fb7-09eb796fbd98&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-dd54b824-61f1-480f-a7f5-852f331e850e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;BOM (Browser Object Model)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-8e089881-3129-4377-bd99-f1694e6ca7eb&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;navigator, location, history, screen, XMLHttpRequest, frames ...&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7451ef40-8c0a-46a5-aea2-66e702d0f035&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;BOM에 종류에는 위와 같은 것들이 있다. 하나하나 알아보자.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0a42b427-b3bb-42b8-8c8f-6bff4f08362f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-f5229d8a-60e2-43fa-83b3-65c5f00b677f&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;navigator&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-c47ed20e-e630-479d-9d59-324b3416f30a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;브라우저에 대한 정보를 가진 객체&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-cfd5166c-6a75-49fd-9c78-426a2a5eba6e&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-ff5a979c-a8ba-40a8-ada3-8ff85a131897&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ff5a979c-a8ba-40a8-ada3-8ff85a131897&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ff5a979c-a8ba-40a8-ada3-8ff85a131897&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6277295e-4bdd-4daa-8551-2942d5706679&quot;&gt;
&lt;p id=&quot;SE-ca07e346-ec23-4f07-9202-96dbbae30e30&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;userAgent&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2ae9364a-1ef2-492e-a48e-839ad8d9f3e0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2ae9364a-1ef2-492e-a48e-839ad8d9f3e0&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2ae9364a-1ef2-492e-a48e-839ad8d9f3e0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test1 = () =&amp;gt; {
        console.log(navigator);
        console.log(navigator.userAgent);
        //크롬 : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36
        //firefox : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
        //edge : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53
        //웨일 : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.151 Whale/3.14.134.62 Safari/537.36
        //사파리 : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15

    };  &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-87df5dff-4e44-4985-af62-e95d40a342d9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-87df5dff-4e44-4985-af62-e95d40a342d9&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-87df5dff-4e44-4985-af62-e95d40a342d9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-87df5dff-4e44-4985-af62-e95d40a342d9&quot;&gt;
&lt;div data-unitid=&quot;SE-87df5dff-4e44-4985-af62-e95d40a342d9&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;607&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nsLOI/btr8BfHKGs0/OYdEdeUHmjKx1Z0VTiKcQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nsLOI/btr8BfHKGs0/OYdEdeUHmjKx1Z0VTiKcQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nsLOI/btr8BfHKGs0/OYdEdeUHmjKx1Z0VTiKcQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnsLOI%2Fbtr8BfHKGs0%2FOYdEdeUHmjKx1Z0VTiKcQ0%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;442&quot; height=&quot;607&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;607&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f3b26c0e-6309-4a27-b8b3-c3fe2d4c0427&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f3b26c0e-6309-4a27-b8b3-c3fe2d4c0427&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f3b26c0e-6309-4a27-b8b3-c3fe2d4c0427&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e40ddf0d-4011-4910-9cc4-1ffda7e09b3c&quot;&gt;
&lt;p id=&quot;SE-bd9d3fef-5b35-41bd-8c92-02bf22121611&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;크롬에서 실행하면 다음과 같이 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0742d289-997c-4788-9a60-56f356615966&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이걸로 브라우저가 어떤 기반으로 만들어졌는지 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e2b41a06-c334-40d6-b066-8cf7b36c86c6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-bdaf2a2d-b7f8-4100-9e9d-98a970ffe076&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;location&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-c5f702f4-fb5f-4a79-b577-67a1721ec281&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;브라우저 주소표시줄 관련정보를 가진 객체&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f0e73c2f-709d-4f2a-9ca8-47354f417523&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;location.href=&quot; &quot;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;; 페이지 이동&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e064ffdb-61de-42e3-89eb-4ca10ba656bb&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;location.reload()&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;; 새로고침&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-aed95143-c09f-476a-8613-45f8125d95cb&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-aed95143-c09f-476a-8613-45f8125d95cb&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-aed95143-c09f-476a-8613-45f8125d95cb&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test2 = () =&amp;gt; {
    console.log(location);
    const {href, protocol, hostname, port, origin, pathname, search, hash} = location;
    console.log(href, protocol, hostname, port, origin, pathname, search, hash);
    // http://192.168.10.6:5500/03_javascript/17_BOM.html?type=abc&amp;amp;query=%EC%95%88%EB%85%95#qwerty 
    // http: 
    // 192.168.10.6 
    // 5500 
    // http://192.168.10.6:5500 
    // /03_javascript/17_BOM.html 
    // ?type=abc&amp;amp;query=%EC%95%88%EB%85%95 
    // #qwerty
  };


    //페이지이동
    const test3=()=&amp;gt; location.href=&quot;https://naver.com&quot;;
    //새로고침
    const test4=()=&amp;gt; location.reload();&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-89137ba3-99e7-4435-9e9e-8954f6242c0f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-89137ba3-99e7-4435-9e9e-8954f6242c0f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-89137ba3-99e7-4435-9e9e-8954f6242c0f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2a867920-bdd0-4b18-a7e2-3fb2600235b0&quot;&gt;
&lt;p id=&quot;SE-726f32d5-bcb1-435d-b8c7-328d43c15e5f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test2 실행시, 주석과 같은 정보들이 나타나고&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b2315041-3088-42b6-bfc6-45aee2cc4b32&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test3 실행시 네이버로 페이지가 이동된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8cc6fdcb-440e-44f9-835a-38d6cf003ce9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test4 실행시 새로고침이 진행된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3e74dc2e-923a-4756-819a-9dee96e466db&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-71aa447d-27f8-47de-8653-43e2595260f9&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;history&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-5456b383-0c90-46c5-a736-7c24e10a7153&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;브라우져 방문기록 관리 객체&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-aec3efca-a0f7-47eb-ba0a-e6f1c7c4b439&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;history.forward();&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 앞으로가기&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-114dc936-d273-4c28-b0fe-e2da4a3d27f3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;history.back();&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 뒤로가기&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8ce90a22-9ce2-44e7-b8f6-121017787941&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;go(n)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 양수) 제공된 숫자만큼 앞으로가기 / 0) 새로고침 / 음수) 제공된 숫자만큼 뒤로가기&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b90994d4-c610-452c-8b7d-fcc4b1de2d94&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b90994d4-c610-452c-8b7d-fcc4b1de2d94&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b90994d4-c610-452c-8b7d-fcc4b1de2d94&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    const test5=()=&amp;gt;{
        console.log(history);
    };
    const test6=()=&amp;gt;history.forward();
    const test7=()=&amp;gt;history.back();&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cb425534-fa1a-457c-b638-2633d3217ae8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-cb425534-fa1a-457c-b638-2633d3217ae8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-cb425534-fa1a-457c-b638-2633d3217ae8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-cb425534-fa1a-457c-b638-2633d3217ae8&quot;&gt;
&lt;div data-unitid=&quot;SE-cb425534-fa1a-457c-b638-2633d3217ae8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;91&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddRrJl/btr8uUZrOol/1473vdVTmHtXVESKo53imk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddRrJl/btr8uUZrOol/1473vdVTmHtXVESKo53imk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddRrJl/btr8uUZrOol/1473vdVTmHtXVESKo53imk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddRrJl%2Fbtr8uUZrOol%2F1473vdVTmHtXVESKo53imk%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;175&quot; height=&quot;91&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;91&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-47ca39ce-c4fa-40be-b12f-406da24dce8e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-47ca39ce-c4fa-40be-b12f-406da24dce8e&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-47ca39ce-c4fa-40be-b12f-406da24dce8e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-47ca39ce-c4fa-40be-b12f-406da24dce8e&quot;&gt;
&lt;div data-unitid=&quot;SE-47ca39ce-c4fa-40be-b12f-406da24dce8e&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;172&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uNXt6/btr8wSs1yNM/dkti0QsYjnGrtVKdAb7Eq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uNXt6/btr8wSs1yNM/dkti0QsYjnGrtVKdAb7Eq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uNXt6/btr8wSs1yNM/dkti0QsYjnGrtVKdAb7Eq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuNXt6%2Fbtr8wSs1yNM%2Fdkti0QsYjnGrtVKdAb7Eq0%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;172&quot; height=&quot;70&quot; data-origin-width=&quot;172&quot; data-origin-height=&quot;70&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a30055db-ce6d-4edf-bc7e-b872d3b3231f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a30055db-ce6d-4edf-bc7e-b872d3b3231f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a30055db-ce6d-4edf-bc7e-b872d3b3231f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a30055db-ce6d-4edf-bc7e-b872d3b3231f&quot;&gt;
&lt;div data-unitid=&quot;SE-a30055db-ce6d-4edf-bc7e-b872d3b3231f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;53&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zsJty/btr8u9PyUjk/IYpsQXrKOk1V1vZhoneUF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zsJty/btr8u9PyUjk/IYpsQXrKOk1V1vZhoneUF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zsJty/btr8u9PyUjk/IYpsQXrKOk1V1vZhoneUF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzsJty%2Fbtr8u9PyUjk%2FIYpsQXrKOk1V1vZhoneUF1%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;444&quot; height=&quot;53&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;53&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-97134f99-690c-42a7-818f-a3b9a3fadc3f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-97134f99-690c-42a7-818f-a3b9a3fadc3f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-97134f99-690c-42a7-818f-a3b9a3fadc3f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-93140849-fdf1-43ee-acc5-bb27c4ff06b6&quot;&gt;
&lt;p id=&quot;SE-0cd8d88f-08be-4292-88c5-ce475d156a69&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test5실행시 length:3을 볼 수 있는데, 현재페이지, 이전페이지, 이후 페이지 합쳐서 3개라는 것을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b6e5c582-13f0-44b3-8020-4d353b7a1286&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test6, 7 실행시 뒤로 갔을때와 앞으로 갔을 때의 length를 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-01733d57-111a-403b-9ebd-af856d1ee09c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-01733d57-111a-403b-9ebd-af856d1ee09c&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-01733d57-111a-403b-9ebd-af856d1ee09c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;     const test8 = () =&amp;gt; {
    const n = prompt(&quot;이동한 페이지에 대해 정수로 입력하세요.&quot;)
    history.go(n);
  }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-40ce3222-9d55-461b-85a4-89ef5c4698e8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-40ce3222-9d55-461b-85a4-89ef5c4698e8&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-40ce3222-9d55-461b-85a4-89ef5c4698e8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-47d3227e-f0f8-48cf-ab27-5e10e5f65093&quot;&gt;
&lt;p id=&quot;SE-ba7e9c7c-2ff4-4cca-8db7-37857e524d06&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 역시 n에 대한 값을 입력하면 이동하는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-4e42e37a-0de7-44b0-a24b-d8207f3b2579&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0 : 새로고침&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-21493170-5128-4be7-9a08-1f684c9c8293&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;양수 : 앞으로가기&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-81e32d38-8c92-4c3a-9ec5-a51798612c17&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;음수 : 뒤로가기&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-80bad323-39d6-4f0e-afc8-053b0bfd7b8b&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-138a8216-1497-40e0-ac14-75da3c6499e8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-22d847a0-ebf5-41bc-ac64-ad201a088ae8&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;screen&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-c8a2dee3-ba1e-46ab-9c23-68b53660c572&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;os에 연결된 모니터(hardware)관련 정보를 가진 객체&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-84cbe7ea-73cb-49c0-bf12-ba88b6e48e25&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-84cbe7ea-73cb-49c0-bf12-ba88b6e48e25&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-84cbe7ea-73cb-49c0-bf12-ba88b6e48e25&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;    &amp;lt;button onclick=&quot;test9();&quot;&amp;gt;screen&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7f838996-3b76-4cc1-b50b-1be3a4273e73&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7f838996-3b76-4cc1-b50b-1be3a4273e73&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7f838996-3b76-4cc1-b50b-1be3a4273e73&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;     const test9=()=&amp;gt;{
        console.log(screen);
        const {width,height,availWidth,availHeight,availLeft,availTop}=screen;
        console.log(width,height,availWidth,availHeight,availLeft,availTop);
        //1440
        //900
        //1440
        //860
        //-1440
        //0

        //300px=300px 팝업창을 화면 정가운데 위치시키기
        const left=availLeft+(width-300)/2;
        const top=availTop+(height-300)/2;
        open(&quot;&quot;,&quot;popup&quot;,`width=${width}px, height=${height}px, left=${left}px, top=${top}px`);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c2a2f96a-7445-4d16-973b-e06b51f629c8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c2a2f96a-7445-4d16-973b-e06b51f629c8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c2a2f96a-7445-4d16-973b-e06b51f629c8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c2a2f96a-7445-4d16-973b-e06b51f629c8&quot;&gt;
&lt;div data-unitid=&quot;SE-c2a2f96a-7445-4d16-973b-e06b51f629c8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZPyG/btr8nc7tPFs/zHQeaRrKNsJKAP6WIKbSw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZPyG/btr8nc7tPFs/zHQeaRrKNsJKAP6WIKbSw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZPyG/btr8nc7tPFs/zHQeaRrKNsJKAP6WIKbSw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZPyG%2Fbtr8nc7tPFs%2FzHQeaRrKNsJKAP6WIKbSw0%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;442&quot; height=&quot;229&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;229&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a35864d9-68b8-45c2-b92e-163a16ac2b28&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a35864d9-68b8-45c2-b92e-163a16ac2b28&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a35864d9-68b8-45c2-b92e-163a16ac2b28&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2b1278d8-9e9b-42a9-88c8-034bd014de4f&quot;&gt;
&lt;p id=&quot;SE-f83d4699-b353-4fe9-ab94-3d2ec3d2db9b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 정보가 뜬다. 이를 참고해서 popup을 만들면,&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-253e951d-5fd6-4693-a6be-a211c654cce3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;open으로 모니터크기와 똑같은 popup이 뜨게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-03a88405-9d8b-45ac-b9ee-431c7d305f63&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-379f9b95-a691-405a-a052-5f0c830f1e7e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-fbbe6006-bcac-42fc-92f1-67367f236963&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DOM (Document Object Model)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-d559097b-d649-44d8-aeb3-c763c63d936a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;document (html로 부터 변환된 객체)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-179c2a56-4a1c-4fcc-865b-362bb9971861&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;window.document&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d5b00bca-83f3-4632-9c43-72e87454eb49&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;브라우져가 html문서를 해석해서&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;document객체 하위에 계층구조로써 html태그객체를 관리&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-84fe986f-41d7-4b2c-8957-b3c294522816&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;document.getElementByXXX, document.querySelectorXXX 메소드는 모두 DOM에서 검색하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7e5dee92-b313-4bd1-994a-6b317c16fd86&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Node.prototype, Element.prototype등을 상속하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2c4e1342-272f-417d-9d1e-ece7b40e07d6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-756031cb-41ec-4110-a2be-aa7f18e4256a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-c0982ddd-2a8f-42e1-81ef-32f808a152d2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Node계열&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-709d3ee9-9438-467b-8e55-708f17bf79fc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- TextNode&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2fdcc617-1280-4b7d-bf61-6716949c387c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- CommentNode&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fde496dc-3740-411e-9745-69039bc2d8b3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Element계열&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ce555b58-2c11-41e2-b199-e9845393f633&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 모든 Tag(Element) 객체&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fab6ba51-fad1-4007-8597-73062c4da76e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fab6ba51-fad1-4007-8597-73062c4da76e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fab6ba51-fad1-4007-8597-73062c4da76e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;div id=&quot;sample&quot;&amp;gt;
        &amp;lt;span&amp;gt;Hello&amp;lt;/span&amp;gt;
        &amp;lt;!--Hello는 한국어로 안녕입니다. --&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;test1();&quot;&amp;gt;#sample&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test2();&quot;&amp;gt;Element-textNode&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test3();&quot;&amp;gt;Element&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ab28df0f-cf7e-4e15-9d7b-ee4694b4a8a6&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ab28df0f-cf7e-4e15-9d7b-ee4694b4a8a6&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ab28df0f-cf7e-4e15-9d7b-ee4694b4a8a6&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test1 = () =&amp;gt;{
        console.log(sample);
        console.dir(sample);
    };

    const test2=()=&amp;gt; {
        const h2=document.createElement(&quot;h2&quot;);
        const content = document.createTextNode(&quot;안녕하세요&quot;);
        h2.appendChild(content);//각자 만든 후 합친것 . 이 줄 선언전까지는 합쳐지지 않음.
        document.body.appendChild(h2); //body의 자식요소로 맨 마지막 DOM에 추가
        //이벤트핸들러를 바로 등록 가능.
        h2.click=()=&amp;gt;{alert(&quot;ㅋㅋㅋㅋ&quot;)};

        document.body.innerHTML+=&quot;&amp;lt;h2&amp;gt;안녕하세요&amp;lt;/h2&amp;gt;&quot;;
    };

    const test3=()=&amp;gt;{
        const img=document.createElement(&quot;img&quot;);
        img.src=&quot;../sample/image/hyunta.jpg&quot;;
        img.style='width:300px; margin:10px; border-radius:50%;';
        document.body.append(img);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5191970c-b894-4639-8568-815753fa0c45&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5191970c-b894-4639-8568-815753fa0c45&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5191970c-b894-4639-8568-815753fa0c45&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5191970c-b894-4639-8568-815753fa0c45&quot;&gt;
&lt;div data-unitid=&quot;SE-5191970c-b894-4639-8568-815753fa0c45&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AyhG4/btr8wS7CRv4/DpL2vb0VMyBFjdR7ukPXW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AyhG4/btr8wS7CRv4/DpL2vb0VMyBFjdR7ukPXW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AyhG4/btr8wS7CRv4/DpL2vb0VMyBFjdR7ukPXW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAyhG4%2Fbtr8wS7CRv4%2FDpL2vb0VMyBFjdR7ukPXW1%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;238&quot; height=&quot;42&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f78a7e0a-f0e4-472a-a77f-c63fec7aa2bd&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f78a7e0a-f0e4-472a-a77f-c63fec7aa2bd&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f78a7e0a-f0e4-472a-a77f-c63fec7aa2bd&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f78a7e0a-f0e4-472a-a77f-c63fec7aa2bd&quot;&gt;
&lt;div data-unitid=&quot;SE-f78a7e0a-f0e4-472a-a77f-c63fec7aa2bd&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blG2NF/btr8zodVM2L/Oez6PAc65v4Fl5KOpGKG2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blG2NF/btr8zodVM2L/Oez6PAc65v4Fl5KOpGKG2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blG2NF/btr8zodVM2L/Oez6PAc65v4Fl5KOpGKG2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblG2NF%2Fbtr8zodVM2L%2FOez6PAc65v4Fl5KOpGKG2K%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;426&quot; height=&quot;556&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bcb70267-8a36-4172-9ee2-63782ed679f5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bcb70267-8a36-4172-9ee2-63782ed679f5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bcb70267-8a36-4172-9ee2-63782ed679f5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-69429f3e-8bb4-435f-842b-f0471744c332&quot;&gt;
&lt;p id=&quot;SE-25cf1901-fb61-4865-a7f4-3d6dbdac5b53&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test1의 경우 sample에 대한 코드, sample에 대한 구성요소가 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c68e89f0-d2fe-4e8c-b1bc-46bda588b6b8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c68e89f0-d2fe-4e8c-b1bc-46bda588b6b8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c68e89f0-d2fe-4e8c-b1bc-46bda588b6b8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c68e89f0-d2fe-4e8c-b1bc-46bda588b6b8&quot;&gt;
&lt;div data-unitid=&quot;SE-c68e89f0-d2fe-4e8c-b1bc-46bda588b6b8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;114&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5sjcw/btr8wPbZANi/k4PFPUQUZ1GLbpZwnoT4g1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5sjcw/btr8wPbZANi/k4PFPUQUZ1GLbpZwnoT4g1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5sjcw/btr8wPbZANi/k4PFPUQUZ1GLbpZwnoT4g1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5sjcw%2Fbtr8wPbZANi%2Fk4PFPUQUZ1GLbpZwnoT4g1%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;114&quot; height=&quot;82&quot; data-origin-width=&quot;114&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bee2abee-21f2-445c-9868-504746ff1492&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bee2abee-21f2-445c-9868-504746ff1492&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bee2abee-21f2-445c-9868-504746ff1492&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-39d22aef-cda3-4aea-b830-f9918eed032c&quot;&gt;
&lt;p id=&quot;SE-ee036632-eead-43cf-a92a-5257d9b77658&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test2의 경우, textNode로 &quot;안녕하세요&quot;와 createElement로 h2를 만들고, 이를 합친다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-742d8f7e-7847-4738-bf5a-0e5a4155d67a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출력시 위와 같이 나오게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5400b513-fcb9-460a-9ce6-1b1d76dd75c5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5400b513-fcb9-460a-9ce6-1b1d76dd75c5&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5400b513-fcb9-460a-9ce6-1b1d76dd75c5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5400b513-fcb9-460a-9ce6-1b1d76dd75c5&quot;&gt;
&lt;div data-unitid=&quot;SE-5400b513-fcb9-460a-9ce6-1b1d76dd75c5&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vazGN/btr8wQBYADx/PlxK6tvKUqHJdnz1WAGNtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vazGN/btr8wQBYADx/PlxK6tvKUqHJdnz1WAGNtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vazGN/btr8wQBYADx/PlxK6tvKUqHJdnz1WAGNtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvazGN%2Fbtr8wQBYADx%2FPlxK6tvKUqHJdnz1WAGNtK%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;274&quot; height=&quot;277&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0c8de66e-1176-41a1-b9f3-0e07e2eb982a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0c8de66e-1176-41a1-b9f3-0e07e2eb982a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0c8de66e-1176-41a1-b9f3-0e07e2eb982a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-91bbd648-4252-4f36-bfff-4d103f7e5d92&quot;&gt;
&lt;p id=&quot;SE-d4ca3a0c-b700-4827-b795-43faca9c34c0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test3의 경우, textNode없이 img element를 생성했다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c742198f-0cae-4427-9243-b4be35763f78&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-64948558-df20-4120-a2ee-23362d17831a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8a9c4aed-b2e9-4cec-ac69-bfd70c11530d&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-17e2244e-bc65-4457-91d6-ad2374d9dc32&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-d26b5370-436f-454d-b2d9-f7fad5f82f1b&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;요소제거&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-2df7453c-7c61-424a-b084-f97996992683&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자식속성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c9144899-7a93-424e-a62f-46dd295b4eff&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;- Node속성 : firstChild | lastChild | childNodes&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-633de65e-8db3-4997-ae74-33c1410296b2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #36851e;&quot;&gt;- Element속성 : firstElementChild | lastElementChild | children&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2f4fb788-d327-49fd-a7ec-3aa9ce757888&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;형제속성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-468a9ebd-4d4f-4172-ad1d-f4905d2e3f92&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;- Node속성 : nextSibling | previousSibling&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3cd38fce-665d-4953-8ce3-c37c6cb39fd2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #36851e;&quot;&gt;- Element속성 : nextElementSibling | previousElementSibling&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f5c46571-e704-4e59-ae39-4b5aba57e553&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;부모요소&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8fec8593-356c-4e48-a258-1662956e6f03&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0078cb;&quot;&gt;- Node속성 : parentNode&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-258414ee-25a1-4f4c-9bc1-63a4cca00174&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #36851e;&quot;&gt;- Element : parentElement&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a714baea-30ac-4c13-bf24-6c37b23d1c60&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-9b9192f4-e1f0-49dc-a447-90ee5890683f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-1d001fe0-d89f-4d41-9e41-1e09f2b60444&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자식요소&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c27d5b6c-27d4-4699-b38c-fe0b53e17266&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c27d5b6c-27d4-4699-b38c-fe0b53e17266&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c27d5b6c-27d4-4699-b38c-fe0b53e17266&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;    &amp;lt;button onclick=&quot;test4();&quot;&amp;gt;자식요소제거&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test5();&quot;&amp;gt;요소제거&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test6();&quot;&amp;gt;형제요소&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test7();&quot;&amp;gt;부모요소&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;test8();&quot;&amp;gt;@실습문제 - textNode변경하기&amp;lt;/button&amp;gt;


    &amp;lt;div id=&quot;foo&quot;&amp;gt;
        &amp;lt;p id=&quot;p1&quot;&amp;gt;안녕1&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p2&quot;&amp;gt;안녕2&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p3&quot;&amp;gt;안녕3&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p4&quot;&amp;gt;안녕4&amp;lt;/p&amp;gt;
        &amp;lt;p id=&quot;p5&quot;&amp;gt;안녕5&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3cc84ae5-ded6-4b2c-82f4-02f188506903&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3cc84ae5-ded6-4b2c-82f4-02f188506903&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3cc84ae5-ded6-4b2c-82f4-02f188506903&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test4=()=&amp;gt;{
        console.dir(foo);
        console.log(foo.firstChild);
        console.log(foo.firstElementChild);
        console.log(foo.lastChild);
        console.log(foo.lastElementChild);
        console.log(foo.childNodes);//[text, p, text, p, text, p, text, p, text, p, text]
        console.log(foo.children);//[p, p, p, p, p]

        // foo.removeChild(foo.firstChild);//textNode제거
        console.log(foo.removeChild(foo.firstElementChild)); //p제거후 반환

        //모든 자식요소 제거
        while(foo.firstChild){
            foo.removeChild(foo.firstChild);
        }
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-364badfb-50aa-4418-880f-920e53d26c7c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-364badfb-50aa-4418-880f-920e53d26c7c&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-364badfb-50aa-4418-880f-920e53d26c7c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-364badfb-50aa-4418-880f-920e53d26c7c&quot;&gt;
&lt;div data-unitid=&quot;SE-364badfb-50aa-4418-880f-920e53d26c7c&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;207&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHKwb/btr8u24jbFa/LiMkrQX5EA0wWVQNd4L4Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHKwb/btr8u24jbFa/LiMkrQX5EA0wWVQNd4L4Ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHKwb/btr8u24jbFa/LiMkrQX5EA0wWVQNd4L4Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHKwb%2Fbtr8u24jbFa%2FLiMkrQX5EA0wWVQNd4L4Ak%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;207&quot; height=&quot;151&quot; data-origin-width=&quot;207&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d64ba58b-b638-49c5-89b1-7e8bd45a723a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d64ba58b-b638-49c5-89b1-7e8bd45a723a&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d64ba58b-b638-49c5-89b1-7e8bd45a723a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f11e59e4-5232-439d-bd17-66af9d99c3e6&quot;&gt;
&lt;p id=&quot;SE-567f995e-ff64-446f-a3b8-376777c29773&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test4클릭시 자식요소가 제거되므로, 안녕1,2,3,4,5 가 모두 삭제된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2209d038-c221-4cb4-a49f-236a900dd213&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2209d038-c221-4cb4-a49f-236a900dd213&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2209d038-c221-4cb4-a49f-236a900dd213&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2209d038-c221-4cb4-a49f-236a900dd213&quot;&gt;
&lt;div data-unitid=&quot;SE-2209d038-c221-4cb4-a49f-236a900dd213&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beATNF/btr8tuUxA9T/Axg0CSojWXbKGUPbpG0zA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beATNF/btr8tuUxA9T/Axg0CSojWXbKGUPbpG0zA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beATNF/btr8tuUxA9T/Axg0CSojWXbKGUPbpG0zA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeATNF%2Fbtr8tuUxA9T%2FAxg0CSojWXbKGUPbpG0zA1%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;442&quot; height=&quot;211&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-c2940974-1fc3-410d-949b-c7104516685b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c2940974-1fc3-410d-949b-c7104516685b&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c2940974-1fc3-410d-949b-c7104516685b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c2940974-1fc3-410d-949b-c7104516685b&quot;&gt;
&lt;div data-unitid=&quot;SE-c2940974-1fc3-410d-949b-c7104516685b&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;23&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IjlP7/btr8utgM2jf/KC2hXWeuu8QgYu14DSkGN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IjlP7/btr8utgM2jf/KC2hXWeuu8QgYu14DSkGN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IjlP7/btr8utgM2jf/KC2hXWeuu8QgYu14DSkGN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIjlP7%2Fbtr8utgM2jf%2FKC2hXWeuu8QgYu14DSkGN1%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;441&quot; height=&quot;23&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;23&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4a7329ff-ce90-4108-9512-f33cc1da4789&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4a7329ff-ce90-4108-9512-f33cc1da4789&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4a7329ff-ce90-4108-9512-f33cc1da4789&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bebea23d-8944-4666-a524-8076483b954e&quot;&gt;
&lt;p id=&quot;SE-a94047ea-5f4a-420c-892c-f0b99b57b6d9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo =&amp;gt; 함수 출력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d4331c08-599e-4a55-928e-7b2e96b26670&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo.firstChild =&amp;gt; foo의 첫번째 요소 #text 출력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9b1a93c8-5376-4c39-9b4b-db1be09f71cc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo.firstElementChild =&amp;gt;foo의 첫번째 요소 내용 &amp;lt;p id=&quot;p1&quot;&amp;gt;안녕1&amp;lt;/p&amp;gt; 출력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-36e51391-1f9f-4815-b6ab-fef55816ddc4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo.lastChild =&amp;gt; foo의 마지막 요소 #text 출력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e7001819-7db8-47f6-91bf-410c75d63011&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo.lastElementChild =&amp;gt;foo의 마지막 요소 내용 &amp;lt;p id=&quot;p5&quot;&amp;gt;안녕5&amp;lt;/p&amp;gt; 출력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ffdc57bc-9a2e-4c05-baa6-24cf94d5585d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo.ChildNodes =&amp;gt; text, p#p1, text, p#p2 ... 출력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f366745d-667d-4cba-9360-9bfb73b7acb3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo.children =&amp;gt; 자식요소의 p태그와, 요소별로 p태그 값이 출력&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f0b5387d-b1da-46ff-8a39-93657a5a4c96&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;foo.removeChild(foo.firstElementChild) =&amp;gt; 첫번째요소 제거 후 값 반환&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-39da3faa-9840-4f2f-aed6-b8b4c2e8af50&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-1ebf4e8a-8155-44e3-a302-3a59eda5110b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-1ebf4e8a-8155-44e3-a302-3a59eda5110b&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-1ebf4e8a-8155-44e3-a302-3a59eda5110b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;    const test5=()=&amp;gt;foo.remove();
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-958c0ef5-5cec-47d8-9d90-70a42ceabf68&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-958c0ef5-5cec-47d8-9d90-70a42ceabf68&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-958c0ef5-5cec-47d8-9d90-70a42ceabf68&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4ab2ff1a-715c-46fe-96ae-4a3cc6837c11&quot;&gt;
&lt;p id=&quot;SE-c74acdb5-ecdc-4d4a-9b0a-cf4116cbd06a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;태그 자신이 직접 제거된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d2a0751b-58f0-46b0-b60c-36c7f52e96ae&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-33595fea-b86d-4bda-b77f-80e6e3a6efd1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-f30dccdc-1d28-452f-9748-67769d8bf930&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-784f21d1-e394-4d8b-b750-ed2bbc571d8f&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;형제속성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4a595435-a51e-46fe-b23d-430a354262a3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-4a595435-a51e-46fe-b23d-430a354262a3&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-4a595435-a51e-46fe-b23d-430a354262a3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;    const test6=()=&amp;gt;{
        console.log(foo.childNodes);
        // const node = p3.nextSibling.nextSibling;//textNode-p#p4
        // const node=p3.previousSibling.nextSibling;//textNode-p#p2
        // const node = p3.nextElementSibling; // p#p4
        const node = p3.previousElementSibling;//p#p2
        console.log(node);
        node.style.color='red';//textNode에는 style속성이 없다.
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-91b63e1f-cc08-4e76-b9c5-e430b07336d8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-91b63e1f-cc08-4e76-b9c5-e430b07336d8&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-91b63e1f-cc08-4e76-b9c5-e430b07336d8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-91b63e1f-cc08-4e76-b9c5-e430b07336d8&quot;&gt;
&lt;div data-unitid=&quot;SE-91b63e1f-cc08-4e76-b9c5-e430b07336d8&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;156&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuW27w/btr8tCENZqx/PPkVNLGEmgCu2tjuEWxMbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuW27w/btr8tCENZqx/PPkVNLGEmgCu2tjuEWxMbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuW27w/btr8tCENZqx/PPkVNLGEmgCu2tjuEWxMbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuW27w%2Fbtr8tCENZqx%2FPPkVNLGEmgCu2tjuEWxMbk%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;156&quot; height=&quot;154&quot; data-origin-width=&quot;156&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-fa011d80-a45c-4397-b6ab-4437f9033dc1&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-fa011d80-a45c-4397-b6ab-4437f9033dc1&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-fa011d80-a45c-4397-b6ab-4437f9033dc1&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-6605c5a2-2122-4243-9bd5-fccfe8185ad8&quot;&gt;
&lt;p id=&quot;SE-244553da-a2c5-47b7-9795-2a565507b1fe&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;p3태그의 previousElement인 p2태그만 빨간색으로 변하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6deb3bdc-30f5-42fe-a8a6-ab80efb15532&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-120a1ea8-7936-4524-8b1c-94f667ad4398&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-cf9d8fd8-8ac9-411c-8e7d-0deb6e5c6abd&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;부모속성&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8abb580d-6223-4e39-9120-722a77baff8e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8abb580d-6223-4e39-9120-722a77baff8e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8abb580d-6223-4e39-9120-722a77baff8e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;    const test7=()=&amp;gt;{
        const node =p3.parentNode;
        // const node=p3.parentElement;
        node.style.color=&quot;blue&quot;;
        console.log(node);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ec67d2f0-d43f-426d-9642-e01d5f5c5f96&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ec67d2f0-d43f-426d-9642-e01d5f5c5f96&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ec67d2f0-d43f-426d-9642-e01d5f5c5f96&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ec67d2f0-d43f-426d-9642-e01d5f5c5f96&quot;&gt;
&lt;div data-unitid=&quot;SE-ec67d2f0-d43f-426d-9642-e01d5f5c5f96&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blNhGB/btr8w8o8Nbr/ywgVGeV343rIxWYccPGc9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blNhGB/btr8w8o8Nbr/ywgVGeV343rIxWYccPGc9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blNhGB/btr8w8o8Nbr/ywgVGeV343rIxWYccPGc9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblNhGB%2Fbtr8w8o8Nbr%2FywgVGeV343rIxWYccPGc9k%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;192&quot; height=&quot;150&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e83261ca-5285-4f90-b22b-56824315aa10&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e83261ca-5285-4f90-b22b-56824315aa10&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e83261ca-5285-4f90-b22b-56824315aa10&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3cb0d7f2-d317-42c5-9ba7-86033144670e&quot;&gt;
&lt;p id=&quot;SE-c0287558-8f64-402e-9828-d83ee38d5a67&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;p3태그의 부모요소 (p태그 전체)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 파란색으로 변하였다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-93f3a3ac-3270-4374-ae55-cfc59cada3e9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-93f3a3ac-3270-4374-ae55-cfc59cada3e9&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-93f3a3ac-3270-4374-ae55-cfc59cada3e9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-93f3a3ac-3270-4374-ae55-cfc59cada3e9&quot;&gt;
&lt;div data-unitid=&quot;SE-93f3a3ac-3270-4374-ae55-cfc59cada3e9&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;182&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQrba7/btr8vOYKLG3/0LmyfkYKqCL6aXyDhld7pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQrba7/btr8vOYKLG3/0LmyfkYKqCL6aXyDhld7pK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQrba7/btr8vOYKLG3/0LmyfkYKqCL6aXyDhld7pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQrba7%2Fbtr8vOYKLG3%2F0LmyfkYKqCL6aXyDhld7pK%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;182&quot; height=&quot;151&quot; data-origin-width=&quot;182&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f0fd878f-7abe-4054-ad32-3a89fd69bacc&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f0fd878f-7abe-4054-ad32-3a89fd69bacc&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f0fd878f-7abe-4054-ad32-3a89fd69bacc&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-585a0206-e2f3-4780-b4d6-a3443eb97971&quot;&gt;
&lt;p id=&quot;SE-b703b165-f98c-43b5-8175-958bd04b5d7a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부모요소(test7)클릭 후, 자식요소( test6) 클릭시 (혹은 순서 반대) 위와 같이 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-8ed5f5fd-3f4c-46aa-ae2f-05559beb3eb7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부모요소와 자식요소설정은 동시에 적용될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d3f5b996-e45d-4480-a635-8c837f0d44ec&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-df55e17e-302c-41a0-9bab-b64b994de617&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8ba58c32-f1e6-47b4-93e0-6bf4cc9a1556&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;@실습문제 - textNode변경하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-0006b49f-ac60-4009-ba31-6a0963f19c2b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- #p2 컬러 pink&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-32cd730a-7eba-4168-90e0-1f22c669fe6e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- #p5 컬러 tomato&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6f185625-72f8-4757-90dd-3516de55d626&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 부모요소를 찾아 background-color를 지정&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a1c22a8d-afd9-40cb-95f8-4a9145852031&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 자식요소의 textNode를 hello1,Hello2, ... 로 변경하기&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8f422cf1-4fbc-43c2-a250-d5ea85af1b17&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-8f422cf1-4fbc-43c2-a250-d5ea85af1b17&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-8f422cf1-4fbc-43c2-a250-d5ea85af1b17&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test8=()=&amp;gt;{
        p3.previousElementSibling.style.color=&quot;hotpink&quot;;
        p3.nextElementSibling.nextElementSibling.style.color=&quot;tomato&quot;;
        p3.parentElement.style.backgroundColor=&quot;beige&quot;;
        console.log(p3.parentElement.children);//유사배열
        [...p3.parentElement.children].forEach((p,index)=&amp;gt;{
            const content = document.createTextNode('Hello'+(index+1));
            // p.removeChild(p.firstChild); //기존 textNode제거
            // p.appendChild(content);//새로추가
            p.replaceChild(content,p.firstChild);//newNode,oldNode순으로 전달
        
        })
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e05213e4-d735-492e-b903-b325fd5359d0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e05213e4-d735-492e-b903-b325fd5359d0&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e05213e4-d735-492e-b903-b325fd5359d0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-e05213e4-d735-492e-b903-b325fd5359d0&quot;&gt;
&lt;div data-unitid=&quot;SE-e05213e4-d735-492e-b903-b325fd5359d0&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beUtnC/btr8wPiMbvQ/8l4ce718jMh2OI37KbGB5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beUtnC/btr8wPiMbvQ/8l4ce718jMh2OI37KbGB5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beUtnC/btr8wPiMbvQ/8l4ce718jMh2OI37KbGB5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeUtnC%2Fbtr8wPiMbvQ%2F8l4ce718jMh2OI37KbGB5k%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;248&quot; height=&quot;140&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6a75c21d-4bfb-4fa0-a8a6-cf575adc1de5&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6a75c21d-4bfb-4fa0-a8a6-cf575adc1de5&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6a75c21d-4bfb-4fa0-a8a6-cf575adc1de5&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-949d19e2-f31f-4bba-a9d5-7b182bfd30bf&quot;&gt;
&lt;p id=&quot;SE-7f660f96-b2bc-43af-855c-629ad7684ff4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;값이 제대로 전달된 것을 확인할 수 있다. p5는 nextElementSibling을 두번 써서 진행했다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-484e639a-b4da-462f-a352-45742c18ae2e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;값을 Hello1,2,3,4,5로 바꾸는 것은 약간 어려웠는데, forEach를 이용해서 p값과 index값을 정해 반복으로 진행했다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3fa3ae7d-141d-408f-a0d0-539a7d9ed54d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;replaceChild는 대체한다는 뜻이고 newNode / oldNode 순으로 전달한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-73219ed3-e9c6-45bb-8fa3-dca58ded8d03&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-cfb6c035-ff92-4f6b-8df2-2a331e434d8a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-dda03df7-1754-485c-8e7f-86ed9a92ca8c&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;parent.insertBefore(newNode, refNode)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-417436d1-5787-4136-a1f9-0186f201c2ac&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-417436d1-5787-4136-a1f9-0186f201c2ac&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-417436d1-5787-4136-a1f9-0186f201c2ac&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test9=()=&amp;gt;{
        const mark=document.createElement(&quot;mark&quot;);
        mark.append(document.createTextNode(&quot;금요일이다!&quot;)); //mark.innerText=&quot;금요일이다~&quot;;

        // foo.insertBefore(mark,p3);
        p3.insertAdjacentElement('beforebegin',mark);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0a23b1ed-c73b-4767-a0b4-a74e7efe4034&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0a23b1ed-c73b-4767-a0b4-a74e7efe4034&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0a23b1ed-c73b-4767-a0b4-a74e7efe4034&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0a23b1ed-c73b-4767-a0b4-a74e7efe4034&quot;&gt;
&lt;div data-unitid=&quot;SE-0a23b1ed-c73b-4767-a0b4-a74e7efe4034&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;231&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MnHTV/btr8u8XrhSr/abOOEzBKOiPpyXR1wpKYkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MnHTV/btr8u8XrhSr/abOOEzBKOiPpyXR1wpKYkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MnHTV/btr8u8XrhSr/abOOEzBKOiPpyXR1wpKYkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMnHTV%2Fbtr8u8XrhSr%2FabOOEzBKOiPpyXR1wpKYkK%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;231&quot; height=&quot;198&quot; data-origin-width=&quot;231&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-79c16fa0-c33f-4386-9053-2ca3d48d6de3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-79c16fa0-c33f-4386-9053-2ca3d48d6de3&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-79c16fa0-c33f-4386-9053-2ca3d48d6de3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-90d76d82-10ef-46b9-9825-79d58861a351&quot;&gt;
&lt;p id=&quot;SE-d1eac350-08ec-43ae-b52f-2b70c0377d56&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-cba1bd40-6aae-4713-a30b-78a76f938a49&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;target.insertAdjacentHTML (position, html);&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;beforebegin&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시작태그전(형제요소)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;afterbegin&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시작태그직후(자식요소)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;beforeend&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;종료태그직전(자식요소)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;afterend&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;종료태그후 (형제요소)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9cbf23cc-0931-465e-b7c6-db722feb814f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-9cbf23cc-0931-465e-b7c6-db722feb814f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-9cbf23cc-0931-465e-b7c6-db722feb814f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-9cbf23cc-0931-465e-b7c6-db722feb814f&quot;&gt;
&lt;div data-unitid=&quot;SE-9cbf23cc-0931-465e-b7c6-db722feb814f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Woqdz/btr8BfucSwB/CBR4OfxbxKEUsP4rXYlquk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Woqdz/btr8BfucSwB/CBR4OfxbxKEUsP4rXYlquk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Woqdz/btr8BfucSwB/CBR4OfxbxKEUsP4rXYlquk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWoqdz%2Fbtr8BfucSwB%2FCBR4OfxbxKEUsP4rXYlquk%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;238&quot; height=&quot;139&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3f0f41f6-0b97-4845-97df-21423cc93761&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3f0f41f6-0b97-4845-97df-21423cc93761&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3f0f41f6-0b97-4845-97df-21423cc93761&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;    const test10=()=&amp;gt;{
        const html = &quot;&amp;lt;mark&amp;gt;HTML&amp;lt;/mark&amp;gt;&quot;;

        p3.insertAdjacentHTML('beforebegin',html);
        p3.insertAdjacentHTML('afterbegin',html);
        p3.insertAdjacentHTML('beforeend',html);
        p3.insertAdjacentHTML('afterend',html);
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ba0c03e6-4683-4acf-9af8-d54032af8594&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ba0c03e6-4683-4acf-9af8-d54032af8594&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ba0c03e6-4683-4acf-9af8-d54032af8594&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0483419b-b2c8-4f68-a1d5-a801bcd9481c&quot;&gt;
&lt;p id=&quot;SE-03ac9b1b-a498-40fb-b773-c6619893d74a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;순서대로 결과를 하나씩 보면&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-41a97fed-51b7-487d-96c8-fb8f835393aa&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-41a97fed-51b7-487d-96c8-fb8f835393aa&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-41a97fed-51b7-487d-96c8-fb8f835393aa&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-41a97fed-51b7-487d-96c8-fb8f835393aa&quot;&gt;
&lt;div data-unitid=&quot;SE-41a97fed-51b7-487d-96c8-fb8f835393aa&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lNQLQ/btr8u8pAHDE/0GXkxKkV5FImd4JFui1Wbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lNQLQ/btr8u8pAHDE/0GXkxKkV5FImd4JFui1Wbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lNQLQ/btr8u8pAHDE/0GXkxKkV5FImd4JFui1Wbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlNQLQ%2Fbtr8u8pAHDE%2F0GXkxKkV5FImd4JFui1Wbk%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;178&quot; height=&quot;173&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xrtEc/btr8usPIxxg/bcUV0TbM3WkKTkakvt15pK/img.png&quot; width=&quot;158&quot; data-origin-width=&quot;158&quot; data-origin-height=&quot;151&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7677b55c-ab52-48fd-a9b2-8f9a54b14b70&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7677b55c-ab52-48fd-a9b2-8f9a54b14b70&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7677b55c-ab52-48fd-a9b2-8f9a54b14b70&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7677b55c-ab52-48fd-a9b2-8f9a54b14b70&quot;&gt;
&lt;div data-unitid=&quot;SE-7677b55c-ab52-48fd-a9b2-8f9a54b14b70&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;168&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcZm7e/btr8u8XrhSu/WlSKK9SVs28SIHk9XWKaN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcZm7e/btr8u8XrhSu/WlSKK9SVs28SIHk9XWKaN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcZm7e/btr8u8XrhSu/WlSKK9SVs28SIHk9XWKaN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcZm7e%2Fbtr8u8XrhSu%2FWlSKK9SVs28SIHk9XWKaN0%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;168&quot; height=&quot;157&quot; data-origin-width=&quot;168&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot;&gt;
&lt;div data-unitid=&quot;SE-d661ac64-f00b-4e5b-8a5b-7a657b0084b2&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;201&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LYv0C/btr8vtm38QK/LxHu2yG4y90kDp4Y0L5fV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LYv0C/btr8vtm38QK/LxHu2yG4y90kDp4Y0L5fV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LYv0C/btr8vtm38QK/LxHu2yG4y90kDp4Y0L5fV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLYv0C%2Fbtr8vtm38QK%2FLxHu2yG4y90kDp4Y0L5fV0%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;201&quot; height=&quot;180&quot; data-origin-width=&quot;201&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-745bed93-6ffe-44b8-b3ce-307662447e8f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-745bed93-6ffe-44b8-b3ce-307662447e8f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-745bed93-6ffe-44b8-b3ce-307662447e8f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-b0cc805d-1d1e-45b9-99b6-5337b7577b82&quot;&gt;
&lt;p id=&quot;SE-7cd11de8-fce1-495b-9611-c0bda3c1f6a1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <category>BOM</category>
      <category>dom</category>
      <category>javascript</category>
      <category>JS</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/71</guid>
      <comments>https://cheerup313.tistory.com/71#entry71comment</comments>
      <pubDate>Fri, 7 Apr 2023 07:16:30 +0900</pubDate>
    </item>
    <item>
      <title>[kh정보교육원 63일차] Javascript - 객체배열 (리터럴,생성자함수,prototype,속성비교), 상속</title>
      <link>https://cheerup313.tistory.com/70</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;객체배열 - 리터럴&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;SE-a17cd78e-7d16-4cdf-8195-7c8f747b2b0e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a17cd78e-7d16-4cdf-8195-7c8f747b2b0e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a17cd78e-7d16-4cdf-8195-7c8f747b2b0e&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-eab15d43-da7e-40f1-ad8f-4e23c5be8bc8&quot;&gt;
&lt;p id=&quot;SE-c091225f-d4bf-49a6-94e3-f8b200af07d7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[{},{},{}] 이런 형태로 관리할 때 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a976ad5c-9395-437a-bf1b-ed968592a7d0&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a976ad5c-9395-437a-bf1b-ed968592a7d0&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a976ad5c-9395-437a-bf1b-ed968592a7d0&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test1=()=&amp;gt;{
        const pets=[];
        pets.push({
            name:'구리구리',
            breed: '푸들',
            weight: 3,
            age: 10,
            color:['white'],
            bark(){
                console.log(this.weight);
                return this.weight&amp;lt; 10?'왈왈':'멍멍';
            }
        })
        pets.push({
            name:'둘리',
            breed: '말티즈',
            weight: 6,
            age: 5,
            color:['white'],
            bark(){
                console.log(this.weight);
                return this.weight&amp;lt; 10?'왈왈':'멍멍';
            }
        })
        pets.push({
            name:'사랑이',
            breed: '코카스파니엘',
            weight: 13,
            age: 3,
            color:['white','brown'],
            bark(){
                console.log(this.weight);
                return this.weight&amp;lt; 10?'왈왈':'멍멍';
            }
        })
        console.log(pets);

        // 반복처리 : 둘리야 ~ 왈왈/멍멍
        pets.forEach((pet)=&amp;gt;{
            const{name,bark}=pet;
            //method를 구조분해할당하면 this를 잃어버린다. 
            console.log(`${pet.name}야~ ${bark.call(pet)}`);//this를 pet으로 binding해서 bark호출!
        });
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f860ed48-2057-448d-a4bc-3bcb8b51e49e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-f860ed48-2057-448d-a4bc-3bcb8b51e49e&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-f860ed48-2057-448d-a4bc-3bcb8b51e49e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-f860ed48-2057-448d-a4bc-3bcb8b51e49e&quot;&gt;
&lt;div data-unitid=&quot;SE-f860ed48-2057-448d-a4bc-3bcb8b51e49e&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;575&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OCOsi/btr74eWUYGj/NR76kebLsXlS9WaOt9lFu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OCOsi/btr74eWUYGj/NR76kebLsXlS9WaOt9lFu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OCOsi/btr74eWUYGj/NR76kebLsXlS9WaOt9lFu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOCOsi%2Fbtr74eWUYGj%2FNR76kebLsXlS9WaOt9lFu1%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;429&quot; height=&quot;575&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;575&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-72667727-5773-499c-89c2-79e58822c304&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-72667727-5773-499c-89c2-79e58822c304&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-72667727-5773-499c-89c2-79e58822c304&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3d04bdca-9066-4156-a95c-e41056579e7d&quot;&gt;
&lt;p id=&quot;SE-9d607237-2492-406c-86e2-9a202dcb77ae&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pets를 출력하면 pets의 모든 객체들이 출력되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-eebc07ca-23b7-4e12-ad8e-410efc71254c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;name과 bark도 아래 써진 방법으로 출력이 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-875bdd8c-abff-4426-897e-bf9bbacf9002&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;10키로가 넘는지 안넘는지에 따라 왈왈,멍멍이 다르게 출력되는 것을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fbd56e61-d383-4aea-88d2-0c0432bfe221&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-afeee093-ed3e-462c-8d23-b3c506c26f99&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;객체배열 - 생성자함수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e23343c0-fbad-4890-b897-7ed6cdeb40be&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-e23343c0-fbad-4890-b897-7ed6cdeb40be&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-e23343c0-fbad-4890-b897-7ed6cdeb40be&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test2=()=&amp;gt;{
        const pets=[];
        pets.push(new Pet('구리구리','푸들',3,10,'white'));
        pets.push(new Pet('둘리','말티즈',6,5,'white'));
        pets.push(new Pet('사랑이','코카스파니엘',13,3,'white','brown'));
        console.log(pets);
        pets.forEach((pet)=&amp;gt;{
            const{name,bark}=pet;
            console.log(`${pet.name}야~ ${bark.call(pet)}`);
        });
        
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a1e5cc4e-4784-46b4-b83c-6868e50b89e9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-a1e5cc4e-4784-46b4-b83c-6868e50b89e9&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-a1e5cc4e-4784-46b4-b83c-6868e50b89e9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c435ab8d-6b11-4f92-9263-e50b5a6dce1d&quot;&gt;
&lt;h3 id=&quot;SE-f582190a-118f-427e-a4ad-db379f4e8d76&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생성자함수&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;관례상 대문자로 시작하는 이름을 가진다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;new 연산자를 통해 호출되고, 객체를 생성한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;this용법 6. 생성자함수안의 this는 현재 객체를 가르킨다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;화살표함수는 생성자함수로 사용할 수 없다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ce9dbf95-4764-43d7-8c1e-f7e7801dd83e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ce9dbf95-4764-43d7-8c1e-f7e7801dd83e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ce9dbf95-4764-43d7-8c1e-f7e7801dd83e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;    function Pet(name,breed, weight,age, ...color){
        this.name=name;
        this.breed=breed;
        this.weight=weight;
        this.age=age;
        this.color=color;
        // this.bark=function(){
        //     return this.weight&amp;lt;10?'왈왈':'멍멍';
        // };
    };

    Pet.prototype.bark=function(){
        return this.weight&amp;lt;10?'왈왈':'멍멍';
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5690f2d5-8d95-4ded-82b8-3a808dd2cb85&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5690f2d5-8d95-4ded-82b8-3a808dd2cb85&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5690f2d5-8d95-4ded-82b8-3a808dd2cb85&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-24ecec09-1d2c-4c35-843d-7af712d04470&quot;&gt;
&lt;p id=&quot;SE-394ea01d-c9c9-4b41-9d96-b7a2fd8f425b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같이 생성자함수를 만들었다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ebb08143-42f5-4dee-84b7-cb15afb09dad&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ebb08143-42f5-4dee-84b7-cb15afb09dad&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ebb08143-42f5-4dee-84b7-cb15afb09dad&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-ebb08143-42f5-4dee-84b7-cb15afb09dad&quot;&gt;
&lt;div data-unitid=&quot;SE-ebb08143-42f5-4dee-84b7-cb15afb09dad&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KFbND/btr735MAtCr/7Zvbq3k7cIRjB0JhKssrfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KFbND/btr735MAtCr/7Zvbq3k7cIRjB0JhKssrfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KFbND/btr735MAtCr/7Zvbq3k7cIRjB0JhKssrfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKFbND%2Fbtr735MAtCr%2F7Zvbq3k7cIRjB0JhKssrfK%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;428&quot; height=&quot;176&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-827f5130-b317-4528-b125-befbe5186d05&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-827f5130-b317-4528-b125-befbe5186d05&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-827f5130-b317-4528-b125-befbe5186d05&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1f6e25fb-f640-4bc9-8050-23610bca3533&quot;&gt;
&lt;p id=&quot;SE-d753eee5-f29e-446e-be55-ef0ae8516f22&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;객체로 push하여 더 짧고 간결한 코드로 프린트 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6c93ad1d-7809-4ad5-a643-19a03899ae02&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-a5c82b40-1302-4647-a5b9-73b9d6826431&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-40c61316-b00e-46de-8d1f-c9011136a31b&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생성자함수 - 프로토타입&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;javascript는 프로토타입 기반의 상속모델을 가진 객체지향 언어이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성자함수 호출로 생성된 객체는 프로토타입과 연결된 프로토타입체인을 갖는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로토타입체인 최상위에는 Object.prototype이 존재한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-90a16770-f4e9-4a18-b57e-9b4568f1c92d&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-90a16770-f4e9-4a18-b57e-9b4568f1c92d&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-90a16770-f4e9-4a18-b57e-9b4568f1c92d&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test3 = () =&amp;gt;{
        console.log(Duck);//생성자함수
        console.log(Duck.prototype);//프로토타입

        console.log(Duck.prototype.constructor==Duck); //true
        //duck을 만들면 duck.prototype이 자동으로 생김

        const lee=new Duck('이','오리'); //duck객체
        console.log(lee);

        lee.say();//Duck.prototype.say 호출
        console.log(lee.toString());//[object Object]
        console.log(`${lee}`); //[object Object]

        console.log(lee.__proto__);//Duck.prototype
        console.log(lee.__proto__===Duck.prototype);//true

        //생성자함수는 new연산자와 함께 호출해야한다.
        const donald = Duck('Donald','Trump');
        console.log(donald);//undefined
        console.log(this.firstName);//Donald
        console.log(this.lastName);//Trump
    };

    function Duck(firstName,lastName){
        this.firstName=firstName;
        this.lastName=lastName;
    }
    Duck.prototype.say=function(){
        console.log(`안녕하세요, ${this.firstName} ${this.lastName}입니다.`);
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-66b03195-0a28-46a9-982d-471fd2d30462&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-66b03195-0a28-46a9-982d-471fd2d30462&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-66b03195-0a28-46a9-982d-471fd2d30462&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-66b03195-0a28-46a9-982d-471fd2d30462&quot;&gt;
&lt;div data-unitid=&quot;SE-66b03195-0a28-46a9-982d-471fd2d30462&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NFi3H/btr72ZlYXRu/Eb1mpkYgk67sQ6UzAD2O7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NFi3H/btr72ZlYXRu/Eb1mpkYgk67sQ6UzAD2O7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NFi3H/btr72ZlYXRu/Eb1mpkYgk67sQ6UzAD2O7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNFi3H%2Fbtr72ZlYXRu%2FEb1mpkYgk67sQ6UzAD2O7k%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;429&quot; height=&quot;309&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5272a910-428d-4162-b9ac-e611688df9d4&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5272a910-428d-4162-b9ac-e611688df9d4&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5272a910-428d-4162-b9ac-e611688df9d4&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-1f461656-0f70-4ebf-a999-6fe0bfb9a868&quot;&gt;
&lt;p id=&quot;SE-b7aaefbd-c204-43f9-bbd7-244e922a537c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;duck을 만들면 duck.prototype은 자동으로 생긴다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f66c88ff-b301-4c84-b200-4c99a4323aac&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;say로 duck을 호출한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2b78e76e-c5bc-48f9-a51e-6dfd0f840632&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성자함수는 new연산자와 함께 호출해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-465e79f1-4dc8-468b-aa28-eb8ccd232e6e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-5a6181da-9b4b-4e56-abdb-cdef24f92166&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프린트하면 다음과 같이 프린트된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-051080a3-ed84-4742-8d59-6e3b23fc6db2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-95b5be71-ccad-44a0-998b-9fd015554c82&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-0415b27c-08f0-4dae-b0bc-3d09cca9ef69&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;속성비교&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;color: #000000;&quot;&gt;&lt;b&gt;생성자함수 속성&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;프로토타입 속성&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생성객체 속성&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p id=&quot;SE-22cb0d39-6120-41ac-aaef-610f1a0561a2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3127e876-8535-44d6-97c2-ac1d2c9143f7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-3127e876-8535-44d6-97c2-ac1d2c9143f7&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-3127e876-8535-44d6-97c2-ac1d2c9143f7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test4=()=&amp;gt;{
        const a= new A();

        console.dir(A);
        console.dir(A.prototype);
        console.log(a);
        
        //생성객체속성
        console.log(a.username);//알 파치노
        a.hello(); //안녕 알파치노

        //생성자함수 속성(static)
        console.log(A.username);//홍길동
        A.hello();//안녕 홍길동
    };
    /**
     * 생성자함수
     */
    function A(){
         this.username='알 파치노';
         this.hello=function(){
             console.log('안녕 알파치노');
         };
    }

    /**
     * 생성자함수 속성(=static자원)
     */
    A.username='홍길동';
    A.hello=function(){
        console.log('안녕 홍길동');
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bc42d429-f6cc-4e06-b380-b781797edd9b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bc42d429-f6cc-4e06-b380-b781797edd9b&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bc42d429-f6cc-4e06-b380-b781797edd9b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bc42d429-f6cc-4e06-b380-b781797edd9b&quot;&gt;
&lt;div data-unitid=&quot;SE-bc42d429-f6cc-4e06-b380-b781797edd9b&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKnWx0/btr73oTjloe/UA3lM0G2k2opVlOfh1kfUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKnWx0/btr73oTjloe/UA3lM0G2k2opVlOfh1kfUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKnWx0/btr73oTjloe/UA3lM0G2k2opVlOfh1kfUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKnWx0%2Fbtr73oTjloe%2FUA3lM0G2k2opVlOfh1kfUk%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;429&quot; height=&quot;175&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5d5a7097-de9f-405b-bb4b-28d3e571038e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-5d5a7097-de9f-405b-bb4b-28d3e571038e&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-5d5a7097-de9f-405b-bb4b-28d3e571038e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-7023ab17-71fa-4b65-a99c-09dde48c321e&quot;&gt;
&lt;p id=&quot;SE-4ed460bd-7b75-4776-901c-ebc3d1224531&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;a로 불러내면 알파치노(생성자 함수)가, A로 불러내면 홍길동(생성자함수 속성=static)이 출력된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ef5462df-7b99-4ee4-afd1-55acf5a86cb7&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ef5462df-7b99-4ee4-afd1-55acf5a86cb7&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ef5462df-7b99-4ee4-afd1-55acf5a86cb7&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test4=()=&amp;gt;{
        const a= new A();

        console.dir(A);
        console.dir(A.prototype);
        console.log(a);
        
        //생성객체속성
        console.log(a.username);
        a.hello(); 

        //생성자함수 속성(static)
        console.log(A.username);//홍길동
        A.hello();//안녕 홍길동
    };

    /**
     * 생성자함수 속성(=static자원)
     */
    A.username='홍길동';
    A.hello=function(){
        console.log('안녕 홍길동');
    }
    /**
     * 프로토타입 속성
     */
    A.prototype.username='아이언맨';
    A.prototype.hello=function(){
        console.log('안녕 아이언맨');
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bab6b76f-0e88-4a3c-9187-7bb0cf7fb00b&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bab6b76f-0e88-4a3c-9187-7bb0cf7fb00b&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bab6b76f-0e88-4a3c-9187-7bb0cf7fb00b&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bab6b76f-0e88-4a3c-9187-7bb0cf7fb00b&quot;&gt;
&lt;div data-unitid=&quot;SE-bab6b76f-0e88-4a3c-9187-7bb0cf7fb00b&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ebCBlO/btr7TjyZPma/jBjQMtKR0ykAYrXRzDMzh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ebCBlO/btr7TjyZPma/jBjQMtKR0ykAYrXRzDMzh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ebCBlO/btr7TjyZPma/jBjQMtKR0ykAYrXRzDMzh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FebCBlO%2Fbtr7TjyZPma%2FjBjQMtKR0ykAYrXRzDMzh1%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;426&quot; height=&quot;149&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-b6df6748-e7b3-487e-ab53-f8acb6d2db02&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-b6df6748-e7b3-487e-ab53-f8acb6d2db02&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-b6df6748-e7b3-487e-ab53-f8acb6d2db02&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-897f53b9-80be-4d24-9c78-3a3b99320394&quot;&gt;
&lt;p id=&quot;SE-c52491dd-c089-4ba7-8e95-afcab6378028&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성자함수를 지우고, 프로토타입 속성을 출력하면 생성객체속성에서 알파치노(생성자함수) 대신 프로토타입 속성이 프린트된다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-76484996-5d8f-45d5-93f4-ce7e51ac8437&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-675673ad-9dcb-48e2-b701-1aa7d804aec8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-cb4b2fb1-3967-4f67-827b-653f1e30a225&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;상속&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-c798ed1b-193b-4977-aef6-33597284b5c3&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-c798ed1b-193b-4977-aef6-33597284b5c3&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-c798ed1b-193b-4977-aef6-33597284b5c3&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test1=()=&amp;gt;{
        const books=[
            new Book('매트릭스',35000,.15),
            new Book('오라클 완전정복',30000,.2),
            new Book('네오클래식',15000),
            new Comic('원피스',3000, 0, false),
            new Comic('드래곤볼',2500,0.1,true),
        ];
        console.log(books);
        books.forEach((book)=&amp;gt;console.log(`${book}`));
    };

    function Book(title,price,discountRate=0.05){
        this.title=title;
        this.price=price;
        this.discountRate=discountRate;
    }
    Book.prototype.getSalePrice = function(){
        return this.price-(this.price*this.discountRate);
    };
    Book.prototype.toString=function(){
        return `제목 : ${this.title}, 판매가 : ${this.getSalePrice()}원 (정가 : ${this.price}원)`;
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-7253115d-6053-43bb-940e-2d0703ebcca9&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-7253115d-6053-43bb-940e-2d0703ebcca9&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-7253115d-6053-43bb-940e-2d0703ebcca9&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-c066e516-da0a-43ca-bfb2-e556c779469a&quot;&gt;
&lt;p id=&quot;SE-6a1e0fcb-eb46-4af9-89ef-947a7ed95022&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같은 books 가 존재할 때, Comic은 상속을 받은 자식 객체이다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-310d9b85-2ff5-4b68-8476-b582b715a983&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-310d9b85-2ff5-4b68-8476-b582b715a983&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-310d9b85-2ff5-4b68-8476-b582b715a983&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;delphi&quot;&gt;&lt;code&gt;    function Novel(title,price,discountRate,type){
        //1. 부모생성자함수 호출
        Book.call(this,title,price,discountRate);
        //Book.apply(this,title,price,discountRate); //this사용가능
        //부모생성자함수에서 처리할 수 없는 속성 등록
        this.type=type;
    }
    //2. 자식생성자함수의 프로토타입객체를 부모프로토타입객체 복제본으로 지정
    Novel.prototype=Object.create(Book.prototype);
    //3. 2번에서 생성된 프로토타입객체의 constructor속성으로 자식생성자함수를 재지정
    Novel.prototype.constructor=Novel;
    function Comic(title,price,discountRate,finished){
        Book.call(this,title,price,discountRate);
        this.finished=finished;
    }
    Comic.prototype = Object.create(Book.prototype);//new 생성자함수호출 없이 Book객체 생성
    Comic.prototype.constructor=Comic;
    Comic.prototype.toString=function(){
        return `[${this.finished ? '완결' : '연재중'}] ${Book.prototype.toString.call(this)}`;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-11833006-4bbf-4f51-8e01-2d1dca37207c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-11833006-4bbf-4f51-8e01-2d1dca37207c&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-11833006-4bbf-4f51-8e01-2d1dca37207c&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-11833006-4bbf-4f51-8e01-2d1dca37207c&quot;&gt;
&lt;div data-unitid=&quot;SE-11833006-4bbf-4f51-8e01-2d1dca37207c&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCJmnC/btr736dFexi/6CTdu4UKmroqZyByl5mxu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCJmnC/btr736dFexi/6CTdu4UKmroqZyByl5mxu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCJmnC/btr736dFexi/6CTdu4UKmroqZyByl5mxu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCJmnC%2Fbtr736dFexi%2F6CTdu4UKmroqZyByl5mxu0%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;426&quot; height=&quot;213&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bce347e1-33e4-44ff-b44c-0298134d3432&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-bce347e1-33e4-44ff-b44c-0298134d3432&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-bce347e1-33e4-44ff-b44c-0298134d3432&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4071cced-36d0-4731-9c83-fdb1e5ba59f4&quot;&gt;
&lt;p id=&quot;SE-e2a6d13c-f53d-4685-a5b6-4eeb47a69e5f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자식 생성자함수 &amp;amp; 프로토타입 처리 하는 방법&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;은 다음과 같다.&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자식 생성자함수 안에서 부모 생성자 함수를 호출한다(super())&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자식 생성자함수의 프로토타입 객체를 부모 프로토타입 객체의 복제본으로 지정한다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2번에서 생성된 프로토타입의 객체를 constroctor속성으로 자식 생성자함수를 재지정한다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p id=&quot;SE-bf5aefb3-fd36-45d6-8a66-4d4aaee3b449&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-2b507d9d-9a7b-41c4-b174-d022d372cb09&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위에서 방법에 따라 순서대로 처리를 하고, 프린트 한 결과 Book에 대한 프린트와 Comic에 대한 프린트 (연재여부 추가) 가 제대로 이루어졌음을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-498bc0bf-f805-4bfd-b09e-390e6204a284&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-378ed9a9-ca33-4d26-a0dd-4fdf68d1def0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-15879f2e-dd3c-4ed4-bb3d-13b4abf43e93&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;call | apply | bind&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-09869c0a-971e-4fbe-b8cc-170f39f0d595&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- this binding과 관련한 함수&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-be4df6fd-6e7c-43e9-a1d3-17cd0a1eb4fc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- this를 binding해서 호출&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f5823deb-99eb-49ac-bdd5-34393d61dc31&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- call(this객체, arg1, arg2, ...) - 함수의 매개인자를 나열&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7f3585db-d56e-4f3e-adb6-c663b260fea9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- apply(this객체, [arg1, arg2, ...]) - 함수의 매개인자를 배열로 전달&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-bb12dbc0-5587-4096-a1a4-c13c3582c01e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;* 화살표함수는 this 재지정이 불가능하다&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ed319c04-b78d-4092-a729-03ce3019c3a3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- this가 binding된 함수를 리턴한다. : bind&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7303ca9f-3b4a-4220-8e44-906bbe38a43e&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-aca6d545-f269-4513-8dbf-077b2e930045&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-aca6d545-f269-4513-8dbf-077b2e930045&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-aca6d545-f269-4513-8dbf-077b2e930045&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;    const test2=()=&amp;gt;{
        const foo=function(a,b){
            console.log(this, this.id,a,b);//this는 window를 가르킴.
        }
        foo(10,20); //undefined 10 20

        const obj={
            id:'qwerty1234'
        };
        foo.call(obj,10,20); //{id:'qwerty1234'} 'qwerty1234' 10 20
        foo.apply(obj,[10,20]);//{id:'qwerty1234'} 'qwerty1234' 10 20

        const foooooo=foo.bind(obj);
        foooooo(10,20);
    };
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-04fae4e6-d834-4045-9a48-617bf4983687&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-04fae4e6-d834-4045-9a48-617bf4983687&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-04fae4e6-d834-4045-9a48-617bf4983687&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-04fae4e6-d834-4045-9a48-617bf4983687&quot;&gt;
&lt;div data-unitid=&quot;SE-04fae4e6-d834-4045-9a48-617bf4983687&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l2dXV/btr73xiirR3/CfskEzKtbzKC94DXrn8zxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l2dXV/btr73xiirR3/CfskEzKtbzKC94DXrn8zxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l2dXV/btr73xiirR3/CfskEzKtbzKC94DXrn8zxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl2dXV%2Fbtr73xiirR3%2FCfskEzKtbzKC94DXrn8zxk%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;428&quot; height=&quot;175&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0fb95a01-73c2-4407-a8be-fa6af2e880e8&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-0fb95a01-73c2-4407-a8be-fa6af2e880e8&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-0fb95a01-73c2-4407-a8be-fa6af2e880e8&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-01df4312-d698-4a77-bbee-727495332652&quot;&gt;
&lt;p id=&quot;SE-3f6f9087-885e-42b7-b936-d1ceb4535ffb&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;call과 apply는 같은 역할을 하고, fooooo와도 같은 값이 나왔음을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-17bcb98f-9353-45c0-9199-c1834ab2f107&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-d7d806ae-793f-45f1-818f-25af7d630104&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;SE-33bd3831-10a4-4fa3-8d92-8e6d09a9f1d1&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Object.create&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p id=&quot;SE-ee6424dd-1b6a-4ed8-a77b-9e1069cd53d2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성자 호출 없이 해당객체를 생성하는 메소드 (Object생성자함수의 static메소드)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-286b9ecd-ce42-4d9a-bc6a-bd57d9824d57&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-286b9ecd-ce42-4d9a-bc6a-bd57d9824d57&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-286b9ecd-ce42-4d9a-bc6a-bd57d9824d57&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test3=()=&amp;gt;{
        //1. room객체 - Room.prototype을 부모객체로 하는 객체생성. 생성자함수 호출(속성추가)
        const room1 = new Room(1);
        console.log(room1);

        //2. Object.create(Room.prototype) - Room.prototype의 자식객체 생성
        const room2 = Object.create(Room.prototype);
        console.log(room2);

        console.log(room1.__proto__ === Room.prototype);//true
        console.log(room2.__proto__===Room.prototype);//true

        
    };

    function Room (no) {
        this.no=no;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-207c2d70-3a91-4205-b88b-058e329cac4f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-207c2d70-3a91-4205-b88b-058e329cac4f&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-207c2d70-3a91-4205-b88b-058e329cac4f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-207c2d70-3a91-4205-b88b-058e329cac4f&quot;&gt;
&lt;div data-unitid=&quot;SE-207c2d70-3a91-4205-b88b-058e329cac4f&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;425&quot; data-origin-height=&quot;92&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjseUd/btr7RrKTpA9/R6G17DsEtceYXkolf7ZMT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjseUd/btr7RrKTpA9/R6G17DsEtceYXkolf7ZMT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjseUd/btr7RrKTpA9/R6G17DsEtceYXkolf7ZMT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjseUd%2Fbtr7RrKTpA9%2FR6G17DsEtceYXkolf7ZMT1%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;425&quot; height=&quot;92&quot; data-origin-width=&quot;425&quot; data-origin-height=&quot;92&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-6ff82c6e-bd98-42f5-a02e-7092ef592774&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-6ff82c6e-bd98-42f5-a02e-7092ef592774&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-6ff82c6e-bd98-42f5-a02e-7092ef592774&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3007a970-1138-4ad3-9a4e-278217afb065&quot;&gt;
&lt;p id=&quot;SE-ad406df2-cc97-428e-87de-89d578994698&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;SE-646489d6-6199-4846-86b3-0f862d1c24a2&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Class&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-9997c0e7-20a5-427e-a717-2ae7de19451b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성자함수와 상속관계를 문법적으로 쉽게 표현&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f5f5454f-e6c9-44fb-995e-2ed4f5e9fe56&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성자함수의 Syntactic Sugar(문법적 설탕)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-80c55074-cc93-4fc0-9663-914d53c9a2ba&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-fc2c2cd5-28c7-4cbf-a632-757acaabd217&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;class는 동일한 이름의 생성자함수를 선언한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9ee2172e-1c11-4800-8088-152cd41804d7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;new 연산자를 통해 생성자함수를 호출하면 constructor가 호출된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-dd0bdb41-0f01-4902-a651-b84a91aacb89&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;클래스 내에 선언된 메소드(메소드 단축문법)는 prototype에 작성이 된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-597a5ee5-89f2-437b-9c7f-90de649fe4f8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;클래스 내에 선언한 속성은 현재 객체의 속성이 된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2a2eb458-8493-4ed2-ad5d-782fd506c9ad&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;static키워드를 사용하면 생성자함수의 속성으로 등록할 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ff78c46b-073c-485c-b7c4-6b4d4f22d98e&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ff78c46b-073c-485c-b7c4-6b4d4f22d98e&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ff78c46b-073c-485c-b7c4-6b4d4f22d98e&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    class Person{
        constructor(name,phone){
            this.name=name;
            this.phone=phone;
        }
        //현재객체 속성지정
        x=10;

        //생성자함수 속성지정
        static y=20;
        static z(){
            console.log('zzzzzzzzzzzzzzz');
        }
        
        //prototype 속성 - 메소드단축문법
        sayHi(){
            console.log(`안녕하세요, 저는 ${this.name}입니다.`);
        }
    };
    class Dev extends Person{//2,3번해결
        constructor(name,phone,lang){
            super(name,phone);//1번 해결
            this.lang=lang;
        }

        //Dev.prototype 
        sayHi(){
            super.sayHi(); //프로토타입체 인 상의 부모메소드
            console.log(`저는 ${this.lang}개발자입니다.`);
        }
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ed52d2fa-0fac-4e82-93d7-2cfeab4fb61a&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-ed52d2fa-0fac-4e82-93d7-2cfeab4fb61a&quot; data-a11y-title=&quot;코드&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-ed52d2fa-0fac-4e82-93d7-2cfeab4fb61a&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;    const test4=()=&amp;gt;{
        const honggd = new Person('홍길동','01012341234');
        console.log(honggd);

        console.log(typeof Person,Person); //function 생성자함수

        honggd.sayHi();
        
        console.log(Person.y);//static속성
        Person.z();

    };
    const test5=()=&amp;gt; {
        const sinsa = new Dev('신사임당','01012344321','Javascript');
        console.log(sinsa);

        sinsa.sayHi();
    };&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-463a4980-9889-4273-a3f9-37d4ea25b35c&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-463a4980-9889-4273-a3f9-37d4ea25b35c&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-463a4980-9889-4273-a3f9-37d4ea25b35c&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-463a4980-9889-4273-a3f9-37d4ea25b35c&quot;&gt;
&lt;div data-unitid=&quot;SE-463a4980-9889-4273-a3f9-37d4ea25b35c&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pPJbg/btr726kZvnu/MT2O6E1xyHXSYcCTGQIf10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pPJbg/btr726kZvnu/MT2O6E1xyHXSYcCTGQIf10/img.png&quot; data-alt=&quot;test4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pPJbg/btr726kZvnu/MT2O6E1xyHXSYcCTGQIf10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpPJbg%2Fbtr726kZvnu%2FMT2O6E1xyHXSYcCTGQIf10%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;415&quot; height=&quot;240&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;test4&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d5abc374-bcaa-4faf-8c52-83095a136673&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-d5abc374-bcaa-4faf-8c52-83095a136673&quot; data-a11y-title=&quot;사진&quot;&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-d5abc374-bcaa-4faf-8c52-83095a136673&quot; data-direction=&quot;top&quot;&gt;
&lt;div id=&quot;SE-d5abc374-bcaa-4faf-8c52-83095a136673&quot;&gt;
&lt;div data-unitid=&quot;SE-d5abc374-bcaa-4faf-8c52-83095a136673&quot; data-compid=&quot;&quot; data-direction=&quot;top&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;91&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwKRme/btr7Xb8kpcX/O7l9LUB3gOjHsUxwSyEkl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwKRme/btr7Xb8kpcX/O7l9LUB3gOjHsUxwSyEkl1/img.png&quot; data-alt=&quot;test5&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwKRme/btr7Xb8kpcX/O7l9LUB3gOjHsUxwSyEkl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwKRme%2Fbtr7Xb8kpcX%2FO7l9LUB3gOjHsUxwSyEkl1%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;429&quot; height=&quot;91&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;91&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;test5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-2ed47e7a-b5ce-439d-9d64-4f5f67069a1f&quot; style=&quot;color: #000000; text-align: start;&quot; data-compid=&quot;SE-2ed47e7a-b5ce-439d-9d64-4f5f67069a1f&quot; data-a11y-title=&quot;본문&quot;&gt;
&lt;div&gt;
&lt;div data-unitid=&quot;&quot; data-compid=&quot;SE-2ed47e7a-b5ce-439d-9d64-4f5f67069a1f&quot; data-direction=&quot;top&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-4b455a75-62f8-4de9-b173-742f08b4677c&quot;&gt;
&lt;p id=&quot;SE-edc69caf-6546-4e4d-bc6c-201727e1fc17&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test4에서는 Person이 함수형이고, 어떤 형태를 가지는지 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-c2aa6a83-e33b-47ff-9c28-97fc45f6a8d3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 prototype 속성이 출력되고, static 속성도 출력되고, static 함수도 출력된다. (static속성과 함수는 생성자함수속성)&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6394ddb8-0e6e-4ea6-b304-d54dc6980df1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;test5에서는 Person을 물려받은 Dev에 대한 출력이 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a93a49fb-1143-4bcd-b9f1-ed5d89f21dcc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Dev에서 super()로 부모객체에 존재하는 내용을 담고, lang을 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-07ead2a3-83fd-4c6b-9360-72410156eecd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Dev의 프로토타입 sayHi도 super로 부모객체에 존재하는 함수를 가져올 수 있고, 새로 출력도 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d9940562-1404-4528-8a37-f4002588a6f4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 내용이 test5에 제대로 출력되었음을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Frontend/Javascript</category>
      <category>javascript</category>
      <category>JS</category>
      <author>유경(shin-6-0)</author>
      <guid isPermaLink="true">https://cheerup313.tistory.com/70</guid>
      <comments>https://cheerup313.tistory.com/70#entry70comment</comments>
      <pubDate>Tue, 4 Apr 2023 15:39:41 +0900</pubDate>
    </item>
  </channel>
</rss>