<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>느림보 개발</title>
    <link>https://slowrecode.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 15 Jul 2026 13:08:04 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>@르르</managingEditor>
    <item>
      <title>4. 오라클 - MERGE문(1)</title>
      <link>https://slowrecode.tistory.com/52</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;MERGE문도 실무에 많이 활용되기 때문에 정리를 해보려고 한다.&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;* MERGE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 원본 테이블과 조인 결과를 기반으로 대상 테이블에서 INSERT, UPDATE, DELETE 작업을 수행하는 명령어&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;1. 기본 형태&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684658894104&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MERGE
   INTO 테이블1 T 
     USING 
     (테이블2의 SELECT문) S 
        ON 
        (T와 S의 조인 조건) 
      WHEN MATCHED THEN 
        (데이터 변경 실행문)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 예시&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[테이블1] 전체 학생 정보가 담긴 테이블&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684659496533&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE STU (
     &quot;이름&quot; VARCHAR(20)
    ,&quot;학과&quot; VARCHAR(20)
    ,&quot;나이&quot; VARCHAR(20)
    ,&quot;장학금명&quot; VARCHAR(20)
);

INSERT INTO STU VALUES('이우연','연기과','23',NULL);
INSERT INTO STU VALUES('인섭씨','한국어과','20','미정');
INSERT INTO STU VALUES('권재경','스포츠학과','20',NULL);

SELECT * FROM STU;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deT210/btsgD9VaR92/JplcNROmDorqqiVOwqdxyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deT210/btsgD9VaR92/JplcNROmDorqqiVOwqdxyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deT210/btsgD9VaR92/JplcNROmDorqqiVOwqdxyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeT210%2FbtsgD9VaR92%2FJplcNROmDorqqiVOwqdxyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;128&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;128&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;[테이블2] 학생들의&amp;nbsp;장학금&amp;nbsp;정보가&amp;nbsp;있는&amp;nbsp;테이블&lt;/p&gt;
&lt;pre id=&quot;code_1684659530932&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE STU_SH (
    &quot;이름&quot; VARCHAR(20)
   ,&quot;장학금명&quot; VARCHAR(20)
   ,&quot;장학금액수&quot; NUMBER(20)
);

INSERT INTO STU_SH VALUES('인섭씨','성적장학',9999999);
INSERT INTO STU_SH VALUES('권재경','미남장학',9999999);

SELECT * FROM STU_SH;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOsBI/btsgTjaMKSF/0SQnFS52Wjsa2GTRF2pbxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOsBI/btsgTjaMKSF/0SQnFS52Wjsa2GTRF2pbxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOsBI/btsgTjaMKSF/0SQnFS52Wjsa2GTRF2pbxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOsBI%2FbtsgTjaMKSF%2F0SQnFS52Wjsa2GTRF2pbxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;290&quot; height=&quot;109&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;109&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;MERGE&lt;/p&gt;
&lt;pre id=&quot;code_1684659707201&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MERGE 
  INTO STU S
     USING 
     (SELECT 이름,장학금명
        FROM STU_SH
      ) S2
      ON
      (S.이름 = S2.이름
      )
      WHEN MATCHED THEN 
      UPDATE 
      SET S.장학금명 = S2.장학금명; -- S의 장학금명에 S1의 장학금명으로 UPDATE
      
      
      SELECT * FROM STU;&lt;/code&gt;&lt;/pre&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/deT210/btsgD9VaR92/JplcNROmDorqqiVOwqdxyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deT210/btsgD9VaR92/JplcNROmDorqqiVOwqdxyk/img.png&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;128&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.2698%; margin-right: 10px;&quot; data-widthpercent=&quot;48.84&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deT210/btsgD9VaR92/JplcNROmDorqqiVOwqdxyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeT210%2FbtsgD9VaR92%2FJplcNROmDorqqiVOwqdxyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IMsbf/btsgEK8F5hB/QKhsgd016slL67ck8ziQCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IMsbf/btsgEK8F5hB/QKhsgd016slL67ck8ziQCk/img.png&quot; data-origin-width=&quot;326&quot; data-origin-height=&quot;104&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;51.16&quot; style=&quot;width: 50.5674%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IMsbf/btsgEK8F5hB/QKhsgd016slL67ck8ziQCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIMsbf%2FbtsgEK8F5hB%2FQKhsgd016slL67ck8ziQCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;326&quot; height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;MERGE 전 &amp;rarr; 후&amp;nbsp;&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;&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;a href=&quot;https://p-ordinarydays.tistory.com/10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://p-ordinarydays.tistory.com/10&lt;/a&gt;&lt;/p&gt;</description>
      <category>데이터베이스</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/52</guid>
      <comments>https://slowrecode.tistory.com/52#entry52comment</comments>
      <pubDate>Sun, 21 May 2023 18:04:01 +0900</pubDate>
    </item>
    <item>
      <title>3. 오라클 - 레벨링(LEVEL)</title>
      <link>https://slowrecode.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;실무에서 부서 조직간의 계층 구조를 레벨링하여 볼 수 있도록 해달라는 요청이 들어왔다. 팀장님께서 쿼리를 호로록 짜서 보여주시고, 이건 꼭 알아야하는 거라며 강조하셨는데 처음보는 START WITH ~ 와 CONNECT BY PRIOR의 등장에 이해하지 못한체 어리둥절했다  그래서 쉬운 예제를 찾아 정리해보기로 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨링을 하기 위해서는 &lt;b&gt;계층형 쿼리와&lt;/b&gt; 기본적인 용어부터 알고 있으면 이해하기 쉬워진다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size18&quot;&gt;1. 계층형 쿼리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계층 구조를 가진 데이터를 쿼리하고 분석하는데 사용하는 SQL쿼리 &amp;rarr; 트리 구조, 그래프 구조와 같은 데이터를 표현하고, 각 노드 사이의 관계를 검색하고 조작하는데 유용하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EX ) 조직의 부서 계층, 각 부서의 부모-자식 관계 확인 / 제품의 카테고리 : 카테고리, 하위카테고리, 제품 그룹 분석 / 지리적 계층 : 지리 정보를 계층적으로 표현, 지역-하위지역&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;2. 용어&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;노드(NODE)&lt;/b&gt; : 항목 하나하나&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;루트(ROOT)&lt;/b&gt; : 트리 구조에서 가장 위에 있는 노드, 조직도에서의 최상위 노드&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부모(PARENT)&lt;/b&gt; : 트리 구조에서 상위의 있는 노드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;자식(CHILD) &lt;/b&gt;: 부모 아래 있는 노드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;리프(LEAF)&lt;/b&gt; : 가장 하위에 있는 노드&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;3.&lt;span&gt; 예제&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▶ 조직도를 만들 테이블을 생성&lt;/p&gt;
