<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>각시탈코더</title>
    <link>https://gaksitalcoder.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 11 Apr 2026 15:41:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>각시탈코더</managingEditor>
    <image>
      <title>각시탈코더</title>
      <url>https://tistory1.daumcdn.net/tistory/4760571/attach/3d4bfb6ae2d74d5194541fcb2cf49651</url>
      <link>https://gaksitalcoder.tistory.com</link>
    </image>
    <item>
      <title>Reduce함수</title>
      <link>https://gaksitalcoder.tistory.com/510</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;리듀스함수.png&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwdRiM/btsKLoPzgQQ/8kTk6WEvOpCOuxclXqWNo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwdRiM/btsKLoPzgQQ/8kTk6WEvOpCOuxclXqWNo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwdRiM/btsKLoPzgQQ/8kTk6WEvOpCOuxclXqWNo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwdRiM%2FbtsKLoPzgQQ%2F8kTk6WEvOpCOuxclXqWNo0%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;942&quot; height=&quot;352&quot; data-filename=&quot;리듀스함수.png&quot; data-origin-width=&quot;942&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>JavaScript/문법</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/510</guid>
      <comments>https://gaksitalcoder.tistory.com/510#entry510comment</comments>
      <pubDate>Sat, 16 Nov 2024 11:26:26 +0900</pubDate>
    </item>
    <item>
      <title>[기혁씨의 삽질표류기] 디렉토리 경로 문제</title>
      <link>https://gaksitalcoder.tistory.com/499</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;삽질.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5HGef/btsDivHfifJ/wGtzfodW0T1DzkzlGUuZnk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5HGef/btsDivHfifJ/wGtzfodW0T1DzkzlGUuZnk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5HGef/btsDivHfifJ/wGtzfodW0T1DzkzlGUuZnk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5HGef%2FbtsDivHfifJ%2FwGtzfodW0T1DzkzlGUuZnk%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;600&quot; height=&quot;450&quot; data-filename=&quot;삽질.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;450&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20240109_181229.png&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;529&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWhIIU/btsDfP7LNza/vCgXy4C1iBNLpkjcHpibSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWhIIU/btsDfP7LNza/vCgXy4C1iBNLpkjcHpibSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWhIIU/btsDfP7LNza/vCgXy4C1iBNLpkjcHpibSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWhIIU%2FbtsDfP7LNza%2FvCgXy4C1iBNLpkjcHpibSK%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;805&quot; height=&quot;529&quot; data-filename=&quot;20240109_181229.png&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;529&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 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 data-ke-size=&quot;size16&quot;&gt;2.TodoRepository의 의존성에 관한문제.&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;패키지.png&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2iLXg/btsDhTBzOo8/A9nUwEayHEkKsfi3Tl9iGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2iLXg/btsDhTBzOo8/A9nUwEayHEkKsfi3Tl9iGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2iLXg/btsDhTBzOo8/A9nUwEayHEkKsfi3Tl9iGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2iLXg%2FbtsDhTBzOo8%2FA9nUwEayHEkKsfi3Tl9iGk%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;455&quot; height=&quot;470&quot; data-filename=&quot;패키지.png&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;470&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;1번째 문제를 풀기위해 눈에 불을 켜고 폴더 위치와 이름을 확인했는데 문제가 없었다. 그렇다면, TodoRepository의 의존성 문제일텐데... 그래서 TodoRepository클래스와 Gradle을 확인했다. 역시나 아무런 문제가 없었다...&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;디펜던시.png&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;437&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x5CCH/btsC9lfmHzn/spgvEsUwf0IySJN5mNvCDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x5CCH/btsC9lfmHzn/spgvEsUwf0IySJN5mNvCDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x5CCH/btsC9lfmHzn/spgvEsUwf0IySJN5mNvCDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx5CCH%2FbtsC9lfmHzn%2FspgvEsUwf0IySJN5mNvCDk%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;904&quot; height=&quot;437&quot; data-filename=&quot;디펜던시.png&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;437&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;혹시 설정이 잘못됐다 여기저기 헤매다가 내가 지금 작업하고 있는 디렉토리 위치가 잘못된게 아닐까 싶어 gradle jar를 배포해봤다. 그런데..... 배포가 안됐다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T723K/btsDaylcwKc/c2Jc8Hm65hV60F6jkMgtG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T723K/btsDaylcwKc/c2Jc8Hm65hV60F6jkMgtG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T723K/btsDaylcwKc/c2Jc8Hm65hV60F6jkMgtG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT723K%2FbtsDaylcwKc%2Fc2Jc8Hm65hV60F6jkMgtG0%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;403&quot; height=&quot;51&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;51&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;패키지.png&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2iLXg/btsDhTBzOo8/A9nUwEayHEkKsfi3Tl9iGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2iLXg/btsDhTBzOo8/A9nUwEayHEkKsfi3Tl9iGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2iLXg/btsDhTBzOo8/A9nUwEayHEkKsfi3Tl9iGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2iLXg%2FbtsDhTBzOo8%2FA9nUwEayHEkKsfi3Tl9iGk%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;455&quot; height=&quot;470&quot; data-filename=&quot;패키지.png&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;470&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;내가 지금 작업하고 있는 디렉토리의 위치가 'Backend'인데 이 안에는 배포할 수 거나 실행할 수 있는 파일이 아무것도 없다. 그러니 디렉토리를 못찾는다는 오류가 날 수 밖에..... 돌고 돌아서 이 문제의 원인은 오류메세지가 첫번째로 알려줬던 디렉토리 경로의 문제였다. 이런 바보같은 실수를 하다니!&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;691&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tpass/btsC9AwZHts/8BASrRRsIIQPSPvTdwUKV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tpass/btsC9AwZHts/8BASrRRsIIQPSPvTdwUKV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tpass/btsC9AwZHts/8BASrRRsIIQPSPvTdwUKV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftpass%2FbtsC9AwZHts%2F8BASrRRsIIQPSPvTdwUKV1%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;691&quot; height=&quot;120&quot; data-origin-width=&quot;691&quot; data-origin-height=&quot;120&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;802&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8RepI/btsC879E03K/ArOWBREk9MlNrlMLKgbOQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8RepI/btsC879E03K/ArOWBREk9MlNrlMLKgbOQK/img.png&quot; data-alt=&quot;이 안에서 빌드를 했어야했다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8RepI/btsC879E03K/ArOWBREk9MlNrlMLKgbOQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8RepI%2FbtsC879E03K%2FArOWBREk9MlNrlMLKgbOQK%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;802&quot; height=&quot;370&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이 안에서 빌드를 했어야했다!&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;*PS 어제 작업을 수행하고 오늘 다시 빌드를 하니 또 다시 똑같은 오류가 떴다.... 오류의 원인은 gradlew이였다. 어제 테스트한답시고 너무많은 build를 실행하다보니 파일이 뭔가 꼬인것 같다. 그래서 &lt;b&gt;./gradlew clean build&lt;/b&gt;를 쳐서 다시 빌드하니 성공했다.&lt;/p&gt;</description>
      <category>기혁씨의 삽질표류기</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/499</guid>
      <comments>https://gaksitalcoder.tistory.com/499#entry499comment</comments>
      <pubDate>Tue, 9 Jan 2024 18:23:47 +0900</pubDate>
    </item>
    <item>
      <title>[프로젝트][당당프로젝트] 후기</title>
      <link>https://gaksitalcoder.tistory.com/498</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;man-593333_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nmXIH/btsCywvtsWl/E0vKknmCiXoOKqm3SA3fxK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nmXIH/btsCywvtsWl/E0vKknmCiXoOKqm3SA3fxK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nmXIH/btsCywvtsWl/E0vKknmCiXoOKqm3SA3fxK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnmXIH%2FbtsCywvtsWl%2FE0vKknmCiXoOKqm3SA3fxK%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;1280&quot; height=&quot;757&quot; data-filename=&quot;man-593333_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;757&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월부터 시작되어 11월에 끝난 당당프로젝트의 후기에 대해 쓰고자한다. 5개월이라는 시간이 짧은 시간이 아니였지만, 프로젝트와 수업이 동시에 진행되어 결코 시간이 넉넉하다곤 할 수 없었다. 시간에 대한 변명은 이쯤하고 지난 프로젝트를 되짚어보자.&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;b&gt;1.기획&lt;/b&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;&lt;b&gt;3.기술&lt;/b&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-filename=&quot;meeting-2284501_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HUP0r/btsCK9EHk4J/wqmBUYafodLfjOxGbfjEy1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HUP0r/btsCK9EHk4J/wqmBUYafodLfjOxGbfjEy1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HUP0r/btsCK9EHk4J/wqmBUYafodLfjOxGbfjEy1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHUP0r%2FbtsCK9EHk4J%2FwqmBUYafodLfjOxGbfjEy1%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;1280&quot; height=&quot;800&quot; data-filename=&quot;meeting-2284501_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&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;b&gt;'기획'&lt;/b&gt;은 프로젝트의 성공과 실패를 좌우한다고해도 과언이 아니다. 우리조는 처음에는 우리 프로그램을 사용하는 사용자가 식품에 정보를 제대로 파악하여&amp;nbsp; '건강관리'를 한다는 걸 기획했다. 기획 하나만 하는데에도 일주일 이상 걸렸다. 우리가 기획한 걸 피그마로 옮기는 작업을 했는데, 작업을 진행하다보니 처음 우리의 기획과는 다르게 점점 상품을 소개하는 '쇼핑몰' 프로그램처럼 기획이 어긋나버렸다.(이 작업도 한달가량 걸렸다....)&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tin-can-238488_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/esgf6I/btsCCxmwrTq/9BwPltNMUv8pDsqWizlYak/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/esgf6I/btsCCxmwrTq/9BwPltNMUv8pDsqWizlYak/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/esgf6I/btsCCxmwrTq/9BwPltNMUv8pDsqWizlYak/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fesgf6I%2FbtsCCxmwrTq%2F9BwPltNMUv8pDsqWizlYak%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;1280&quot; height=&quot;853&quot; data-filename=&quot;tin-can-238488_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&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;b&gt;'의사소통'&lt;/b&gt;이다. 처음 프로젝트를 시작할 때 당연하게 git을 통해 프로젝트를 관리하기로 했다. 하지만 깃을 통해 프로젝트를 관리하자고 말만했지 실상 깃을 통해 프로젝트가 진행되지 않고 각자 따로 작업이 진행됐다. Merge할때 충돌문제를 염려한 나는 회의를 통해 깃을 통해 Merge를 하고 즉시 git을 통해 프로젝트를 관리하자고 주장했다. 충돌문제에 대해 다른 팀원들도 공감하여 즉시 Merge를 하고 git을 통해 프로젝트를 관리하기로 했지만, 또 다시 말 뿐일뿐 git으로 프로젝트가 관리되지 않았다.&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;그래서 나는 또다시 팀원들에게 git의 필요성을 이야기했지만, 팀원중 한명은 프로젝트 폴더위치, 클래스명 등 통일 해야할 것들만 잘 지키면 충돌이 나지 않는다고 주장하며&amp;nbsp; git을 통해 프로젝트를 관리해야한다는 내 주장은 받아들여지지 않았다. 그 결과 프로젝트 막바지 쯤에 충돌문제로 우리조는 한참 고생을 했다. 내가 git관리의 중요성에 확신을 가지고 있었기 때문에 내가 더 제대로 주장했더라면 이런 고생은 안해도 되지 않았을까 생각하게 됐다.&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;나는 프로젝트에서 게시판 관리 시스템을 담당했는데, 이 시스템은 회원 시스템과 연관이 되어있는 시스템이다. git으로 프로젝트가 관리되지 않아 '회원'과 관련된 게시판을 만드는데에도 문제가 생겼다. 그래서 회원시스템을 관리하는 조원에게 몇 번이고 회원정보에 대한 코드를 부탁했지만, 여기서도 의사소통 문제로 인해 회원시스템에 관련된 코드를 받지 못하고 내 담당 프로젝트의 일정이 꼬이고 뒤로 밀리기 시작했다. 그러다보니 팀원들간에 의사소통 문제가 발생했고 알게모르게 서먹서먹한 관계가 지속됐다.&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;worker-1635976_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EUaZF/btsCLp8z9np/hXVkjNIBZKpYXqA1ebpfW1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EUaZF/btsCLp8z9np/hXVkjNIBZKpYXqA1ebpfW1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EUaZF/btsCLp8z9np/hXVkjNIBZKpYXqA1ebpfW1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEUaZF%2FbtsCLp8z9np%2FhXVkjNIBZKpYXqA1ebpfW1%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;1280&quot; height=&quot;853&quot; data-filename=&quot;worker-1635976_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&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;b&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;프로젝트를 진행하며 가장 어려웠던 '기획', '의사소통', '기술'에 대해 이야기 해보았다. 이 중에서도 개인적으로 가장 힘들었던 건 '의사소통' 이였다. 내가 말한것과 상대방이 받아들이는 게 달랐고 그 반대의 경우도 많았다. 그러다보니 프로젝트에서 변경사항이 생긴것은 한 두번이 아니였고 자연스레 교착상태에 빠졌었다. 그러다 보니 서로에 대한 서운함이 커지고 신뢰감을 읽기 시작했다. 이를 해결하기 위해&amp;nbsp; 더 자주 얼굴보고 이야기하려했지만, 사람이하는 일이다 보니 서운한 마음은 감출 수 없었다. 의사소통의 문제는 프로젝트의 속도를 늦춘다는 문제를 했지만, 무엇보다도 팀원들간 서로의 마음을 닫게 만드는 게 가장 큰 문제였다.&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;b&gt;1.수업에서 배웠던 내용을 더 많이 써보질 못한 것&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;children-1822701_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbURZh/btsCKR5i8xL/G4mbkC6YHmMt1GR93Dt6yK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbURZh/btsCKR5i8xL/G4mbkC6YHmMt1GR93Dt6yK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbURZh/btsCKR5i8xL/G4mbkC6YHmMt1GR93Dt6yK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbURZh%2FbtsCKR5i8xL%2FG4mbkC6YHmMt1GR93Dt6yK%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;1280&quot; height=&quot;853&quot; data-filename=&quot;children-1822701_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&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;이 두 가지다. 수업에서 많은 기술들을 배웠다. 다름 수업들과는 다르게 Vue.js까지도 쓰는 기술을 배웠는데, 배울 때 마다 즉시 프로젝트에 적용하지 못했다. 배운건 기록해뒀지만, 머릿속에서의 휘발속도가 더 빨라 프로젝트에 적용하지 못했다. 그래서 수업시간에 배웠던 모든 내용을 프로젝트에 적용하고 익히질 못해서 아쉽다. 그리고 프로젝트 '문서화'를 제대로 하지 못한게 아쉬움으로 남는다.&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;API주소, 명칭 통일등 협업시에 필요한 내용들을 제대로 문서화 시켰어야했는데, 이를 제대로 하지 못해 프로젝트에 큰 어려움을 겪었다. 명칭으로 인한 충돌문제도 많이 발생했고 같은 의미의 단어도 각기 다르게 쓰다보니 통일성을 잃어 어지럽게 된 경우도 많았다. 모두가 제대로 된 문서화를 하지 않아 발생했던 문제였다. 처음부터 이 문제를 제대로 해결하고 넘어갔다면, 프로젝트의 진행속도도 완성도도 더 높아졌지 않을까?라는 아쉬움이 남는다.&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;프로젝트 회고를 쓰면서 '깨달았다'라는 단어를 많이 쓴 것 같다. 그만큼 이번 당당프로젝트를 통해 많이 배울 수 있었고 앞으로 개발을 해나가면서 어떻게 나아갈 시 방향을 잡을 수 있었다. 프로젝트를 진행하며 힘들고 하얀 안개속을 걷는 것 처럼 막막하기도 했지만, 안갯속을 나와 뒤돌아보니 이전보다는 개발자로서 한층 더 성장했다고 확신한다.&amp;nbsp;&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;stairs-4574579_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNh2a3/btsCGaj47Rn/eiwukEILr3HhdEfWg3A2A1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNh2a3/btsCGaj47Rn/eiwukEILr3HhdEfWg3A2A1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNh2a3/btsCGaj47Rn/eiwukEILr3HhdEfWg3A2A1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNh2a3%2FbtsCGaj47Rn%2FeiwukEILr3HhdEfWg3A2A1%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;1280&quot; height=&quot;545&quot; data-filename=&quot;stairs-4574579_1280.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;545&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;&amp;nbsp; &amp;nbsp;&lt;/p&gt;</description>
      <category>참고자료/당당 프로젝트</category>
      <category>의사소통</category>
      <category>팀프로젝트</category>
      <category>팀프로젝트후기</category>
      <category>프로젝트</category>
      <category>프로젝트후기</category>
      <category>후기</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/498</guid>
      <comments>https://gaksitalcoder.tistory.com/498#entry498comment</comments>
      <pubDate>Tue, 26 Dec 2023 15:21:38 +0900</pubDate>
    </item>
    <item>
      <title>[내가 만든 학습그림] API개발의 흐름</title>
      <link>https://gaksitalcoder.tistory.com/493</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;API 개발 흐름.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MdqMh/btsATevxuNp/za63kxNNrEqjleht3Zaul0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MdqMh/btsATevxuNp/za63kxNNrEqjleht3Zaul0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MdqMh/btsATevxuNp/za63kxNNrEqjleht3Zaul0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMdqMh%2FbtsATevxuNp%2Fza63kxNNrEqjleht3Zaul0%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;960&quot; height=&quot;540&quot; data-filename=&quot;API 개발 흐름.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>내가 만든 학습그림</category>
      <category>API</category>
      <category>API개발흐름</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/493</guid>
      <comments>https://gaksitalcoder.tistory.com/493#entry493comment</comments>
      <pubDate>Sun, 26 Nov 2023 12:26:02 +0900</pubDate>
    </item>
    <item>
      <title>[DB 모델링] 정규화</title>
      <link>https://gaksitalcoder.tistory.com/492</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1.제 1정규형&lt;/h2&gt;
&lt;p&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/RhgRd/btsAScx6lwC/8PnET72IqMoTTtEQXWXzdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RhgRd/btsAScx6lwC/8PnET72IqMoTTtEQXWXzdK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;216&quot; data-filename=&quot;20231125_133515.png&quot; data-widthpercent=&quot;56.12&quot; style=&quot;width: 55.4681%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RhgRd/btsAScx6lwC/8PnET72IqMoTTtEQXWXzdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRhgRd%2FbtsAScx6lwC%2F8PnET72IqMoTTtEQXWXzdK%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;476&quot; height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n0iFY/btsATfAVT7J/SCYqSTH6upZawp6GfAvt90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n0iFY/btsATfAVT7J/SCYqSTH6upZawp6GfAvt90/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;278&quot; data-filename=&quot;20231125_133526.png&quot; style=&quot;width: 43.3691%;&quot; data-widthpercent=&quot;43.88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n0iFY/btsATfAVT7J/SCYqSTH6upZawp6GfAvt90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn0iFY%2FbtsATfAVT7J%2FSCYqSTH6upZawp6GfAvt90%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;479&quot; height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;제 1정규화 전 후. 제 1정규화 테이블&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;: 하나의 레코드 속성에는 하나의 데이터만 넣는다.&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) 제 1정규형 위반 CASE&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;938&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9viP6/btsAStNZEGh/ToSSfYfh9rdm5N8WGPFkGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9viP6/btsAStNZEGh/ToSSfYfh9rdm5N8WGPFkGK/img.png&quot; data-alt=&quot;'취미코드' 컬럼에 여러 데이터가 들어가는 문제. 1정규형 위반&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9viP6/btsAStNZEGh/ToSSfYfh9rdm5N8WGPFkGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9viP6%2FbtsAStNZEGh%2FToSSfYfh9rdm5N8WGPFkGK%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;938&quot; height=&quot;298&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;'취미코드' 컬럼에 여러 데이터가 들어가는 문제. 1정규형 위반&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/co5DR6/btsA3Bv9HLG/JyZQKxmFO6KdQY9zhf0hJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co5DR6/btsA3Bv9HLG/JyZQKxmFO6KdQY9zhf0hJ0/img.png&quot; data-alt=&quot;해결&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co5DR6/btsA3Bv9HLG/JyZQKxmFO6KdQY9zhf0hJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco5DR6%2FbtsA3Bv9HLG%2FJyZQKxmFO6KdQY9zhf0hJ0%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;964&quot; height=&quot;644&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;해결&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;Tip. 두 테이블의 관계가 M;N일 때 관계 테이블의 명칭 짓기가 애매할 때는 결합한 두 테이블의 명칭을 하나로 합친다. 예를들어 '고객'과 '취미'테이블이 M:N의 관계를 맺으면, 관계 테이블의 명칭은 '고객취미'가 된다.&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-origin-width=&quot;1011&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dH3oje/btsA2szxm2e/jtmNOkbTROtG715zRgRrV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dH3oje/btsA2szxm2e/jtmNOkbTROtG715zRgRrV1/img.png&quot; data-alt=&quot;복합 속성(주소) 1정규화 위반&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dH3oje/btsA2szxm2e/jtmNOkbTROtG715zRgRrV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdH3oje%2FbtsA2szxm2e%2FjtmNOkbTROtG715zRgRrV1%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;1011&quot; height=&quot;629&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;복합 속성(주소) 1정규화 위반&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;679&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8772p/btsATQV5lZX/JOR3TC7uiQsKZ4gaU6O451/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8772p/btsATQV5lZX/JOR3TC7uiQsKZ4gaU6O451/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8772p/btsATQV5lZX/JOR3TC7uiQsKZ4gaU6O451/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8772p%2FbtsATQV5lZX%2FJOR3TC7uiQsKZ4gaU6O451%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;679&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;679&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;904&quot; data-origin-height=&quot;683&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GGmRn/btsATCQ6uyV/UcUGZ0qQcXrWHxYejnLvoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GGmRn/btsATCQ6uyV/UcUGZ0qQcXrWHxYejnLvoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GGmRn/btsATCQ6uyV/UcUGZ0qQcXrWHxYejnLvoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGGmRn%2FbtsATCQ6uyV%2FUcUGZ0qQcXrWHxYejnLvoK%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;904&quot; height=&quot;683&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;683&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;924&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTdcQ0/btsAUoyagD8/lck4AQ1i0Z9z9N5M1MvvTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTdcQ0/btsAUoyagD8/lck4AQ1i0Z9z9N5M1MvvTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTdcQ0/btsAUoyagD8/lck4AQ1i0Z9z9N5M1MvvTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTdcQ0%2FbtsAUoyagD8%2Flck4AQ1i0Z9z9N5M1MvvTK%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;924&quot; height=&quot;506&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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-origin-width=&quot;902&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rBg8H/btsASG0PeXb/P8uZSyfpMPubkyYjBzSGd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rBg8H/btsASG0PeXb/P8uZSyfpMPubkyYjBzSGd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rBg8H/btsASG0PeXb/P8uZSyfpMPubkyYjBzSGd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrBg8H%2FbtsASG0PeXb%2FP8uZSyfpMPubkyYjBzSGd0%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;902&quot; height=&quot;256&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;256&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;944&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b189Cw/btsATjjN8TC/CqbRACvFvkrdMbHU5l1lpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b189Cw/btsATjjN8TC/CqbRACvFvkrdMbHU5l1lpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b189Cw/btsATjjN8TC/CqbRACvFvkrdMbHU5l1lpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb189Cw%2FbtsATjjN8TC%2FCqbRACvFvkrdMbHU5l1lpk%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;944&quot; height=&quot;618&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;618&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2.제 2정규형&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd2tBW/btsAULAb1xK/IUawBIP7XB1iVIK1I3KKiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd2tBW/btsAULAb1xK/IUawBIP7XB1iVIK1I3KKiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd2tBW/btsAULAb1xK/IUawBIP7XB1iVIK1I3KKiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd2tBW%2FbtsAULAb1xK%2FIUawBIP7XB1iVIK1I3KKiK%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;461&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&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/SV8Bd/btsAWjoNKgA/1LvCs5FSeyOhIDJGk13fSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SV8Bd/btsAWjoNKgA/1LvCs5FSeyOhIDJGk13fSK/img.png&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;274&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.6962%; margin-right: 10px;&quot; data-widthpercent=&quot;50.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SV8Bd/btsAWjoNKgA/1LvCs5FSeyOhIDJGk13fSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSV8Bd%2FbtsAWjoNKgA%2F1LvCs5FSeyOhIDJGk13fSK%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;274&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QU2Fo/btsASHLc7gq/BMW4j4FtDs4N2a0pBRCgb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QU2Fo/btsASHLc7gq/BMW4j4FtDs4N2a0pBRCgb1/img.png&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;278&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.141%;&quot; data-widthpercent=&quot;49.72&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QU2Fo/btsASHLc7gq/BMW4j4FtDs4N2a0pBRCgb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQU2Fo%2FbtsASHLc7gq%2FBMW4j4FtDs4N2a0pBRCgb1%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;615&quot; height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;제 2정규화 필요&lt;/figcaption&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;헬스 프로그램이 6000원에서 7000원으로 바꾼다면, 위와 같은 테이블은 수정의 비효율이 발생한다.&lt;/li&gt;
&lt;li&gt;현재 테이블(수강등록 현황)의 주제와 관련없는 컬럼(가격)을 다른 테이블로 빼는 작업&lt;/li&gt;
&lt;/ul&gt;
&lt;p&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/yzEMg/btsASvqFnQk/b97j7uKg2JKXBneVAUlca1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yzEMg/btsASvqFnQk/b97j7uKg2JKXBneVAUlca1/img.png&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;363&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.728%; margin-right: 10px;&quot; data-widthpercent=&quot;48.29&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yzEMg/btsASvqFnQk/b97j7uKg2JKXBneVAUlca1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyzEMg%2FbtsASvqFnQk%2Fb97j7uKg2JKXBneVAUlca1%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;889&quot; height=&quot;363&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cckYX6/btsASFGGHIi/GBUwrOQQUJxykkBq0xkS2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cckYX6/btsASFGGHIi/GBUwrOQQUJxykkBq0xkS2k/img.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;355&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.1092%;&quot; data-widthpercent=&quot;51.71&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cckYX6/btsASFGGHIi/GBUwrOQQUJxykkBq0xkS2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcckYX6%2FbtsASFGGHIi%2FGBUwrOQQUJxykkBq0xkS2k%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;931&quot; height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;제 2정규화 적용. 제 2정규화 테이블&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;&amp;nbsp;&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;partial dependency를 제거한 테이블&lt;/li&gt;
&lt;li&gt;빡통 버전: 현재 테이블의 핵심주제와 상관없는 컬럼을 다 제거한 테이블&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*partial dependency: 하나의 Composite primary key에 종속.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCYw3b/btsATNqxgnI/634xMIp65kiJhbUGnxk2n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCYw3b/btsATNqxgnI/634xMIp65kiJhbUGnxk2n0/img.png&quot; data-alt=&quot;가격 컬럼이 Composite primary key 중 하나인 '프로그램'에 종속 된 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCYw3b/btsATNqxgnI/634xMIp65kiJhbUGnxk2n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCYw3b%2FbtsATNqxgnI%2F634xMIp65kiJhbUGnxk2n0%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;614&quot; height=&quot;341&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;가격 컬럼이 Composite primary key 중 하나인 '프로그램'에 종속 된 경우&lt;/figcaption&gt;
&lt;/figure&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;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;3.제 3정규형&lt;/span&gt;&lt;/h2&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;916&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFDD09/btsAUnTJbPH/b3iMSPreMfD56OITz6Wx8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFDD09/btsAUnTJbPH/b3iMSPreMfD56OITz6Wx8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFDD09/btsAUnTJbPH/b3iMSPreMfD56OITz6Wx8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFDD09%2FbtsAUnTJbPH%2Fb3iMSPreMfD56OITz6Wx8K%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;916&quot; height=&quot;635&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;635&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&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/cqh1Nk/btsAULFSCPQ/Ms6h7E6Ypacxyo3RXTQa9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqh1Nk/btsAULFSCPQ/Ms6h7E6Ypacxyo3RXTQa9K/img.png&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;452&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;40.81&quot; style=&quot;width: 40.3345%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqh1Nk/btsAULFSCPQ/Ms6h7E6Ypacxyo3RXTQa9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcqh1Nk%2FbtsAULFSCPQ%2FMs6h7E6Ypacxyo3RXTQa9K%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;452&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIinCM/btsATgGAvnU/u18Q6ZgW6M9qbQKlzvxiqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIinCM/btsATgGAvnU/u18Q6ZgW6M9qbQKlzvxiqK/img.png&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;427&quot; data-is-animation=&quot;false&quot; style=&quot;width: 58.5027%;&quot; data-widthpercent=&quot;59.19&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIinCM/btsATgGAvnU/u18Q6ZgW6M9qbQKlzvxiqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIinCM%2FbtsATgGAvnU%2Fu18Q6ZgW6M9qbQKlzvxiqK%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;644&quot; height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;제 3정규화 전,후&lt;/figcaption&gt;
&lt;/figure&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;style8&quot; /&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;a href=&quot;https://www.youtube.com/watch?v=Y1FbowQRcmI&amp;amp;t=19s&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=Y1FbowQRcmI&amp;amp;t=19s&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Y1FbowQRcmI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/vMURg/hyUCf20M8E/kNkKtMZLinrNw2z9xBVFz1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;데이터 정규화가 뭔지 설명해보세요 (개발면접타임)&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Y1FbowQRcmI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;RDBMS Modeling 기초(인프런, 이교준)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%EA%B4%80%EA%B3%84%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-rdbms&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.inflearn.com/course/%EA%B4%80%EA%B3%84%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-rdbms&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701068961205&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;RDBMS Modeling 기초 - 인프런 | 강의&quot; data-og-description=&quot;본 강좌는 데이터베이스 설계 이론을 실습 위주로 쉽게 풀어냈습니다. 책 등을 통해서 경험하신 분들은 대부분 데이터베이스 이론이 어렵다고 느끼고 포기하신 경험들이 있을 겁니다. 저도 그&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/%EA%B4%80%EA%B3%84%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-rdbms&quot; data-og-url=&quot;https://www.inflearn.com/course/%EA%B4%80%EA%B3%84%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-rdbms&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Qlvez/hyUE4S4vuF/1OXxVFMXzHxDBX4NA0gfIK/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/bLsRVy/hyUFcXStR8/CaHyk3GfKIADUsNEYm5Bzk/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/b134Uv/hyUCgHCcJN/N0XPfRybLMIJlkVFtJksH0/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%EA%B4%80%EA%B3%84%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-rdbms&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/%EA%B4%80%EA%B3%84%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-rdbms&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Qlvez/hyUE4S4vuF/1OXxVFMXzHxDBX4NA0gfIK/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/bLsRVy/hyUFcXStR8/CaHyk3GfKIADUsNEYm5Bzk/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/b134Uv/hyUCgHCcJN/N0XPfRybLMIJlkVFtJksH0/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628');&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;RDBMS Modeling 기초 - 인프런 | 강의&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;www.inflearn.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>DB/DB 모델링</category>
      <category>정규화</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/492</guid>
      <comments>https://gaksitalcoder.tistory.com/492#entry492comment</comments>
      <pubDate>Sat, 25 Nov 2023 13:52:38 +0900</pubDate>
    </item>
    <item>
      <title>[내가 만든 학습그림] 객체를 변환해주는 Object Mapper</title>
      <link>https://gaksitalcoder.tistory.com/490</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Object Mapper.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/stFkn/btsAM6dIPWV/WuKmAGJQkrWMKOKcp0qCrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/stFkn/btsAM6dIPWV/WuKmAGJQkrWMKOKcp0qCrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/stFkn/btsAM6dIPWV/WuKmAGJQkrWMKOKcp0qCrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FstFkn%2FbtsAM6dIPWV%2FWuKmAGJQkrWMKOKcp0qCrK%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;960&quot; height=&quot;540&quot; data-filename=&quot;Object Mapper.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&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;: JSON을 JAVA 혹은 JS객체로, 혹은 JAVA,JS객체를 JSON 객체로 변경할 수 있다. 이를 가능하게해주는 건 Obejct매퍼로 Jackson DataBind 라이브러리를 통해 사용할 수 있다.&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.왜쓰지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 클라이언트, 서버가 통신을 할 때 요구하는 객체가 다르다. 클라이언트는 JSON객체가 필요하지만, 서버는 JAVA객체가 필요하다. Object Mapper는 이러한 문제를 해결해준다. 같은 데이터라도 객체를 자유롭게 사용하게 만들어 데이터 통신을 원할하게 한다.&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;3-1. 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XML&lt;/p&gt;