&lt;pre id=&quot;code_1684576590789&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE COMPAY_TEST (
   vNAME VARCHAR(20) -- 이름
  ,NAME_CODE VARCHAR(20) -- 이름코드
  ,PRNT_CODE VARCHAR(20) -- 상위코드 
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▶ 데이터를 삽입&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684576636626&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO COMPAY_TEST VALUES('회장','001',NULL);
INSERT INTO COMPAY_TEST VALUES('부회장','002','001');
INSERT INTO COMPAY_TEST VALUES('경영본부','003','002');
INSERT INTO COMPAY_TEST VALUES('사업본부','004','002');
INSERT INTO COMPAY_TEST VALUES('영업본부','005','002');
INSERT INTO COMPAY_TEST VALUES('경영팀장','006','003');
INSERT INTO COMPAY_TEST VALUES('경영부장','007','006');
INSERT INTO COMPAY_TEST VALUES('경영과장','008','007');
INSERT INTO COMPAY_TEST VALUES('사업팀장','009','004');
INSERT INTO COMPAY_TEST VALUES('사업부장','010','009');
INSERT INTO COMPAY_TEST VALUES('사업과장','011','010');
INSERT INTO COMPAY_TEST VALUES('영업팀장','012','005');
INSERT INTO COMPAY_TEST VALUES('영업부장','013','012');
INSERT INTO COMPAY_TEST VALUES('영업과장','014','013');

COMMIT;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;▶ SELECT 조회&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pD8mo/btsgE73CzgE/ZFW8H1k3IbKklNFvyQS250/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pD8mo/btsgE73CzgE/ZFW8H1k3IbKklNFvyQS250/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pD8mo/btsgE73CzgE/ZFW8H1k3IbKklNFvyQS250/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpD8mo%2FbtsgE73CzgE%2FZFW8H1k3IbKklNFvyQS250%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;308&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1684576658681&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * 
 FROM COMPAY_TEST;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;▶계층적인 SELECT 쿼리 조회&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- LEVEL을 활용하여 계층적으로 표현할 수 있다.&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;493&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1Z3oi/btsgDKHNuSO/UmpsqcxVPEGnFKjLymTBKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1Z3oi/btsgDKHNuSO/UmpsqcxVPEGnFKjLymTBKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1Z3oi/btsgDKHNuSO/UmpsqcxVPEGnFKjLymTBKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1Z3oi%2FbtsgDKHNuSO%2FUmpsqcxVPEGnFKjLymTBKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;493&quot; height=&quot;357&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1684576700123&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
  LEVEL
  , LPAD(' ', 2*(LEVEL-1)) || vNAME AS &quot;계층화이름&quot; -- 계층화 이름
  , NAME_CODE -- 이름 코드 
  , PRNT_CODE -- 상위코드
FROM COMPAY_TEST
START WITH PRNT_CODE IS NULL
CONNECT BY PRIOR NAME_CODE = PRNT_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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;LPAD&lt;/b&gt;는 지정한 길이만큼 왼족부터 특정문자로 채우는 함수 LPAD(&quot;값&quot;, &quot;문자길이&quot;, [&quot;채움문자&quot;])&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;rarr; LEVEL에 따라서 총 문자길이를 지정한다. (회장의 경우 LEVEL이 1이고, 2*(LEVEL-1)의 결과가 0이므로 들여쓰기는 없다. 부회장의 경우 LEVEL이 2이고, 수식의 결과로 2를 가져오기 때문에 총문자의 길이는 2로 잡히고 ' ' (공백)을 넣은 후 vName인 부회장을 붙인다.)&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;  LPAD 의 첫번째 인자가 처음엔 공백이라서 잘 이해가가지 않았는데 공백대신 - 를 넣고 SELECT해보니 어떻게 쓰였는지 이해가 갔다.&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;491&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TRWOj/btsgJ0bzDCn/jnfGtmgVRa4dKoF3K5d1uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TRWOj/btsgJ0bzDCn/jnfGtmgVRa4dKoF3K5d1uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TRWOj/btsgJ0bzDCn/jnfGtmgVRa4dKoF3K5d1uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTRWOj%2FbtsgJ0bzDCn%2FjnfGtmgVRa4dKoF3K5d1uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;491&quot; height=&quot;347&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;347&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;2. &lt;b&gt;START WITH &lt;u&gt;최상위 루트 노드를 지정&lt;/u&gt;&lt;/b&gt;, 최상위 루트 노드인 회장의 부모노드를 NULL이므로 PRNT_CODE IS NULL로 지정&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;rarr; 다른 조건으로 지정하고 싶다면? WHERE 구문과 같이 컬럼 = '값'으로 지정&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684577215715&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;START WITH NAME_CODE = '002'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. &lt;b&gt;CONNECT BY&lt;/b&gt; 부모와 자식노드를 찾아서 연결&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. &lt;b&gt;PRIOR&lt;/b&gt; 이전 레코드에 대한 참조를 만들어 계층적인 관계를 정의, 자식 노드 쪽에 붙여서 작성&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684577437530&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CONNECT BY PRIOR 자식(본인)레코드 = 부모(상위)레코드&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. &lt;b&gt;LEVEL&lt;/b&gt;&amp;nbsp; 트리 내에서 어떤 단계에 있는지 나타내는 값, &lt;b&gt;START WITH&lt;/b&gt;와 &lt;b&gt;CONNECT BY&lt;/b&gt;를 사용하여 부모자식을 연결한 후 LEVEL로 보기 쉽게 계층화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고자료&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗GPT&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://sanbonclass.tistory.com/m/14&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://sanbonclass.tistory.com/m/14&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1684576057298&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[ORACLE] 오라클 LEVEL 계층형쿼리 (START WITH,CONNECT BY 활용)&quot; data-og-description=&quot;계층형 쿼리(Hierarchical Query)란 오라클8버전부터 지원하는 기능중에 하나입니다. 상위데이터부터 하위데이터까지 계층적으로 수직적인 관계를 나타내며 회사 직급이나 유통과정, 기업부터 고객&quot; data-og-host=&quot;sanbonclass.tistory.com&quot; data-og-source-url=&quot;https://sanbonclass.tistory.com/m/14&quot; data-og-url=&quot;https://sanbonclass.tistory.com/14&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cjzrSQ/hySFZVufdW/slVz86bULQjhafG3nlI1e1/img.png?width=703&amp;amp;height=584&amp;amp;face=0_0_703_584,https://scrap.kakaocdn.net/dn/C256U/hySHhUvTak/ugpe5wYyBH0xFCzfnkvpDk/img.png?width=703&amp;amp;height=584&amp;amp;face=0_0_703_584,https://scrap.kakaocdn.net/dn/b0EwuB/hySHfh5qTJ/w4kptFQ6LbiJSix8QTKfN1/img.png?width=750&amp;amp;height=635&amp;amp;face=0_0_750_635&quot;&gt;&lt;a href=&quot;https://sanbonclass.tistory.com/m/14&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://sanbonclass.tistory.com/m/14&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cjzrSQ/hySFZVufdW/slVz86bULQjhafG3nlI1e1/img.png?width=703&amp;amp;height=584&amp;amp;face=0_0_703_584,https://scrap.kakaocdn.net/dn/C256U/hySHhUvTak/ugpe5wYyBH0xFCzfnkvpDk/img.png?width=703&amp;amp;height=584&amp;amp;face=0_0_703_584,https://scrap.kakaocdn.net/dn/b0EwuB/hySHfh5qTJ/w4kptFQ6LbiJSix8QTKfN1/img.png?width=750&amp;amp;height=635&amp;amp;face=0_0_750_635');&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;[ORACLE] 오라클 LEVEL 계층형쿼리 (START WITH,CONNECT BY 활용)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;계층형 쿼리(Hierarchical Query)란 오라클8버전부터 지원하는 기능중에 하나입니다. 상위데이터부터 하위데이터까지 계층적으로 수직적인 관계를 나타내며 회사 직급이나 유통과정, 기업부터 고객&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;sanbonclass.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터베이스</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/51</guid>
      <comments>https://slowrecode.tistory.com/51#entry51comment</comments>
      <pubDate>Sat, 20 May 2023 19:11:32 +0900</pubDate>
    </item>
    <item>
      <title>2. 오라클 - WITH구문(서브쿼리 정의)</title>
      <link>https://slowrecode.tistory.com/50</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WITH&lt;/b&gt;는 &lt;b&gt;서브쿼리를 정의&lt;/b&gt;하고 &lt;b&gt;해당 서브쿼리를 사용하는 쿼리를 작성&lt;/b&gt;할 때 사용하는 구문입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WITH&lt;/b&gt; 구문을 사용하면 &lt;b&gt;서브쿼리의 결과를 재사용&lt;/b&gt;하여 &lt;b&gt;복잡한 쿼리를 간단하게 작성&lt;/b&gt;할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;쿼리의 가독성이 향상되고, 코드를 유지보수하기 쉬워집니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle 9i 버전부터 도입되었으며,&amp;nbsp;&lt;u&gt;Common Table Expression(CTE)&lt;/u&gt; 구문이라고도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684056921240&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH CUSTOMER_SALSES AS (
	SELECT CUSTOMER_ID, SUM(AMOUNT) AS TOTAL_SALES
    FROM ORDERS
    GROUP BY CUSTOMER_ID
)
SELECT CUSTOMERS.NAME, CUSTOMER_SALES.TOTAL_SALES 
FROM CUSTOMERS
JOIN CUSTOMER_SALES 
ON CUSTOMERS.CUSTOMER_ID = CUSTOMER_SALES.CUSTOMER_ID;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CUSTOMER_SALES 라는 이름의 서브쿼리가 정의됩니다. 이 서브쿼리는 ORDERS테이블에서 각 고객의 총 구매액을 계산합니다. 이 서브쿼리를 정의한 후 , CUSTOMERS 테이블과 CUSTOMER_SALES 서브쿼리를 조인하여 각 고객의 이름과 총 구매액을 반환합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WITH 구문을 사용하여 중첩된 쿼리를 피하고, 쿼리의 가독성을 향상시킵니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗GPT&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터베이스</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/50</guid>
      <comments>https://slowrecode.tistory.com/50#entry50comment</comments>
      <pubDate>Sun, 14 May 2023 18:37:47 +0900</pubDate>
    </item>
    <item>
      <title>1. 오라클 - 테이블에 ROLE 부여</title>
      <link>https://slowrecode.tistory.com/49</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;0. ROLE이란?&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한들의 모음(묶음)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;롤 안에 SYSTEM권한, OBJECT권한을 같이 넣을 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CREATE ROLE 권한을 소유한 유저만 생성 가능&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ROLE 내부의 구성이 바뀔 경우 바로 반영된다 &amp;rarr; 권한에 대한 배포가 빠름&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684052993062&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[관리자]