&lt;pre class=&quot;dust&quot; style=&quot;background-color: #2d2d2d; color: #cccccc; text-align: left;&quot; data-bidi-marker=&quot;true&quot; data-start=&quot;&quot;&gt;&lt;code&gt;&amp;lt;properties&amp;gt; 
	&amp;lt;jackson.version&amp;gt;2.11.2&amp;lt;/jackson.version&amp;gt; 
&amp;lt;/properties&amp;gt;
 
&amp;lt;dependencies&amp;gt;		
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;com.fasterxml.jackson.core&amp;lt;/groupId&amp;gt;
			&amp;lt;artifactId&amp;gt;jackson-databind&amp;lt;/artifactId&amp;gt;
			&amp;lt;version&amp;gt;${jackson.version}&amp;lt;/version&amp;gt;
		&amp;lt;/dependency&amp;gt;
&amp;lt;/dependencies&amp;gt;&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;Gradle&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;background-color: #2d2d2d; color: #cccccc; text-align: left;&quot; data-bidi-marker=&quot;true&quot; data-start=&quot;&quot;&gt;&lt;code&gt;compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.2'&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;</description>
      <category>내가 만든 학습그림</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/490</guid>
      <comments>https://gaksitalcoder.tistory.com/490#entry490comment</comments>
      <pubDate>Fri, 24 Nov 2023 10:15:23 +0900</pubDate>
    </item>
    <item>
      <title>[내가 만든 학습그림] Fetch API와 API Controller의 상호작용</title>
      <link>https://gaksitalcoder.tistory.com/489</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;FetchAPI와 Spring API Controller 흐름.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckVArO/btsAJ2izIEn/PE9UrFsoTgY6UtcLkKQKGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckVArO/btsAJ2izIEn/PE9UrFsoTgY6UtcLkKQKGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckVArO/btsAJ2izIEn/PE9UrFsoTgY6UtcLkKQKGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckVArO%2FbtsAJ2izIEn%2FPE9UrFsoTgY6UtcLkKQKGk%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;960&quot; height=&quot;540&quot; data-filename=&quot;FetchAPI와 Spring API Controller 흐름.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>내가 만든 학습그림</category>
      <category>API Controller</category>
      <category>fetch api</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/489</guid>
      <comments>https://gaksitalcoder.tistory.com/489#entry489comment</comments>
      <pubDate>Thu, 23 Nov 2023 14:35:04 +0900</pubDate>
    </item>
    <item>
      <title>[DB/SQL오답노트] HackerRank Top Competitors</title>
      <link>https://gaksitalcoder.tistory.com/427</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1.문제&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #0e141e; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Julia just finished conducting a coding contest, and she needs your help assembling the leaderboard! Write a query to print the respective&lt;span&gt;&amp;nbsp;&lt;/span&gt;hacker_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;name&lt;span&gt;&amp;nbsp;&lt;/span&gt;of hackers who achieved full scores for&lt;span&gt;&amp;nbsp;&lt;/span&gt;more than one&lt;span&gt;&amp;nbsp;&lt;/span&gt;challenge. Order your output in descending order by the total number of challenges in which the hacker earned a full score. If more than one hacker received full scores in same number of challenges, then sort them by ascending&lt;span&gt;&amp;nbsp;&lt;/span&gt;hacker_id.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #0e141e; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Input Format&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;The following tables contain contest data:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;Hackers:&lt;span&gt;&amp;nbsp;&lt;/span&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;hacker_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the id of the hacker, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;name&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the name of the hacker.&lt;img style=&quot;background-color: #ffffff;&quot; src=&quot;https://blog.kakaocdn.net/dn/K8yji/btsq5ZUXSVr/rdAOK3sKjOBRB3NgwkQA30/img.png&quot; /&gt;&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;Difficulty:&lt;span&gt;&amp;nbsp;&lt;/span&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;difficult_level&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the level of difficulty of the challenge, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;score&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the score of the challenge for the difficulty level.&lt;img style=&quot;background-color: #ffffff;&quot; src=&quot;https://blog.kakaocdn.net/dn/cVSG34/btsq7cNrkU8/ybhc83HGaxGVZVUra7PAoK/img.png&quot; /&gt;&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;Challenges:&lt;span&gt;&amp;nbsp;&lt;/span&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;challenge_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the id of the challenge, the&lt;span&gt;&amp;nbsp;&lt;/span&gt;hacker_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the id of the hacker who created the challenge, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;difficulty_level&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the level of difficulty of the challenge.&lt;img style=&quot;background-color: #ffffff;&quot; src=&quot;https://blog.kakaocdn.net/dn/bsQ35n/btsqZu3ibUR/s4cgDBTOE72vRXow0fRvXK/img.png&quot; /&gt;&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;Submissions:&lt;span&gt;&amp;nbsp;&lt;/span&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;submission_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the id of the submission,&lt;span&gt;&amp;nbsp;&lt;/span&gt;hacker_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the id of the hacker who made the submission,&lt;span&gt;&amp;nbsp;&lt;/span&gt;challenge_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the id of the challenge that the submission belongs to, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;score&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the score of the submission.&lt;img style=&quot;background-color: #ffffff;&quot; src=&quot;https://blog.kakaocdn.net/dn/bsLzTW/btsq0Dr7Vtu/lAu3BE6e4IUuN0NCgaR7h1/img.png&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #0e141e; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sample Input&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Hackers&lt;span&gt;&amp;nbsp;&lt;/span&gt;Table:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;185&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ULe9Q/btsq50TTkKQ/rIMjgRZZf7kJt1v54UZfCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ULe9Q/btsq50TTkKQ/rIMjgRZZf7kJt1v54UZfCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ULe9Q/btsq50TTkKQ/rIMjgRZZf7kJt1v54UZfCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FULe9Q%2Fbtsq50TTkKQ%2FrIMjgRZZf7kJt1v54UZfCk%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;185&quot; height=&quot;402&quot; data-origin-width=&quot;185&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Difficulty&lt;span&gt;&amp;nbsp;&lt;/span&gt;Table:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;199&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uFvvR/btsq2iHrbGp/iNqstDkmUdk9my3GZ3ism1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uFvvR/btsq2iHrbGp/iNqstDkmUdk9my3GZ3ism1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uFvvR/btsq2iHrbGp/iNqstDkmUdk9my3GZ3ism1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuFvvR%2Fbtsq2iHrbGp%2FiNqstDkmUdk9my3GZ3ism1%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;199&quot; height=&quot;295&quot; data-origin-width=&quot;199&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Challenges&lt;span&gt;&amp;nbsp;&lt;/span&gt;Table:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clIDkK/btsrcturmdY/gj80ZUk0yILOlxDTXcHMXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clIDkK/btsrcturmdY/gj80ZUk0yILOlxDTXcHMXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clIDkK/btsrcturmdY/gj80ZUk0yILOlxDTXcHMXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclIDkK%2FbtsrcturmdY%2Fgj80ZUk0yILOlxDTXcHMXk%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;342&quot; height=&quot;223&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Submissions&lt;span&gt;&amp;nbsp;&lt;/span&gt;Table:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M833Z/btsq0FckUj0/UK1DeTHOdQUKBNr6MZxGwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M833Z/btsq0FckUj0/UK1DeTHOdQUKBNr6MZxGwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M833Z/btsq0FckUj0/UK1DeTHOdQUKBNr6MZxGwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM833Z%2Fbtsq0FckUj0%2FUK1DeTHOdQUKBNr6MZxGwk%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;784&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #0e141e; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sample Output&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;basic&quot; style=&quot;background-color: #000000; color: #000000;&quot;&gt;&lt;code&gt;90411 Joe
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #0e141e; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Explanation&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Hacker&lt;span&gt;&amp;nbsp;&lt;/span&gt;86870&lt;span&gt;&amp;nbsp;&lt;/span&gt;got a score of&lt;span&gt;&amp;nbsp;&lt;/span&gt;30&lt;span&gt;&amp;nbsp;&lt;/span&gt;for challenge&lt;span&gt;&amp;nbsp;&lt;/span&gt;71055&lt;span&gt;&amp;nbsp;&lt;/span&gt;with a difficulty level of&lt;span&gt;&amp;nbsp;&lt;/span&gt;2, so&lt;span&gt;&amp;nbsp;&lt;/span&gt;86870&lt;span&gt;&amp;nbsp;&lt;/span&gt;earned a full score for this challenge.&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Hacker&lt;span&gt;&amp;nbsp;&lt;/span&gt;90411&lt;span&gt;&amp;nbsp;&lt;/span&gt;got a score of&lt;span&gt;&amp;nbsp;&lt;/span&gt;30&lt;span&gt;&amp;nbsp;&lt;/span&gt;for challenge&lt;span&gt;&amp;nbsp;&lt;/span&gt;71055&lt;span&gt;&amp;nbsp;&lt;/span&gt;with a difficulty level of&lt;span&gt;&amp;nbsp;&lt;/span&gt;2, so&lt;span&gt;&amp;nbsp;&lt;/span&gt;90411&lt;span&gt;&amp;nbsp;&lt;/span&gt;earned a full score for this challenge.&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Hacker&lt;span&gt;&amp;nbsp;&lt;/span&gt;90411&lt;span&gt;&amp;nbsp;&lt;/span&gt;got a score of&lt;span&gt;&amp;nbsp;&lt;/span&gt;100&lt;span&gt;&amp;nbsp;&lt;/span&gt;for challenge&lt;span&gt;&amp;nbsp;&lt;/span&gt;66730&lt;span&gt;&amp;nbsp;&lt;/span&gt;with a difficulty level of&lt;span&gt;&amp;nbsp;&lt;/span&gt;6, so&lt;span&gt;&amp;nbsp;&lt;/span&gt;90411&lt;span&gt;&amp;nbsp;&lt;/span&gt;earned a full score for this challenge.&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Only hacker&lt;span&gt;&amp;nbsp;&lt;/span&gt;90411&lt;span&gt;&amp;nbsp;&lt;/span&gt;managed to earn a full score for more than one challenge, so we print the their&lt;span&gt;&amp;nbsp;&lt;/span&gt;hacker_id&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;name&lt;span&gt;&amp;nbsp;&lt;/span&gt;as&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;space-separated values.&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;2.구해야 하는 것&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;2-1. Full score(만점)을 받은 챌린지가 2개 이상인 참가자를 찾아야한다.&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;2-2. 만점이란, Submission 테이블의 score값과 Difficulty 테이블의 score값이 일치하는 걸 의미한다.&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;2-3. 문제에서 제시한 2가지 정렬 기준을 만족시키기&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;3.정답&lt;/p&gt;
&lt;pre id=&quot;code_1691969636989&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT H.hacker_id, H.name
FROM Submission S
    INNER JOIN Challenges C ON S.challenge_id = C.challenge_id
    INNER JOIN Difficulty D ON C.difficulty_level = D.difficult_level
    INNER JOIN Hackers H ON S.hacker_id = H.hacker_id
WHERE S.score = D.score AND C.difficulty_level = D.difficulty_level
GROUP BY H.hacker_id, H.name
HAVING COUNT(H.hacker_id)&amp;gt; 1
ORDER BY COUNT(H.hacker_id) DESC, H.hacker_id&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DB/SQL오답노트</category>
      <category>hackerrank</category>
      <category>Top Competitors</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/427</guid>
      <comments>https://gaksitalcoder.tistory.com/427#entry427comment</comments>
      <pubDate>Mon, 14 Aug 2023 08:34:39 +0900</pubDate>
    </item>
    <item>
      <title>[DB/SQL오답노트/HackerRank] Average Population of Each Continent</title>
      <link>https://gaksitalcoder.tistory.com/423</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1.문제&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #0e141e; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;Given the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CITY&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;COUNTRY&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;tables, query the names of all the continents (COUNTRY.Continent) and their respective average city populations (CITY.Population) rounded&lt;span&gt;&amp;nbsp;&lt;/span&gt;down&lt;span&gt;&amp;nbsp;&lt;/span&gt;to the nearest integer.&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;CITY.CountryCode&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;COUNTRY.Code&lt;span&gt;&amp;nbsp;&lt;/span&gt;are matching key columns.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #0e141e; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Input Format&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CITY&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;COUNTRY&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;tables are described as follows:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIgMlP/btsqLvNgPn7/9nz4n6EK8mCRk5UcEHULi0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIgMlP/btsqLvNgPn7/9nz4n6EK8mCRk5UcEHULi0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIgMlP/btsqLvNgPn7/9nz4n6EK8mCRk5UcEHULi0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIgMlP%2FbtsqLvNgPn7%2F9nz4n6EK8mCRk5UcEHULi0%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;365&quot; height=&quot;300&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;300&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;352&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nZSnM/btsqJDyyfx1/yFRPJ0rEoeCVc4kPvoiuoK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nZSnM/btsqJDyyfx1/yFRPJ0rEoeCVc4kPvoiuoK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nZSnM/btsqJDyyfx1/yFRPJ0rEoeCVc4kPvoiuoK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnZSnM%2FbtsqJDyyfx1%2FyFRPJ0rEoeCVc4kPvoiuoK%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;352&quot; height=&quot;600&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&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;p data-ke-size=&quot;size16&quot;&gt;2.내 풀이&lt;/p&gt;