X , Y, Z, N 이 있다. 

CREATE SESSION, CREATE TABLE, CREATE USER - MGR(ROLE 이름) 


각 3명한테 3개의 권한을 부여해야한다. 
또 N이라는 관리자가 새로 오게되면 3개의 권한을 부여해야한다. 
X 관리자가 좌천됐다. 권한을 회수해야한다. 
==&amp;gt; 위 사례를 각각 해야하는 것은 매우 번거롭다. 

MGR이라는 ROLE 안에 3가지 기능을 넣어서 관리자들에게 부여하면 된다. 
권한 회수할때도 MGR ROLE만 회수하면 된다. 

MGR ROLE안에 CREATE VIEW를 더 추가해서 넣으면 이미 MGR을 부여 받은 관리자들에게도 적용된다. 
권한의 배포가 빠르다. (회수동일)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  흐름&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;롤 생성 &amp;rarr; 롤에게 권한 부여(추가) &amp;rarr; 롤을 유저에게 부여&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;#보안&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ROLE을 부여함으로써 사용자가 데이터베이스의 특정 테이블에 직접 접근하는 것을 방지할 수 있습니다. &lt;b&gt;ROLE에 권한을 부여하고, 해당 ROLE을 사용자에게 부여&lt;/b&gt;함으로써 데이터베이스의 보안을 강화시킬 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;#관리 용이성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ROLE을 사용하면 데이터베이스 관리자는 데이터베이스에 액세스 권한을 부여하는 대신&lt;b&gt; ROLE에 권한을 부여하고 해당 ROLE을 여러 사용자에게 부여&lt;/b&gt;할 수 있습니다. 이렇게 함으로써 데이터베이스 관리자는 보안과 권한 관리를 더욱 효율적으로 할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;#유연성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ROLE에 대한 권한을 부여하면 데이터베이스 관리자는 해당&lt;b&gt; ROLE이 소유한 권한을 변경하거나 삭제&lt;/b&gt;할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 새로운 ROLE 생성&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CREATE ROLE문을 사용하여 새로운 ROLE을 생성한다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684050631845&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE ROLE MY_TABLE_ROLE;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. ROLE에 대한 권한 부여&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GRANT문을 사용하여 ROLE에 권한을 부여합니다. 예를 들어 MY_TABLE_ROLE에 SELECT, INSERT, UPDATE, DELETE 권한을 부여하여 다음과 같이 작성합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MY_TABLE은 부여할 권한이 있는 테이블 이름입니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684050721803&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GRANT SELECT, INSERT, UPDATE, DELETE ON MY_TABLE TO MY_TABLE_ROLE;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 사용자에게 ROLE 부여&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ROLE을 사용자에게 부여하여 해당 사용자에게 해당 ROLE을 부여할 수 있습니다. 예를 들어 MY_USER 사용자에게 MY_TABE_ROLE을 부여하려면 다음과 같이 작성합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 MY_USER 사용자는 MY_TABLE_ROLE에 부여된 SELECT, INSERT, UPDATE,DELETE 권한을 사용하여 MY_TABLE테이블을 조작할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684051208010&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GRANT MY_TABLE_ROLE TO MY_USER;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. USER_ROLE_PRIVS&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용자에게 부여된 롤에 대한 정보를 보여줌&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1684053121875&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DESC USER_ROLE_PRIVS;