&lt;pre id=&quot;code_1691624624790&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT COUNTRY.Continent, trunc(avg(CITY.population)) 
FROM CITY  JOIN COUNTRY 
ON City.CountryCode = Country.Code&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;3.정답&lt;/p&gt;
&lt;pre id=&quot;code_1691624527473&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT COUNTRY.Continent, floor(avg(CITY.population)) 
FROM CITY  JOIN COUNTRY 
ON City.CountryCode = Country.Code 
group by COUNTRY.Continent;&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;4.내가 문제를 틀린 이유&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소수점 내림 함수 floor를 제대로 알지 못했다.&lt;/li&gt;
&lt;li&gt;문제에서 '대륙별' 평균 정수 값을 구하는 건데 평균과, 버림에만 신경썼지, '대륙별' 단어를 놓쳤다. 당연히 집계함수 avg가 나오면, group by가 나와야 하는데 거기까지 생각이 닿지 못했다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>DB/SQL오답노트</category>
      <category>hackerrank</category>
      <category>join</category>
      <category>SQL</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/423</guid>
      <comments>https://gaksitalcoder.tistory.com/423#entry423comment</comments>
      <pubDate>Thu, 10 Aug 2023 08:47:10 +0900</pubDate>
    </item>
    <item>
      <title>[뉴렉처/자바] ★배열 2023.06.22</title>
      <link>https://gaksitalcoder.tistory.com/368</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.제일 큰 값 찾기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 자리 뺏기&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGkKbp/btskSqkI0SX/O2C2yY79i1q2FrsHzs7u3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGkKbp/btskSqkI0SX/O2C2yY79i1q2FrsHzs7u3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGkKbp/btskSqkI0SX/O2C2yY79i1q2FrsHzs7u3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGkKbp%2FbtskSqkI0SX%2FO2C2yY79i1q2FrsHzs7u3K%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;834&quot; height=&quot;842&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1687396619866&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex06.array.basic;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.Scanner;

public class Program {

	public static void main(String[] args) throws IOException {
		int[] nums = new int[100]; // nums의 출력값 변화를 살펴보자. 그러면 전역변수와 지역변수의 알 수 있다.
		
		int idx = -1; // 우리가 원하는 숫자의 위치를 찾기 위한 변수. 왜 전역변수로 선언됐는지 생각하자.
		int size=0; // 몇번 출력됐는지 확인하기 위해 변수 size를 선언한다. 공유되는 변수. 왜 공유되는지 생각하자.
		
//		1.값 로드하기
		{
			FileInputStream fis = new FileInputStream(&quot;res/array/data.txt&quot;); // 파일을 읽어온다.
			Scanner fscan = new Scanner(fis); // 파일에 적힌 데이터를 읽어온다.
			 
			for(int i=0; fscan.hasNext(); i++) { //배열의 0번째부터 배열에 데이터가 존재하는 위치까지 데이터를 불러온다.
//				String num= sc.next(); //문자열을 불러온다.  
//			    nums[i] = Integer.parseInt(num); // 문자열을 정수로 바꾼다. 
				int num = fscan.nextInt(); //문자열을 불러와 int로 변환시켜 num에 넣는다.
				nums[i] = num; // 배열에 문자열을 넣는다.
				size++; // 반복문을 돌 때 마다 size를 하나씩 증가시켜 배열에 데이터가 몇 개 있는지 알 수 있다.
			}
			
			
			fscan.close();
			fis.close();
		}
		
// 		nums 출력하기
		{
		  for(int i=0; i&amp;lt;size; i++)
			System.out.printf(&quot;%d,&quot;, nums[i]);
		  System.out.println();
		}
		
//		2.위치 찾기
		{
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				int search = nums[i];
//				if(search==90) {
//					System.out.println(&quot;숫자 90은&quot;+&quot; &quot;+idx+&quot;번째 자리에 있지롱!&quot;);
//					break; // break문 까먹지 말자. 이거 까먹으면 출력문만 찍고 계속 반복문 돈다.
//				}
//			}
			
//			break문 사용
			for(int i=0; i&amp;lt;size; i++) {
				idx++;
				if(nums[i]==90) {
					idx = i;
					break;
				}
			}
			System.out.println(&quot;인덱스의 값은&quot;+idx+&quot;입니다.&quot;);
		}
		
//		3.숫자 90과 0번째 위치에 있는 숫자 값 바꾸기
		{
			int tmp; // 빈 공간 하나를 만든다.
			tmp = nums[0]; // 0번째에 있는 숫자를 빈 공간에 넣는다.
			nums[0] = nums[idx]; // 90숫자를 0번째에 넣는다.
			nums[idx] = tmp; //빈공간에 있는 숫자를 숫자 90이 있던 자리에 넣는다.
			System.out.println(nums[0]+&quot; &quot;+nums[idx]);
		}
		
 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★       
		// 제일 큰 값 찾기
		{ 
			int max = nums[0];
			// 2번째(=인덱스 1) 숫자부터 겨루기를 해서 왕좌를 탈환하라.
			// 몇 번의 반복? size-1
			for(int i=0; i&amp;lt;size-1; i++) {
				if(nums[i+1]&amp;gt;max) {
					max = nums[i+1];
				}
			}
			System.out.printf(&quot;max: %d\n&quot;, max);
		}
        
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
		
//		4.파일에 값 저장하기
		{
			FileOutputStream fos = new FileOutputStream(&quot;res/array/dataPrint.txt&quot;); 
			PrintWriter fout2 = new PrintWriter(fos, true, Charset.forName(&quot;UTF-8&quot;));
			
			for(int i=0; i&amp;lt;size; i++) { //반복의 제한을 어떻게 설정할건가?
				fout2.printf(&quot;%d,&quot;,nums[i]);
			}
			
			fos.close();
		}
		
	}
}&lt;/code&gt;&lt;/pre&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;1.2 자리 바꾸기&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxZDcP/btskY9PvkQb/zcrh3zqxvy1phH2EKksXFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxZDcP/btskY9PvkQb/zcrh3zqxvy1phH2EKksXFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxZDcP/btskY9PvkQb/zcrh3zqxvy1phH2EKksXFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxZDcP%2FbtskY9PvkQb%2Fzcrh3zqxvy1phH2EKksXFk%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;806&quot; height=&quot;390&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1687400461578&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex06.array.basic;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.Scanner;

public class Program {