SELECT *
FROM USER_ROLE_PRIVS;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[USER_ROLE_PRIVS 구조]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAf1yQ/btsfdaIyKSr/f8B98iCcssdWDMy3c2CKpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAf1yQ/btsfdaIyKSr/f8B98iCcssdWDMy3c2CKpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAf1yQ/btsfdaIyKSr/f8B98iCcssdWDMy3c2CKpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAf1yQ%2FbtsfdaIyKSr%2Ff8B98iCcssdWDMy3c2CKpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;372&quot; height=&quot;202&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[SELECT 결과]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;553&quot; data-origin-height=&quot;85&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/etBHXx/btsfpeCOTMZ/pEjRRIzAgx7PBldzMBf8lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/etBHXx/btsfpeCOTMZ/pEjRRIzAgx7PBldzMBf8lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/etBHXx/btsfpeCOTMZ/pEjRRIzAgx7PBldzMBf8lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FetBHXx%2FbtsfpeCOTMZ%2FpEjRRIzAgx7PBldzMBf8lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;553&quot; height=&quot;85&quot; data-origin-width=&quot;553&quot; data-origin-height=&quot;85&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MGR , MY_TABLE_ROLE(ROLE)안에 뭐가 들어 있는건지 확인하고 싶다면?&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1684053396729&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DESC ROLE_SYS_PRIVS; 