	public static void main(String[] args) throws IOException {
		int[] nums = new int[100]; // nums의 출력값 변화를 살펴보자. 그러면 전역변수와 지역변수의 알 수 있다.
		
		int idx = -1; // 우리가 원하는 숫자의 위치를 찾기 위한 변수. 왜 전역변수로 선언됐는지 생각하자.
		int size=0; // 몇번 출력됐는지 확인하기 위해 변수 size를 선언한다. 공유되는 변수. 왜 공유되는지 생각하자.
		
//		1.값 로드하기
		{
			FileInputStream fis = new FileInputStream(&quot;res/array/data.txt&quot;); // 파일을 읽어온다.
			Scanner fscan = new Scanner(fis); // 파일에 적힌 데이터를 읽어온다.
			 
			for(int i=0; fscan.hasNext(); i++) { //배열의 0번째부터 배열에 데이터가 존재하는 위치까지 데이터를 불러온다.
//				String num= sc.next(); //문자열을 불러온다.  
//			    nums[i] = Integer.parseInt(num); // 문자열을 정수로 바꾼다. 
				int num = fscan.nextInt(); //문자열을 불러와 int로 변환시켜 num에 넣는다.
				nums[i] = num; // 배열에 문자열을 넣는다.
				size++; // 반복문을 돌 때 마다 size를 하나씩 증가시켜 배열에 데이터가 몇 개 있는지 알 수 있다.
			}
			
			
			fscan.close();
			fis.close();
		}
		
//// 		nums 출력하기
//		{
//		  for(int i=0; i&amp;lt;size; i++)
//			System.out.printf(&quot;%d,&quot;, nums[i]);
//		  System.out.println();
//		}
		
//		2.위치 찾기
		{
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				int search = nums[i];
//				if(search==90) {
//					System.out.println(&quot;숫자 90은&quot;+&quot; &quot;+idx+&quot;번째 자리에 있지롱!&quot;);
//					break; // break문 까먹지 말자. 이거 까먹으면 출력문만 찍고 계속 반복문 돈다.
//				}
//			}
			
////			break문 사용
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				if(nums[i]==90) {
//					idx = i;
//					break;
//				}
//			}
//			System.out.println(&quot;인덱스의 값은&quot;+idx+&quot;입니다.&quot;);
		}
		
//		3.숫자 90과 0번째 위치에 있는 숫자 값 바꾸기
//		{
//			int tmp; // 빈 공간 하나를 만든다.
//			tmp = nums[0]; // 0번째에 있는 숫자를 빈 공간에 넣는다.
//			nums[0] = nums[idx]; // 90숫자를 0번째에 넣는다.
//			nums[idx] = tmp; //빈공간에 있는 숫자를 숫자 90이 있던 자리에 넣는다.
//			System.out.println(nums[0]+&quot; &quot;+nums[idx]);
//		}
		
		// 제일 큰 값 찾기
//		{ 
//			int max = nums[0];
//			// 2번째(=인덱스 1) 숫자부터 겨루기를 해서 왕좌를 탈환하라.
//			// 몇 번의 반복? size-1
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[i+1]&amp;gt;max) {
//					max = nums[i+1];
//				}
//			}
//			System.out.printf(&quot;max: %d\n&quot;, max);
//		}
		
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★        
		// 자리 바꾸기 방식으로 큰 값 찾기
		{
			
			for(int i=0; i&amp;lt;size-1; i++) {
				if(nums[i]&amp;gt;nums[i+1]) {
					int temp;
					temp = nums[i];
					nums[i] = nums[i+1];
					nums[i+1] = temp;
				}			
			}
			System.out.printf(&quot;max : %d\n&quot;, nums[size-1]);		
		}
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★        
		
//		4.파일에 값 저장하기
		{
			FileOutputStream fos = new FileOutputStream(&quot;res/array/dataPrint.txt&quot;); 
			PrintWriter fout2 = new PrintWriter(fos, true, Charset.forName(&quot;UTF-8&quot;));
			
			for(int i=0; i&amp;lt;size; i++) { //반복의 제한을 어떻게 설정할건가?
				fout2.printf(&quot;%d,&quot;,nums[i]);
			}
			
			fos.close();
		}
		
	}
}&lt;/code&gt;&lt;/pre&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.1 자리 뺏기&lt;/b&gt;&lt;/p&gt;
&lt;p&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/bvyZj8/btskSSaiKBq/EcnKuJgyZ21Idk1Ap36wNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvyZj8/btskSSaiKBq/EcnKuJgyZ21Idk1Ap36wNK/img.png&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;677&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.16&quot; style=&quot;width: 32.3896%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvyZj8/btskSSaiKBq/EcnKuJgyZ21Idk1Ap36wNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvyZj8%2FbtskSSaiKBq%2FEcnKuJgyZ21Idk1Ap36wNK%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;764&quot; height=&quot;677&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9HWhV/btskSSuChKd/KFdCkV2rsY1hREfPROFMp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9HWhV/btskSSuChKd/KFdCkV2rsY1hREfPROFMp0/img.png&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;674&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.917%; margin-right: 10px;&quot; data-widthpercent=&quot;33.7&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9HWhV/btskSSuChKd/KFdCkV2rsY1hREfPROFMp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9HWhV%2FbtskSSuChKd%2FKFdCkV2rsY1hREfPROFMp0%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;773&quot; height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fqo0t/btskUM8taj6/hfvtTIml2b2Zp47vIR99H1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fqo0t/btskUM8taj6/hfvtTIml2b2Zp47vIR99H1/img.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;681&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.3679%;&quot; data-widthpercent=&quot;33.14&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fqo0t/btskUM8taj6/hfvtTIml2b2Zp47vIR99H1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFqo0t%2FbtskUM8taj6%2FhfvtTIml2b2Zp47vIR99H1%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;768&quot; height=&quot;681&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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/W8dzA/btskT2jiofQ/myZKGTaOq5LKNpCX0VXZ3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W8dzA/btskT2jiofQ/myZKGTaOq5LKNpCX0VXZ3k/img.png&quot; data-origin-width=&quot;775&quot; data-origin-height=&quot;673&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.8192%; margin-right: 10px;&quot; data-widthpercent=&quot;50.41&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W8dzA/btskT2jiofQ/myZKGTaOq5LKNpCX0VXZ3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW8dzA%2FbtskT2jiofQ%2FmyZKGTaOq5LKNpCX0VXZ3k%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;775&quot; height=&quot;673&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm7F15/btskSSVGqo3/ax4eunVI4KAblfGtdy5EOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm7F15/btskSSVGqo3/ax4eunVI4KAblfGtdy5EOK/img.png&quot; data-origin-width=&quot;775&quot; data-origin-height=&quot;684&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.018%;&quot; data-widthpercent=&quot;49.59&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm7F15/btskSSVGqo3/ax4eunVI4KAblfGtdy5EOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm7F15%2FbtskSSVGqo3%2Fax4eunVI4KAblfGtdy5EOK%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;775&quot; height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최초 인덱스는 0번째&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1687403683933&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex06.array.basic;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.Scanner;

public class Program {

	public static void main(String[] args) throws IOException {
		int[] nums = new int[100]; // nums의 출력값 변화를 살펴보자. 그러면 전역변수와 지역변수의 알 수 있다.
		
		int idx = -1; // 우리가 원하는 숫자의 위치를 찾기 위한 변수. 왜 전역변수로 선언됐는지 생각하자.
		int size=0; // 몇번 출력됐는지 확인하기 위해 변수 size를 선언한다. 공유되는 변수. 왜 공유되는지 생각하자.
		
//		1.값 로드하기
		{
			FileInputStream fis = new FileInputStream(&quot;res/array/data.txt&quot;); // 파일을 읽어온다.
			Scanner fscan = new Scanner(fis); // 파일에 적힌 데이터를 읽어온다.
			 
			for(int i=0; fscan.hasNext(); i++) { //배열의 0번째부터 배열에 데이터가 존재하는 위치까지 데이터를 불러온다.
//				String num= sc.next(); //문자열을 불러온다.  
//			    nums[i] = Integer.parseInt(num); // 문자열을 정수로 바꾼다. 
				int num = fscan.nextInt(); //문자열을 불러와 int로 변환시켜 num에 넣는다.
				nums[i] = num; // 배열에 문자열을 넣는다.
				size++; // 반복문을 돌 때 마다 size를 하나씩 증가시켜 배열에 데이터가 몇 개 있는지 알 수 있다.
			}
			
			
			fscan.close();
			fis.close();
		}
		
//// 		nums 출력하기
//		{
//		  for(int i=0; i&amp;lt;size; i++)
//			System.out.printf(&quot;%d,&quot;, nums[i]);
//		  System.out.println();
//		}
		
//		2.위치 찾기
		{
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				int search = nums[i];
//				if(search==90) {
//					System.out.println(&quot;숫자 90은&quot;+&quot; &quot;+idx+&quot;번째 자리에 있지롱!&quot;);
//					break; // break문 까먹지 말자. 이거 까먹으면 출력문만 찍고 계속 반복문 돈다.
//				}
//			}
			
////			break문 사용
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				if(nums[i]==90) {
//					idx = i;
//					break;
//				}
//			}
//			System.out.println(&quot;인덱스의 값은&quot;+idx+&quot;입니다.&quot;);
		}
		
//		3.숫자 90과 0번째 위치에 있는 숫자 값 바꾸기
//		{
//			int tmp; // 빈 공간 하나를 만든다.
//			tmp = nums[0]; // 0번째에 있는 숫자를 빈 공간에 넣는다.
//			nums[0] = nums[idx]; // 90숫자를 0번째에 넣는다.
//			nums[idx] = tmp; //빈공간에 있는 숫자를 숫자 90이 있던 자리에 넣는다.
//			System.out.println(nums[0]+&quot; &quot;+nums[idx]);
//		}
		
		// 제일 큰 값 찾기
//		{ 
//			int max = nums[0];
//			// 2번째(=인덱스 1) 숫자부터 겨루기를 해서 왕좌를 탈환하라.
//			// 몇 번의 반복? size-1
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[i+1]&amp;gt;max) {
//					max = nums[i+1];
//				}
//			}
//			System.out.printf(&quot;max: %d\n&quot;, max);
//		}
		
//		// 자리 바꾸기 방식으로 큰 값 찾기
//		{
//			
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[i]&amp;gt;nums[i+1]) {
//					int temp;
//					temp = nums[i];
//					nums[i] = nums[i+1];
//					nums[i+1] = temp;
//				}			
//			}
//			System.out.printf(&quot;max : %d\n&quot;, nums[size-1]);		
//		}
		

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
//최솟값의 인덱스 찾기
		{
			int minIndex = 0; //최초 인덱스를 설정한다. 최초 인덱스는 0
			for(int i=0; i&amp;lt;size-1; i++) {
				if(nums[minIndex]&amp;gt;nums[i+1]) { // 설정한 인덱스 다음 나오는 데이터가 인덱스에 담긴 값보다 더 작으면 그 값의 인덱스'i+1'를 minIndex에 넣는다.
					minIndex = i+1;
				}
				System.out.println(minIndex);
			}
			System.out.printf(&quot;min index : %d\n&quot;, minIndex);
		}
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
//		4.파일에 값 저장하기
		{
			FileOutputStream fos = new FileOutputStream(&quot;res/array/dataPrint.txt&quot;); 
			PrintWriter fout2 = new PrintWriter(fos, true, Charset.forName(&quot;UTF-8&quot;));
			
			for(int i=0; i&amp;lt;size; i++) { //반복의 제한을 어떻게 설정할건가?
				fout2.printf(&quot;%d,&quot;,nums[i]);
			}
			
			fos.close();
		}
		
	}
}&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;3.정렬하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 버블정렬&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OhRjH/btskY5NReJ3/KYPChx0KCQ7lnd9advkG1k/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OhRjH/btskY5NReJ3/KYPChx0KCQ7lnd9advkG1k/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OhRjH/btskY5NReJ3/KYPChx0KCQ7lnd9advkG1k/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/OhRjH/btskY5NReJ3/KYPChx0KCQ7lnd9advkG1k/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;300&quot; height=&quot;180&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;출처:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bubble_sort&quot;&gt;https://en.wikipedia.org/wiki/Bubble_sort&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre id=&quot;code_1687406988689&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex06.array.basic;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.Scanner;

public class Program {