SELECT *
FROM ROLE_SYS_PRIVS
-- WHERE ROLE='MY_TABLE_ROLE'
;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[ROLE_SYS_PRIVS 구조]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPKYbW/btsfOJocmrj/zJc0IQPO6RHhNa96RFvKvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPKYbW/btsfOJocmrj/zJc0IQPO6RHhNa96RFvKvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPKYbW/btsfOJocmrj/zJc0IQPO6RHhNa96RFvKvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPKYbW%2FbtsfOJocmrj%2FzJc0IQPO6RHhNa96RFvKvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;166&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[SELECT 결과]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;203&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dv2XOs/btsfOJ9yChe/ayqh8OOqAfBFEOok9DFOoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dv2XOs/btsfOJ9yChe/ayqh8OOqAfBFEOok9DFOoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dv2XOs/btsfOJ9yChe/ayqh8OOqAfBFEOok9DFOoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdv2XOs%2FbtsfOJ9yChe%2Fayqh8OOqAfBFEOok9DFOoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;203&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;203&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. ROLE안에 SYSTEM, OBJECT 권한이 섞여서 존재할 수 있다. 그럴 경우에는 ROLE_TAB_PRIVS, ROLE_SYS_PRIVS에서 각각 조회하면 된다.&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[USER_TAB_PRIVS 구조]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8Gkyf/btsfCtsxPsB/Gx8zP9J8YlwqWvxSUMC1BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8Gkyf/btsfCtsxPsB/Gx8zP9J8YlwqWvxSUMC1BK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8Gkyf/btsfCtsxPsB/Gx8zP9J8YlwqWvxSUMC1BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8Gkyf%2FbtsfCtsxPsB%2FGx8zP9J8YlwqWvxSUMC1BK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;390&quot; height=&quot;224&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;224&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;[USER_ROLE_PRIVS 구조]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqqjk9/btsfeAGJO6m/2hI4DyqcGVcpoJAyAekQj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqqjk9/btsfeAGJO6m/2hI4DyqcGVcpoJAyAekQj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqqjk9/btsfeAGJO6m/2hI4DyqcGVcpoJAyAekQj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbqqjk9%2FbtsfeAGJO6m%2F2hI4DyqcGVcpoJAyAekQj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;372&quot; height=&quot;202&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;202&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자료출처&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부산 아이티윌 데이터베이스 선생님&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗GPT&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터베이스</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/49</guid>
      <comments>https://slowrecode.tistory.com/49#entry49comment</comments>
      <pubDate>Sun, 14 May 2023 17:42:51 +0900</pubDate>
    </item>
    <item>
      <title>0. 카테고리 소개</title>
      <link>https://slowrecode.tistory.com/48</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 프로젝트에서는 배치팀에 배정 받아 주로 데이터베이스를 다루게 되었는데,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;막상 업무에 들어가보니 실무는 기존에 알고 있었던 것, 학원에서 배웠던 것들과는 상당히 달랐다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아직 초반부인데도 배워야할게 많아 보였다. 그래서 나름 열심히 포스팅을 했었던 티스토리를 다시 찾아와&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;되도록 주말에 꼭 한 포스팅 이상 작성해보려고 한다. 나중에 돌이켜보면 어떤 걸 배워왓구나, 여기서 어떤 걸 보완하면 되겠네? 라며 부족한 부분을 더 채워나갈 수 있을거라고 생각하기 때문이다! 아무튼 카테고리 생성 이유에 대해 밝히고 , 다시 열심히 공부를 시작해보겠다 ~!!!&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터베이스</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/48</guid>
      <comments>https://slowrecode.tistory.com/48#entry48comment</comments>
      <pubDate>Sun, 14 May 2023 16:48:13 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 lev0 - 짝수 홀수 개수</title>
      <link>https://slowrecode.tistory.com/47</link>
      <description>&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;1029&quot; data-origin-height=&quot;968&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxMF32/btr07AfqFIa/4kdRKfxeo1SrSksCa4JmD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxMF32/btr07AfqFIa/4kdRKfxeo1SrSksCa4JmD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxMF32/btr07AfqFIa/4kdRKfxeo1SrSksCa4JmD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxMF32%2Fbtr07AfqFIa%2F4kdRKfxeo1SrSksCa4JmD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1029&quot; height=&quot;968&quot; data-origin-width=&quot;1029&quot; data-origin-height=&quot;968&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  작성한 답&lt;span&gt;&amp;nbsp;&lt;/span&gt; &lt;/h3&gt;