	public static void main(String[] args) throws IOException {
		int[] nums = new int[100]; // nums의 출력값 변화를 살펴보자. 그러면 전역변수와 지역변수의 알 수 있다.
		
		int idx = -1; // 우리가 원하는 숫자의 위치를 찾기 위한 변수. 왜 전역변수로 선언됐는지 생각하자.
		int size=0; // 몇번 출력됐는지 확인하기 위해 변수 size를 선언한다. 공유되는 변수. 왜 공유되는지 생각하자.
		
//		1.값 로드하기
		{
			FileInputStream fis = new FileInputStream(&quot;res/array/data.txt&quot;); // 파일을 읽어온다.
			Scanner fscan = new Scanner(fis); // 파일에 적힌 데이터를 읽어온다.
			 
			for(int i=0; fscan.hasNext(); i++) { //배열의 0번째부터 배열에 데이터가 존재하는 위치까지 데이터를 불러온다.
//				String num= sc.next(); //문자열을 불러온다.  
//			    nums[i] = Integer.parseInt(num); // 문자열을 정수로 바꾼다. 
				int num = fscan.nextInt(); //문자열을 불러와 int로 변환시켜 num에 넣는다.
				nums[i] = num; // 배열에 문자열을 넣는다.
				size++; // 반복문을 돌 때 마다 size를 하나씩 증가시켜 배열에 데이터가 몇 개 있는지 알 수 있다.
			}
			
			
			fscan.close();
			fis.close();
		}
		
//// 		nums 출력하기
//		{
//		  for(int i=0; i&amp;lt;size; i++)
//			System.out.printf(&quot;%d,&quot;, nums[i]);
//		  System.out.println();
//		}
		
//		2.위치 찾기
		{
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				int search = nums[i];
//				if(search==90) {
//					System.out.println(&quot;숫자 90은&quot;+&quot; &quot;+idx+&quot;번째 자리에 있지롱!&quot;);
//					break; // break문 까먹지 말자. 이거 까먹으면 출력문만 찍고 계속 반복문 돈다.
//				}
//			}
			
////			break문 사용
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				if(nums[i]==90) {
//					idx = i;
//					break;
//				}
//			}
//			System.out.println(&quot;인덱스의 값은&quot;+idx+&quot;입니다.&quot;);
		}
		
//		3.숫자 90과 0번째 위치에 있는 숫자 값 바꾸기
//		{
//			int tmp; // 빈 공간 하나를 만든다.
//			tmp = nums[0]; // 0번째에 있는 숫자를 빈 공간에 넣는다.
//			nums[0] = nums[idx]; // 90숫자를 0번째에 넣는다.
//			nums[idx] = tmp; //빈공간에 있는 숫자를 숫자 90이 있던 자리에 넣는다.
//			System.out.println(nums[0]+&quot; &quot;+nums[idx]);
//		}

//		-------------------------------------------------- 필수 프로그래밍 기법---------------------------------------
		// 제일 큰 값 찾기
//		{ 
//			int max = nums[0];
//			// 2번째(=인덱스 1) 숫자부터 겨루기를 해서 왕좌를 탈환하라.
//			// 몇 번의 반복? size-1
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[i+1]&amp;gt;max) {
//					max = nums[i+1];
//				}
//			}
//			System.out.printf(&quot;max: %d\n&quot;, max);
//		}
		
//		// 자리 바꾸기 방식으로 큰 값 찾기
//		{
//			
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[i]&amp;gt;nums[i+1]) {
//					int temp;
//					temp = nums[i];
//					nums[i] = nums[i+1];
//					nums[i+1] = temp;
//				}			
//			}
//			System.out.printf(&quot;max : %d\n&quot;, nums[size-1]);		
//		}
		
//		//최솟값의 인덱스 찾기
//		{
//			int minIndex = 0; //최초 인덱스를 설정한다. 최초 인덱스는 0
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[minIndex]&amp;gt;nums[i+1]) { // 설정한 인덱스 다음 나오는 데이터가 인덱스에 담긴 값보다 더 작으면 그 값의 인덱스'i+1'를 minIndex에 넣는다.
//					minIndex = i+1;
//				}
//				System.out.println(minIndex);
//			}
//			System.out.printf(&quot;min index : %d\n&quot;, minIndex);
//		}
		
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
		//버블 정렬
		{
			// 1등찾기 -&amp;gt; 비교를 위한 반복횟수 size-1
			// 2등찾기 -&amp;gt; 비교를 위한 반복횟수 size-2
			// n등찾기 -&amp;gt; 비교를 위한 반복횟수 size-n =&amp;gt; 그림을 그려보면 쉽게 알 수 있다.
			
			for(int j=0; j&amp;lt;size-1; j++) // j는 값의 비교를 통해 최종적으로 결정된 숫자로 인해 제외 해야하는 수다. 숫자가 결정됐기에 반복 횟수에서 빠진다(size-1-i)
				for(int i=0; i&amp;lt;(size-1)-j; i++) //size-1은 비교횟수
					if(nums[i]&amp;gt;nums[i+1]) { // 자리를 바꿔 큰 값을 오른쪽으로 보내는 코드
						int temp;
						temp = nums[i];
						nums[i] = nums[i+1];
						nums[i+1] = temp;
					}	
		}
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★		
		
//		4.파일에 값 저장하기
		{
			FileOutputStream fos = new FileOutputStream(&quot;res/array/dataPrint.txt&quot;); 
			PrintWriter fout2 = new PrintWriter(fos, true, Charset.forName(&quot;UTF-8&quot;));
			
			for(int i=0; i&amp;lt;size; i++) { //반복의 제한을 어떻게 설정할건가?
				fout2.printf(&quot;%d,&quot;,nums[i]);
			}
			
			fos.close();
		}
		
	}
}&lt;/code&gt;&lt;/pre&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;3.2 선택정렬&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wsBpV/btskZUzH8Bc/TMUPeyXxl1Zl6ip3VRwjOk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wsBpV/btskZUzH8Bc/TMUPeyXxl1Zl6ip3VRwjOk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wsBpV/btskZUzH8Bc/TMUPeyXxl1Zl6ip3VRwjOk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/wsBpV/btskZUzH8Bc/TMUPeyXxl1Zl6ip3VRwjOk/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;700&quot; height=&quot;400&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;400&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_20230623_113433164.jpg&quot; data-origin-width=&quot;1430&quot; data-origin-height=&quot;696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddUmMO/btsk1y3JIbn/tMg98xs9gtOh9E7FPKqQf1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddUmMO/btsk1y3JIbn/tMg98xs9gtOh9E7FPKqQf1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddUmMO/btsk1y3JIbn/tMg98xs9gtOh9E7FPKqQf1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddUmMO%2Fbtsk1y3JIbn%2FtMg98xs9gtOh9E7FPKqQf1%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;1430&quot; height=&quot;696&quot; data-filename=&quot;KakaoTalk_20230623_113433164.jpg&quot; data-origin-width=&quot;1430&quot; data-origin-height=&quot;696&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_20230623_113433164_01.jpg&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;949&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BfJ37/btsk26yRr9V/u9BQkCsqiPUsKpQuqzqTFK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BfJ37/btsk26yRr9V/u9BQkCsqiPUsKpQuqzqTFK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BfJ37/btsk26yRr9V/u9BQkCsqiPUsKpQuqzqTFK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBfJ37%2Fbtsk26yRr9V%2Fu9BQkCsqiPUsKpQuqzqTFK%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;1372&quot; height=&quot;949&quot; data-filename=&quot;KakaoTalk_20230623_113433164_01.jpg&quot; data-origin-width=&quot;1372&quot; data-origin-height=&quot;949&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_20230623_113433164_02.jpg&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;945&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/looWN/btsk4PjjgYz/TIXDnH0lwgYnnGocDlwESK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/looWN/btsk4PjjgYz/TIXDnH0lwgYnnGocDlwESK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/looWN/btsk4PjjgYz/TIXDnH0lwgYnnGocDlwESK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlooWN%2Fbtsk4PjjgYz%2FTIXDnH0lwgYnnGocDlwESK%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;1420&quot; height=&quot;945&quot; data-filename=&quot;KakaoTalk_20230623_113433164_02.jpg&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;945&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;배열이 끝날 때 까지 반복한다.&lt;/p&gt;
&lt;pre id=&quot;code_1687486770626&quot; class=&quot;awk&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex06.array.basic;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.Scanner;

public class Program {

	public static void main(String[] args) throws IOException {
		int[] nums = new int[100]; // nums의 출력값 변화를 살펴보자. 그러면 전역변수와 지역변수의 알 수 있다.
		
		int idx = -1; // 우리가 원하는 숫자의 위치를 찾기 위한 변수. 왜 전역변수로 선언됐는지 생각하자.
		int size=0; // 몇번 출력됐는지 확인하기 위해 변수 size를 선언한다. 공유되는 변수. 왜 공유되는지 생각하자.
		
//		1.값 로드하기
		{
			FileInputStream fis = new FileInputStream(&quot;res/array/data.txt&quot;); // 파일을 읽어온다.
			Scanner fscan = new Scanner(fis); // 파일에 적힌 데이터를 읽어온다.
			 
			for(int i=0; fscan.hasNext(); i++) { //배열의 0번째부터 배열에 데이터가 존재하는 위치까지 데이터를 불러온다.
//				String num= sc.next(); //문자열을 불러온다.  
//			    nums[i] = Integer.parseInt(num); // 문자열을 정수로 바꾼다. 
				int num = fscan.nextInt(); //문자열을 불러와 int로 변환시켜 num에 넣는다.
				nums[i] = num; // 배열에 문자열을 넣는다.
				size++; // 반복문을 돌 때 마다 size를 하나씩 증가시켜 배열에 데이터가 몇 개 있는지 알 수 있다.
			}
			
			
			fscan.close();
			fis.close();
		}
		
//// 		nums 출력하기
//		{
//		  for(int i=0; i&amp;lt;size; i++)
//			System.out.printf(&quot;%d,&quot;, nums[i]);
//		  System.out.println();
//		}
		
//		2.위치 찾기
		{
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				int search = nums[i];
//				if(search==90) {
//					System.out.println(&quot;숫자 90은&quot;+&quot; &quot;+idx+&quot;번째 자리에 있지롱!&quot;);
//					break; // break문 까먹지 말자. 이거 까먹으면 출력문만 찍고 계속 반복문 돈다.
//				}
//			}
			
////			break문 사용
//			for(int i=0; i&amp;lt;size; i++) {
//				idx++;
//				if(nums[i]==90) {
//					idx = i;
//					break;
//				}
//			}
//			System.out.println(&quot;인덱스의 값은&quot;+idx+&quot;입니다.&quot;);
		}
		
//		3.숫자 90과 0번째 위치에 있는 숫자 값 바꾸기
//		{
//			int tmp; // 빈 공간 하나를 만든다.
//			tmp = nums[0]; // 0번째에 있는 숫자를 빈 공간에 넣는다.
//			nums[0] = nums[idx]; // 90숫자를 0번째에 넣는다.
//			nums[idx] = tmp; //빈공간에 있는 숫자를 숫자 90이 있던 자리에 넣는다.
//			System.out.println(nums[0]+&quot; &quot;+nums[idx]);
//		}

//		-------------------------------------------------- 필수 프로그래밍 기법---------------------------------------
		// 제일 큰 값 찾기
//		{ 
//			int max = nums[0];
//			// 2번째(=인덱스 1) 숫자부터 겨루기를 해서 왕좌를 탈환하라.
//			// 몇 번의 반복? size-1
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[i+1]&amp;gt;max) {
//					max = nums[i+1];
//				}
//			}
//			System.out.printf(&quot;max: %d\n&quot;, max);
//		}
		
//		// 자리 바꾸기 방식으로 큰 값 찾기
//		{
//			
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[i]&amp;gt;nums[i+1]) {
//					int temp;
//					temp = nums[i];
//					nums[i] = nums[i+1];
//					nums[i+1] = temp;
//				}			
//			}
//			System.out.printf(&quot;max : %d\n&quot;, nums[size-1]);		
//		}
		
//		//최솟값의 인덱스 찾기
//		{
//			int minIndex = 0; //최초 인덱스를 설정한다. 최초 인덱스는 0
//			for(int i=0; i&amp;lt;size-1; i++) {
//				if(nums[minIndex]&amp;gt;nums[i+1]) { // 설정한 인덱스 다음 나오는 데이터가 인덱스에 담긴 값보다 더 작으면 그 값의 인덱스'i+1'를 minIndex에 넣는다.
//					minIndex = i+1;
//				}
//				System.out.println(minIndex);
//			}
//			System.out.printf(&quot;min index : %d\n&quot;, minIndex);
//		}
		
		//버블 정렬
//		{
//			// 1등찾기 -&amp;gt; 비교를 위한 반복횟수 size-1
//			// 2등찾기 -&amp;gt; 비교를 위한 반복횟수 size-2
//			// n등찾기 -&amp;gt; 비교를 위한 반복횟수 size-n =&amp;gt; 그림을 그려보면 쉽게 알 수 있다.
//			
//			for(int j=0; j&amp;lt;size-1; j++) // j는 값의 비교를 통해 최종적으로 결정된 숫자로 인해 제외 해야하는 수다. 숫자가 결정됐기에 반복 횟수에서 빠진다(size-1-i)
//				for(int i=0; i&amp;lt;(size-1)-j; i++) //size-1은 비교횟수
//					if(nums[i]&amp;gt;nums[i+1]) { // 자리를 바꿔 큰 값을 오른쪽으로 보내는 코드
//						int temp;
//						temp = nums[i];
//						nums[i] = nums[i+1];
//						nums[i+1] = temp;
//					}	
//		}
		
		//선택정렬
		{
★★★★★★★★★★★★★★★★&amp;lt;선택정렬 일반화 코드&amp;gt;★★★★★★★★★★★★★★★★	
			for(int j=0; j&amp;lt;size-1; j++) {
				{   // step1.최솟값의 인덱스를 찾는다.
					int firstArr=j;// 배열의 첫번 째 위치
					int minIndex = j; //최초 인덱스를 설정한다. 최초 인덱스는 0
					for(int i=0; i&amp;lt;size-1-firstArr; i++) {
						if(nums[minIndex]&amp;gt;nums[i+1+j]) { // 설정한 인덱스 다음 나오는 데이터가 인덱스에 담긴 값보다 더 작으면 그 값의 인덱스'i+1'를 minIndex에 넣는다.
							minIndex = i+1+j;
						}
					}
					
					// step2.최솟값과 첫번째(인덱스0) 자리의 숫자를 바꾼다.
					int tmp;
					tmp = nums[firstArr];
					nums[firstArr] = nums[minIndex];
					nums[minIndex] = tmp;
				}
			}
			
★★★★★★★★★★★★★★★★&amp;lt;선택정렬 이해과정 코드&amp;gt;★★★★★★★★★★★★★★★★
			//1회
			
            // step1.최솟값의 인덱스를 찾는다.
			{   
//				int firstArr=0;// 배열의 첫번 째 위치
//				int minIndex = 0; //최초 인덱스를 설정한다. 최초 인덱스는 0
//				for(int i=0; i&amp;lt;size-1-firstArr; i++) { // size의 범주가 이동하면서 비교하려는 데이터의 수를 넘어선다. 그래서 -firstArr를 한다.
//					if(nums[minIndex]&amp;gt;nums[i+1]) { // 설정한 인덱스 다음 나오는 데이터가 인덱스에 담긴 값보다 더 작으면 그 값의 인덱스'i+1'를 minIndex에 넣는다.
//						minIndex = i+1;
//					}
//				}
//				
//				// step2.최솟값과 첫번째(인덱스0) 자리의 숫자를 바꾼다.
//				int tmp;
//				tmp = nums[firstArr];
//				nums[firstArr] = nums[minIndex];
//				nums[minIndex] = tmp;
//			}
			
			//2회
//			{   // step1.최솟값의 인덱스를 찾는다.
//				int firstArr=1; //1회에서 0번째 값을 처리했으므로(더이상 0번째는 신경x) 2회의 첫번째 배열위치는 1로 설정한다. 
//				int minIndex = 1; //최초 인덱스를 설정한다. 최초 인덱스는 배열의 0번째는 이미 끝났으므로 최초 인덱스는 1
//				for(int i=0; i&amp;lt;size-1-firstArr; i++) { 
//					if(nums[minIndex]&amp;gt;nums[i+2]) { // 설정한 인덱스 다음 나오는 데이터가 인덱스에 담긴 값보다 더 작으면 그 값의 인덱스'i+1'를 minIndex에 넣는다.
//						minIndex = i+2;
//					}
//				}
//				
//				// step2.최솟값과 첫번째(인덱스0) 자리의 숫자를 바꾼다.
//				int tmp;
//				tmp = nums[firstArr];
//				nums[firstArr] = nums[minIndex];
//				nums[minIndex] = tmp;
//			}
//			
//			//3회
//			{   // step1.최솟값의 인덱스를 찾는다.
//				int firstArr=2; //1회와 2회에서 0번째 값을 처리했으므로(더이상 0번째는 신경x) 2회의 첫번째 배열위치는 1로 설정한다. 
//				int minIndex = 2; //최초 인덱스를 설정한다. 최초 인덱스는 배열의 0번째는 이미 끝났으므로 최초 인덱스는 2
//				for(int i=0; i&amp;lt;size-1-firstArr; i++) { 
//					if(nums[minIndex]&amp;gt;nums[i+3]) { // 설정한 인덱스 다음 나오는 데이터가 인덱스에 담긴 값보다 더 작으면 그 값의 인덱스'i+1'를 minIndex에 넣는다.
//						minIndex = i+3;
//					}
//				}
//				
//				// step2.최솟값과 첫번째 자리의 숫자를 바꾼다.
//				int tmp;
//				tmp = nums[firstArr];
//				nums[firstArr] = nums[minIndex];
//				nums[minIndex] = tmp;
//			}
		}
		
		
//		4.파일에 값 저장하기
		{
			FileOutputStream fos = new FileOutputStream(&quot;res/array/dataPrint.txt&quot;); 
			PrintWriter fout2 = new PrintWriter(fos, true, Charset.forName(&quot;UTF-8&quot;));
			
			for(int i=0; i&amp;lt;size; i++) { //배열의 값을 파일에 저장한다.
				fout2.printf(&quot;%d,&quot;,nums[i]);
			}
			
			fos.close();
		}
		
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.느낀점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;배열을 활용한 다양한 문제를 풀어봤다. 문제를 풀면서 가장 많이 막히고 이해가 안갔던 부분은 '인덱스'다. 배열에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;인덱스가 무엇을 의미하고 어떻게 활용되는지 파악하는 게 배열을 활용할 때 중요하게 생각해야할 포인트&lt;/b&gt;&lt;/span&gt;다. 인덱스를 잘못이해하고 설정하면, 프로그래밍이 망가진다.&lt;/p&gt;</description>
      <category>뉴렉처/자바</category>
      <category>국비수업</category>
      <category>뉴렉처</category>
      <author>각시탈코더</author>
      <guid isPermaLink="true">https://gaksitalcoder.tistory.com/368</guid>
      <comments>https://gaksitalcoder.tistory.com/368#entry368comment</comments>
      <pubDate>Thu, 22 Jun 2023 13:11:01 +0900</pubDate>
    </item>
  </channel>
</rss>