&lt;pre id=&quot;code_1674052710126&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
        public int[] solution(int[] num_list) {
            int[] answer = new int[2]; // 배열은 두칸만 있으면 된다.
            int even = 0;
            int odd = 0;
            int length = num_list.length;
            for(int i = 0; i&amp;lt;length; i++){
                if(num_list[i] % 2 == 0) {
                    // 짝수
                    even++;
                    answer[0]= even;
                } else
                    // 홀수
                    odd++;
                    answer[1] = odd;

            }

            return answer;
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  풀이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과 출력 형식이 인덱스[0]에 짝수 인덱스[1]에 홀수이므로 배열에 있는 요소를 차례대로 꺼내오 if문을 통해 짝수와 홀수를 판별한뒤 선언한 even, odd변수를 증감연산자를 통해 카운팅해주어 배열에 저장한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brOWrA/btr1beXr96a/00iPZKFpb6AMC8myXBYVr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brOWrA/btr1beXr96a/00iPZKFpb6AMC8myXBYVr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brOWrA/btr1beXr96a/00iPZKFpb6AMC8myXBYVr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrOWrA%2Fbtr1beXr96a%2F00iPZKFpb6AMC8myXBYVr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;855&quot; height=&quot;453&quot; data-origin-width=&quot;855&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;통과  &lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더 좋은 코드와 개선점이 있다면 부담없이 알려주세요 :O&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;감사합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120824&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120824&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677543675322&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120824&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/s3pFo/hyRMzWwQoc/pjIkFJggOoPLNP5NYlIJ51/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/K90RU/hyRMnPhslJ/SzDGgVmZ3kEFuv9uIgFqj0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120824&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120824&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/s3pFo/hyRMzWwQoc/pjIkFJggOoPLNP5NYlIJ51/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/K90RU/hyRMnPhslJ/SzDGgVmZ3kEFuv9uIgFqj0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩 테스트/프로그래머스</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/47</guid>
      <comments>https://slowrecode.tistory.com/47#entry47comment</comments>
      <pubDate>Tue, 28 Feb 2023 09:21:22 +0900</pubDate>
    </item>
    <item>
      <title>컬렉션 프레임워크 - ArrayList</title>
      <link>https://slowrecode.tistory.com/46</link>
      <description>&lt;h2 data-ke-size=&quot;size16&quot;&gt;컬렉션 프레임워크&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 군(=다수의 데이터)을 저장하는 클래스들을 표준화한 설계 를 뜻한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.1 컬렉션 프레임워크의 핵심 인터페이스&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컬렉션 프레임워크에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 칼렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의했다. List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의했다. Map인터페이스는 이들과는 전혀 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함되지 못했다. &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 인터페이스? 객체 생성을 위한 설계도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 다중 상속 지원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;인터페이스&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;List&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;순서가 있는 데이터의 집합, 데이터의 중복을 허용한다. 예) 대기자 명단&lt;br /&gt;구현 클래스 : ArrayList, LinkedList, Stack, Vector&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Set&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다.&amp;nbsp; 예) 양의 정수 집합, 소수의 집합&lt;br /&gt;구현 클래스 : HashSet, TreeSet&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Map&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;키와 값의 쌍으로 이루어진 데이터의 집합, 순서는 유지되지 않으며, 키는 중복허용하지 않고, 값은 중복 허용한다.&amp;nbsp;&lt;br /&gt;예) 우편번호, 지역번호(전화번호)&lt;br /&gt;구현 클래스 : HashMap, TreeMap, HashTable, Properties&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;key란, 데이터 집합 중에서 어떤 값을 찾는데 열쇠가 된다는 의미에서 붙여진 이름이다. 그래서 키(key)는 중복 허용하지 않는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.2 ArrayList&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션 클래스일 것이다. ArrayList는&lt;b&gt; List인터페이스를 구현&lt;/b&gt;하기 때문에 데이터의 저장 순서가 유지되고 중복을 허용하는 특징을 갖는다. Vector를 개선한 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ArrayList는 Object 배열을 이용해서 데이터를 순차적으로 저장한다. 예를 들면, 첫 번째로 저장한 객체는 Object의 0번째 위치에 저장되고 그 다음에 저장하는 객체는 1번째 위치에 저장된다. 이런 식으로 계속 배열에 순서대로 저장되며, 배열에 더 이상 저장할 공간이 없으면 큰 새로운 배열을 생성해서 기존의 배열에 저장된 내용을 새로운 배열로 복사한 다음에 저장한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1677503600786&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable {
	...
    transient Object[] elementData; // Object 배열
	...
}&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;위 코드는 ArrayList의 소스코드 일부인데 ArrayList는 elementData라는 이름의 Objet배열을 멤버변수로 선언하고 있다는 것을 알 수 있다. 선언된 배열의 타입이 모든 객체의 최고 조상인 Object이기 때문에 모든 종류의 객체를 담을 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;list2의 각 요소에 접근하기 위해 get 메서드와 for문을 사용하였는데 for문의 변수 i를 0부터 증가시킨 것이 아니라 'list2.size()-1' 부터 감소시키면서 거꾸로 반복 시켰다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만일 변수 i를 증가시켜가며 삭제하면 한 요소가 삭제할 때마다 빈 공간을 채우기 위해 나머지 요소들이 자리이동을 하기 때문에 올바른 결과를 얻을 수 없다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1677545672019&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ch11;

import java.sql.Array;
import java.util.ArrayList;
import java.util.Collections;

public class ArrayListEx1 {
    public static void main(String[] args) {
        ArrayList list1 = new ArrayList(10);
        list1.add(new Integer(5));
        list1.add(new Integer(4));
        list1.add(new Integer(2));
        list1.add(new Integer(0));
        list1.add(new Integer(1));
        list1.add(new Integer(3));

        ArrayList list2 = new ArrayList(list1.subList(1,4)); // 인덱스1부터 인덱스3까지!!!
        // 4 2 0
        System.out.println(&quot;list1 : &quot;+list1+&quot; ///// list2: &quot;+list2);

        Collections.sort(list1); //list1과 list2를 정렬한다.
        Collections.sort(list2);
        System.out.println(&quot;list1 : &quot;+list1+&quot; ///// list2: &quot;+list2);

        System.out.println(&quot;list1.containsAll(list2) : &quot;+list1.containsAll(list2)); // true?

        list2.add(&quot;B&quot;);
        list2.add(&quot;C&quot;);
        list2.add(3,&quot;A&quot;);
        System.out.println(&quot;list1 : &quot;+list1+&quot; ///// list2: &quot;+list2); // 0 2 4 A B C

        list2.set(3, &quot;AA&quot;);
        System.out.println(&quot;list1 : &quot;+list1+&quot; ///// list2: &quot;+list2); // 0 2 4 AA B C

        // list1에서 list2와 겹치는 부분만 나기고 나머지는 삭제
        System.out.println(&quot;list1.retainAll(list2) : &quot;+list1.retainAll(list2));
        System.out.println(&quot;list1 : &quot;+list1+&quot; ///// list2: &quot;+list2); // 0 2 4 , 0 2 4 AA B C

        // list2에서 list1에 포함된 객체들을 삭제한다.
        for (int i = list2.size()-1; i &amp;gt;= 0 ; i--) {
            if(list1.contains(list2.get(i)))
                list2.remove(i);
        }
        System.out.println(&quot;list1 : &quot;+list1+&quot; ///// list2: &quot;+list2); // AA B C

    } // main 끝

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;긴 문자열 데이터를 원하는 길이로 잘라서 ArrayList에 담아 출력하는 예제이다.&lt;/li&gt;
&lt;li&gt;ArrayList를 생성할 때, 저장할 요소의 개수를 고려해서 실제 저장할 개수보다 약간 여유 있는 크기로 하는 것이 좋다. 생성할 때 지정한 크기보다 더 많은 객체를 저장하면 자동적으로 크기가 늘어나기는 처리시간이 많이 소요되기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1677547475977&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ch11;

import java.util.ArrayList;
import java.util.List;

public class ArrayListEx2 {
    public static void main(String[] args) {
        final int LIMIT = 10; // 자르고자 하는 글자의 개수를 지정한다. 4
        String source = &quot;0123456789abcdefghijABCDEFGHIJ!@#$%^&amp;amp;*()ZZZ&quot;;
        int length = source.length();

        List list = new ArrayList(length/LIMIT + 10); // 크기를 약간 여유 있게 잡는다.

        for (int i = 0; i &amp;lt; length; i+=LIMIT) { // i = i+LIMIT
            if(i+LIMIT &amp;lt; length){ // i+10 이 소스 길이보다 작을 때
                list.add(source.substring(i,i+LIMIT)); // i부터 LIMIT까지 잘라 list에 추가
            } else
                list.add(source.substring(i)); // 인데스 i부터 뒤에 요소 모두 출력
        }
        for (int i = 0; i &amp;lt; list.size(); i++) {
            System.out.println(list.get(i));
        }
    } // main()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제&lt;/p&gt;
&lt;pre id=&quot;code_1677547621972&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ch11;

import java.util.Vector;


public class VectorEx1 {
    public static void main(String[] args) {
        Vector v = new Vector(5); // 용량이 5인 Vector를 생성한다.
        v.add(&quot;1&quot;);
        v.add(&quot;2&quot;);
        v.add(&quot;3&quot;);
        System.out.println(v);
        System.out.println(&quot;size : &quot;+v.size()); // 3
        System.out.println(&quot;capacity : &quot;+v.capacity()); // 5


        v.trimToSize(); // 빈 공간을 없앤다. (용량과 크기가 같아진다)
        System.out.println(&quot;====After trimToSize() ====&quot;);
        System.out.println(v);
        System.out.println(&quot;size : &quot;+v.size()); // 3
        System.out.println(&quot;capacity : &quot;+v.capacity()); // 3

        v.ensureCapacity(6);
        System.out.println(&quot;====After ensureCapacity(6) ====&quot;);
        System.out.println(v);
        System.out.println(&quot;size : &quot;+v.size()); // 3
        System.out.println(&quot;capacity : &quot;+v.capacity()); // 6


        v.setSize(7);
        System.out.println(&quot;====After setSize(7) ====&quot;);
        System.out.println(v);
        System.out.println(&quot;size : &quot;+v.size()); // 7
        System.out.println(&quot;capacity : &quot;+v.capacity()); // 12 ==&amp;gt; 13이 아니라고?

        v.clear();
        System.out.println(&quot;====After clear() ====&quot;);
        System.out.println(v);
        System.out.println(&quot;size : &quot;+v.size()); // 0
        System.out.println(&quot;capacity : &quot;+v.capacity()); // 12


    }

    public static void print(Vector v) {
        System.out.println(v);
        System.out.println(&quot;size : &quot;+v.size()); 
        System.out.println(&quot;capacity : &quot;+v.capacity());
    }


}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p 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;a href=&quot;http://www.tcpschool.com/java/java_polymorphism_interface&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.tcpschool.com/java/java_polymorphism_interface&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677504345489&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;코딩교육 티씨피스쿨&quot; data-og-description=&quot;4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등&quot; data-og-host=&quot;tcpschool.com&quot; data-og-source-url=&quot;http://www.tcpschool.com/java/java_polymorphism_interface&quot; data-og-url=&quot;http://tcpschool.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/OPkop/hyRKSwmj5F/7ml09Qiv6kDKdPKR5TZpkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://www.tcpschool.com/java/java_polymorphism_interface&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.tcpschool.com/java/java_polymorphism_interface&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/OPkop/hyRKSwmj5F/7ml09Qiv6kDKdPKR5TZpkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;코딩교육 티씨피스쿨&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;tcpschool.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기초</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/46</guid>
      <comments>https://slowrecode.tistory.com/46#entry46comment</comments>
      <pubDate>Mon, 27 Feb 2023 22:26:09 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 lev0 - 배열 원소의 길이</title>
      <link>https://slowrecode.tistory.com/45</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;1101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjyaAr/btr1dcraYYO/tWhblw0wdJO6zegmbUtJqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjyaAr/btr1dcraYYO/tWhblw0wdJO6zegmbUtJqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjyaAr/btr1dcraYYO/tWhblw0wdJO6zegmbUtJqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjyaAr%2Fbtr1dcraYYO%2FtWhblw0wdJO6zegmbUtJqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1007&quot; height=&quot;1101&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;1101&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;h3 data-ke-size=&quot;size23&quot;&gt;  작성한 답&lt;span&gt;&amp;nbsp;&lt;/span&gt; &lt;/h3&gt;
&lt;pre id=&quot;code_1674052710126&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(String[] strlist) {
        int[] answer = new int[strlist.length];
        int length = strlist.length;
        for(int i = 0; i&amp;lt;length; i++){
           answer[i] = strlist[i].length(); 
        }
              
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  풀이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열 원소의 길이를 저장할 정수형 배열을 strlist의 길이와 같은 크기로 선언한다. 문자열 배열의 길이를 추출하여 정수형 배열 for문을 돌릴때 사용할 수 있도록 한다. strlist에서 원소를 차례대로 꺼내어 길이를 알아내는 함수를 사용한 뒤 정수형 배열에 저장해준다.&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;&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;773&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T2sUr/btr0JOMVtwv/8YyxDQHLI2hlSJevs3pQIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T2sUr/btr0JOMVtwv/8YyxDQHLI2hlSJevs3pQIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T2sUr/btr0JOMVtwv/8YyxDQHLI2hlSJevs3pQIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT2sUr%2Fbtr0JOMVtwv%2F8YyxDQHLI2hlSJevs3pQIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;404&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;통과  &lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더 좋은 코드와 개선점이 있다면 부담없이 알려주세요 :O&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;감사합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120854?language=java&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120854?language=java&lt;/a&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://slowrecode.tistory.com/45</guid>
      <comments>https://slowrecode.tistory.com/45#entry45comment</comments>
      <pubDate>Mon, 27 Feb 2023 17:06:15 +0900</pubDate>
    </item>
    <item>
      <title>5. 404에러 not found</title>
      <link>https://slowrecode.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;  실습을 하면서 404에러를 보게 되어 어떤 원인으로 인해 발생하였는지 정확히 알고자 포스팅하게 되었다. 찾아보니 404 에러를 만나게 된다면 url을 다시 확인하는게 방법이겠다 !&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size16&quot;&gt;404 not found&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;국내에서는 &quot;웹 페이지를 표시할 수 없습니다. &quot; 와 같은 안내 메시지가 표시 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;* 왜 발생하는가?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해당 오류는 서버 자체는 존재하지만 서버에서 요청한 것을 찾을 수 없을 때&lt;/b&gt; 나타난다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;보통 HTTP에서 사용자가 요청하는 페이지나 파일을 찾을 수 없을 때&lt;/b&gt; 가장 많이 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 &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;h4 data-ke-size=&quot;size20&quot;&gt;* 404 에러 해결 방법&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확한 주소를 입력했는지 확인 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 웹사이트의 루트 주소(원 도메인 주소까지)를 입력해 접속해 본다.&amp;nbsp;&lt;/p&gt;</description>
      <category>기초</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/44</guid>
      <comments>https://slowrecode.tistory.com/44#entry44comment</comments>
      <pubDate>Wed, 22 Feb 2023 17:09:35 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 lev0 - 문자열 뒤집기</title>
      <link>https://slowrecode.tistory.com/43</link>
      <description>&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;1039&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGpAds/btr0n8wrKOY/36vkTw85t5r59b1Z3uBKDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGpAds/btr0n8wrKOY/36vkTw85t5r59b1Z3uBKDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGpAds/btr0n8wrKOY/36vkTw85t5r59b1Z3uBKDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGpAds%2Fbtr0n8wrKOY%2F36vkTw85t5r59b1Z3uBKDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1039&quot; height=&quot;1108&quot; data-origin-width=&quot;1039&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  작성한 답&lt;span&gt;&amp;nbsp;&lt;/span&gt; &lt;/h3&gt;
&lt;pre id=&quot;code_1674052710126&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; class Solution {
        public String solution(String my_string) {
            StringBuffer answer = new StringBuffer(my_string);
            String a = answer.reverse().toString();
            return a;
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  풀이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuffer 객체를 활용하여 reverse() 함수를 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;809&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOU4Ku/btr0fUNwRGd/Zp8qD78U2EJ3XkL3ieHGqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOU4Ku/btr0fUNwRGd/Zp8qD78U2EJ3XkL3ieHGqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOU4Ku/btr0fUNwRGd/Zp8qD78U2EJ3XkL3ieHGqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOU4Ku%2Fbtr0fUNwRGd%2FZp8qD78U2EJ3XkL3ieHGqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;809&quot; height=&quot;450&quot; data-origin-width=&quot;809&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;통과  &lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;더 좋은 코드와 개선점이 있다면 부담없이 알려주세요 :O&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;감사합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120822?language=java&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120822?language=java&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1677041819716&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120822?language=java&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bhmhiY/hyRIqFcA1s/4YQakXGAQ1UTKa7JtndK61/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/pF6RK/hyRIpM4g2m/kvQtquHijpKdPIW5blY4Zk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120822?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120822?language=java&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bhmhiY/hyRIqFcA1s/4YQakXGAQ1UTKa7JtndK61/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/pF6RK/hyRIpM4g2m/kvQtquHijpKdPIW5blY4Zk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩 테스트/프로그래머스</category>
      <author>@르르</author>
      <guid isPermaLink="true">https://slowrecode.tistory.com/43</guid>
      <comments>https://slowrecode.tistory.com/43#entry43comment</comments>
      <pubDate>Wed, 22 Feb 2023 13:57:22 +0900</pubDate>
    </item>
  </channel>
</rss>