<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://hyen43.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://hyen43.github.io/" rel="alternate" type="text/html" /><updated>2021-11-01T04:47:17+00:00</updated><id>https://hyen43.github.io/feed.xml</id><title type="html">NaHyun’s Tech Blog</title><subtitle>Hi, I'm NaHyun Lee who is front-end developer</subtitle><author><name>NaHyun Lee</name></author><entry><title type="html">TIL11: [알고리즘] 직사각형 별찍기</title><link href="https://hyen43.github.io/algorithm/post-TIL11/" rel="alternate" type="text/html" title="TIL11: [알고리즘] 직사각형 별찍기" /><published>2021-11-01T00:00:00+00:00</published><updated>2021-11-01T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL11</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL11/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.&lt;br /&gt;
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;table&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
		&lt;td&gt;입력&lt;/td&gt;
		&lt;td&gt;출력&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;5 3&lt;/td&gt;
		&lt;td&gt;*****&lt;br /&gt;
*****&lt;br /&gt;
*****&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;나의-풀이&quot;&gt;나의 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;process.stdin.setEncoding('utf8');
process.stdin.on('data', data =&amp;gt; {
    const n = data.split(&quot; &quot;);
    const a = Number(n[0]), b = Number(n[1]);
    let star = `${&quot;*&quot;.repeat(a)}\n`
    let starB = star.repeat(b)
    console.log(starB)

    });
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;string.repeat&lt;/code&gt;과 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\n&lt;/code&gt;을 활용해 줄바꿈이 되는 가로줄 별을 만든다.&lt;br /&gt;
2)  다시 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;string.repeat&lt;/code&gt;을 화룡해 세로줄을 만들고 반환한다.&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;다른사람의-풀이&quot;&gt;다른사람의 풀이&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;process.stdin.setEncoding('utf8');
process.stdin.on('data', data =&amp;gt; {
    const n = data.split(&quot; &quot;);
    const a = Number(n[0]), b = Number(n[1]);
let result = &quot;&quot;;

for (let i = 0; i &amp;lt; b; i++) {
    for (let j = 0; j &amp;lt; a; j++) {
        result += '*';
    }
    result += '\n'
}
console.log(result);
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;1) 반복문을 2번 돌려 별모양을 만든다.&lt;br /&gt;
2) 반복되는 개수만큼 “*“을 그리고 그 뒤에 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\n&lt;/code&gt;으로 줄바꿈을 붙인 뒤 세로줄만큼으로 반복한다.&lt;br /&gt;&lt;/p&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.</summary></entry><entry><title type="html">TIL10: [알고리즘] 핸드폰 번호 가리기</title><link href="https://hyen43.github.io/algorithm/post-TIL10/" rel="alternate" type="text/html" title="TIL10: [알고리즘] 핸드폰 번호 가리기" /><published>2021-10-26T00:00:00+00:00</published><updated>2021-10-26T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL10</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL10/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.&lt;br /&gt;
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;table&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
		&lt;td&gt;phone_number&lt;/td&gt;
		&lt;td&gt;return&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&quot;01033334444&quot;&lt;/td&gt;
		&lt;td&gt;&quot;*******4444&quot;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&quot;027778888&quot;&lt;/td&gt;
		&lt;td&gt;&quot;*****8888&quot;&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;나의-풀이&quot;&gt;나의 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(phone_number) {
    const frontNum = phone_number.split('').slice(0,phone_number.length-4);
    const backNum = phone_number.split('').slice(phone_number.length-4);
    const replaceNotANumber = frontNum.map((el) =&amp;gt; el.replace(el,&quot;*&quot;));
    const newNum = replaceNotANumber.concat(backNum)

    return newNum.join('')

}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) ‘*‘으로 바꿀 숫자 부분과 뒷 부분을 각각 변수로 선언하고 문자열을 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;split&lt;/code&gt;으로 바꾼 뒤, 뒤의 4자리를 제외하고 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;slice&lt;/code&gt;를 한다. &lt;br /&gt;
2) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;map&lt;/code&gt;안에 매개변수로 선언한 각각의 값을 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;replace&lt;/code&gt;를 사용해 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;*&quot;&lt;/code&gt;로 바꿔준다. &lt;br /&gt;
3) 두 문자열을 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;concat&lt;/code&gt;으로 묶은 뒤 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;join&lt;/code&gt;으로 배열을 문자열로 바꿔 반환한다. &lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;다른사람의-풀이&quot;&gt;다른사람의 풀이&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(phone_number) {
    let number = &quot;*&quot;.repeat(phone_number.length -4) + phone_number.slice(-4);

    return number;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
  &lt;p&gt;String.prototype.repeat() : 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1) 엄청 클리어한 코드!&lt;br /&gt;
2) 인자의 길이의 -4만큼 “*” 수를 반복한 것 + slice로 뒤의 문자를 해서 새로운 문자를 변수로 담아 반환한다. &lt;br /&gt;&lt;/p&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.</summary></entry><entry><title type="html">TIL9: [알고리즘] 두 개 뽑아서 더하기</title><link href="https://hyen43.github.io/algorithm/post-TIL9/" rel="alternate" type="text/html" title="TIL9: [알고리즘] 두 개 뽑아서 더하기" /><published>2021-10-22T00:00:00+00:00</published><updated>2021-10-22T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL9</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL9/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;정수 배열 numbers가 주어집니다.&lt;br /&gt;numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;table&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
		&lt;td&gt;s&lt;/td&gt;
		&lt;td&gt;return&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;[2,1,3,4,1]&lt;/td&gt;
		&lt;td&gt;[2,3,4,5,6,7]&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;[5,0,2,7]&lt;/td&gt;
		&lt;td&gt;[2,5,7,9,12]&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;나의-풀이&quot;&gt;나의 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(numbers) {
    const newArr = [];
    for(let i = 0; i &amp;lt; numbers.length; i++) {
        for(let j = i+1 ; j &amp;lt; numbers.length; j++) {
            newArr.push(numbers[i] + numbers[j])
        }
    }    
    const newSet = new Set(newArr);
    const uniqArr = [...newSet];
    return uniqArr.sort((a,b) =&amp;gt; a-b);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) 반복문을 2번 사용해 새로운 배열에 합한 값을 넣는다.&lt;br /&gt;
2) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;new Set()&lt;/code&gt;을 사용하여 반복을 제거한다. &lt;br /&gt;
3) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;array.sort((a,b) =&amp;gt; a-b)&lt;/code&gt;를 사용해서 오름차순을 한다. &lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;다른사람의-풀이&quot;&gt;다른사람의 풀이&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(numbers) {
    let answer = [];
    //배열의 두개 요소를 뽑아 덧셈한 모든 경우의 수를 구한다.
    //중복된 값은 제거한다.
    //배열값을 리턴한다.
    for(let i=0; i&amp;lt;numbers.length-1; i++){
        for(let j=i+1; j&amp;lt;numbers.length; j++){
           if(answer.indexOf(numbers[i]+numbers[j])===-1){
               answer.push(numbers[i]+numbers[j]) 
           } 
        }
    }

    return answer.sort((a,b)=&amp;gt;a-b);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
  &lt;p&gt;arr.indexOf(searchElement[, fromIndex]) : 배열내 요소가 있으면 해당 인덱스를 반환하고 없으면 ‘-1’을 반환하다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1) 배열의 두개 요소를 뽑아 덧셈한 모든 경우의 수를 구한다.&lt;br /&gt;
2) 중복된 값이 없으면(반환 값이 -1이면), push로 더한 값을 넣는다. &lt;br /&gt;&lt;/p&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제 정수 배열 numbers가 주어집니다.numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.</summary></entry><entry><title type="html">TIL8: [알고리즘] 제일 작은 수 제거하기</title><link href="https://hyen43.github.io/algorithm/post-TIL8/" rel="alternate" type="text/html" title="TIL8: [알고리즘] 제일 작은 수 제거하기" /><published>2021-10-21T00:00:00+00:00</published><updated>2021-10-21T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL8</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL8/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;

&lt;p&gt;정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.&lt;br /&gt;
단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.&lt;br /&gt; 
예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;

&lt;table&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
		&lt;td&gt;s&lt;/td&gt;
		&lt;td&gt;return&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;[4,3,2,1]&lt;/td&gt;
		&lt;td&gt;[4,3,2]&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;[10]&lt;/td&gt;
		&lt;td&gt;[-1]&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;나의-풀이&quot;&gt;나의 풀이&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(arr) {
    if(arr.length === 1){
        arr = [-1]
        return arr
    } else{
        const min = Math.min(...arr);
        return arr.filter((el)=&amp;gt; el !== min)
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) arr의 길이가 1이라면 arr를 [-1]로 바꾸고 arr을 반환한다.&lt;br /&gt;
2) 길이가 1이상이라면 arr를 깊은 복사를해서 최솟값을 구해주는 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Math.min&lt;/code&gt;을 사용해 최솟값을 min 변수에 담아준다. &lt;br /&gt;
3) filter를 통해 해당 수를 제거한다. &lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;다른사람의-풀이&quot;&gt;다른사람의 풀이&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(arr) {
  arr.splice(arr.indexOf(Math.min(...arr)),1);
  return arr.length? arr : [-1];
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
  &lt;p&gt;arr.splice(start, deleteCount, [item1]) : 삭제를 시작할 인덱스에서 삭제할 수의 개수만큼 삭제한 뒤 arr를 반환한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Math.min()&lt;/code&gt;을 사용해 최솟값을 찾고 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;arr.indexOf()&lt;/code&gt;로 인덱스 자리를 찾는다.&lt;br /&gt;
2) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;arr.splice()&lt;/code&gt;를 사용해 하나만큼 삭제(해당 최솟값을 삭제한다.)&lt;br /&gt;
3) arr.length가 있으면 arr을 반환하고 아니면 [-1]을 반환한다.&lt;/p&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제</summary></entry><entry><title type="html">TIL7: [알고리즘] 프로그래머스 소수찾기</title><link href="https://hyen43.github.io/algorithm/post-TIL7/" rel="alternate" type="text/html" title="TIL7: [알고리즘] 프로그래머스 소수찾기" /><published>2021-10-20T00:00:00+00:00</published><updated>2021-10-20T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL7</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL7/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.&lt;br /&gt;
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.&lt;br /&gt;
(1은 소수가 아닙니다.)&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;table&gt;
  &lt;tbody&gt;
  	&lt;tr&gt;
		&lt;td&gt;s&lt;/td&gt;
		&lt;td&gt;return&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;10&lt;/td&gt;
		&lt;td&gt;4&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;5&lt;/td&gt;
		&lt;td&gt;3&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;문제풀이&quot;&gt;문제풀이&lt;/h2&gt;

&lt;p&gt;해당 문제는 ‘에라토스테네스의 체’를 이용하여 풀어야 한다.&lt;br /&gt;
그 이유는 시간복잡도를 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;√n&lt;/code&gt;으로 해결할 수 있기 때문이다.&lt;br /&gt;
에라토스테네스의 체는 다음과 같은 그림으로 설명이 가능하다.&lt;br /&gt;
&lt;img src=&quot;https://user-images.githubusercontent.com/60104321/138022229-2bb560dd-a445-4a43-810a-667dfbaf7dfd.png&quot; alt=&quot;image&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;출처: 나무위키
1을 제외한 2부터 시작해 소수는 표시를 하지 않고, 배수(합성수)만 지워준다.&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;해당 문제는 개념을 이해하는 데 중점을 두었다.&lt;br /&gt;
풀이는 다양한 블로그를 통해 이해한 뒤 가장 이해가 잘 되는 풀이를 손으로 풀고 문제를 푸는 방식으로 진행하였다.&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;나의-풀이&quot;&gt;나의 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(n) {
    let newArr = new Array(n).fill(1);
    newArr[0] = 0;

    //제곱근 순회 
    for(let i = 2; i*i &amp;lt;= n ; i++) {
        //증감문으로 배수를 순회
        for(let j = i*i ; j &amp;lt;= n; j+=i){
            newArr[j-1] = 0;
        }
    }
    return newArr.filter((el)=&amp;gt; el===1).length
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) n개의 개수만큼의 배열에 ‘1’을 채운다.&lt;br /&gt;
2) 1이 들어간 배열의 0번째 자리에 ‘0’을 넣는다.&lt;br /&gt;
3) 제곱근 순회를 하게끔 만든다 &lt;br /&gt;
4) for에서 증감문을 이용하여 배수를 순회할 수 있도록 만든다.&lt;br /&gt; 
5) 제곱근 순회와 배수 순회를 통해 해당하는 인덱스 자리에 ‘0’을 넣는다. &lt;br /&gt;
6) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Array.filter()&lt;/code&gt;메서드를 사용하여 내용이 ‘1’과 같은 배열을 filter한 뒤 그 길이를 반환한다.&lt;/p&gt;

&lt;h4 id=&quot;도움되는-자료&quot;&gt;도움되는 자료&lt;/h4&gt;
&lt;blockquote&gt;
  &lt;p&gt;https://ko.khanacademy.org/computing/computer-science/cryptography/comp-number-theory/v/sieve-of-eratosthenes-prime-adventure-part-4&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.)</summary></entry><entry><title type="html">TIL6: [알고리즘] 프로그래머스 모의고사</title><link href="https://hyen43.github.io/algorithm/post-TIL6/" rel="alternate" type="text/html" title="TIL6: [알고리즘] 프로그래머스 모의고사" /><published>2021-10-18T00:00:00+00:00</published><updated>2021-10-18T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL6</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL6/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.&lt;/p&gt;

&lt;p&gt;1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, …
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, …
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, …&lt;/p&gt;

&lt;p&gt;1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;table&gt;
  &lt;tbody&gt;
  	&lt;tr&gt;
		&lt;td&gt;s&lt;/td&gt;
		&lt;td&gt;return&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;[1,2,3,4,5]&lt;/td&gt;
		&lt;td&gt;[1]&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;[1,3,2,4,2]&lt;/td&gt;
		&lt;td&gt;[1,2,3]&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;문제풀이&quot;&gt;문제풀이&lt;/h2&gt;

&lt;h3 id=&quot;나의-풀이&quot;&gt;나의 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(answers) {
    const anw1 = [1,2,3,4,5];
    const anw2 = [2,1,2,3,2,4,2,5];
    const anw3 = [3,3,1,1,2,2,4,4,5,5];
    const mostCorrectAnswer = [0,0,0];
    
    for(let i=0; i &amp;lt; answers.length; i++){
        if(answers[i] === anw1[i%anw1.length]){
            mostCorrectAnswer[0]++;
        } 
        if(answers[i] === anw2[i%anw2.length]){
            mostCorrectAnswer[1]++;
        }
        if(answers[i] === anw3[i%anw3.length]){
            mostCorrectAnswer[2]++;
        }
    }
    
    let max = Math.max(...mostCorrectAnswer);
    let result = [];
    for(let j = 0; j &amp;lt; mostCorrectAnswer.length; j++){
        if(mostCorrectAnswer[j] === max){
            result.push(j+1);
        };
    };
    return result;   
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) 수포자의 답변이 반복되는 순서로 변수에 담아 보관한다.&lt;br /&gt;
2) 맞춘 개수를 넣을 변수를 만든다.&lt;br /&gt;
3) 답과 수포자의 답이 같다면 각 count에 개수를 더해준다.&lt;br /&gt;
4) Math.max() 메소드로 max내 최대 수를 구한다. &lt;br /&gt; 
5) 많이 맞춘 수와 맞은 개수의 변수(mostCorrectAnswer) 내 값이 같으면 그 수를 result에 넣어서 반환한다.&lt;/p&gt;

&lt;h3 id=&quot;다른-사람-풀이&quot;&gt;다른 사람 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(answers) {
    var answer = [];
    var a1 = [1, 2, 3, 4, 5];
    var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
    var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];

    var a1c = answers.filter((a,i)=&amp;gt; a === a1[i%a1.length]).length;
    var a2c = answers.filter((a,i)=&amp;gt; a === a2[i%a2.length]).length;
    var a3c = answers.filter((a,i)=&amp;gt; a === a3[i%a3.length]).length;
    var max = Math.max(a1c,a2c,a3c);

    if (a1c === max) {answer.push(1)};
    if (a2c === max) {answer.push(2)};
    if (a3c === max) {answer.push(3)};


    return answer;
}

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;filter((a,i)=&amp;gt; a === a1[i%a1.length]).length&lt;/code&gt; 필터를 써서 값의 길이를 내보낸 뒤, length로 값의 개수를 변수에 담는다.&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.</summary></entry><entry><title type="html">TIL5: [알고리즘] 문자열 내 p와 y의 개수</title><link href="https://hyen43.github.io/algorithm/post-TIL5/" rel="alternate" type="text/html" title="TIL5: [알고리즘] 문자열 내 p와 y의 개수" /><published>2021-10-13T00:00:00+00:00</published><updated>2021-10-13T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL5</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL5/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 ‘p’의 개수와 ‘y’의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. ‘p’, ‘y’ 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.&lt;/p&gt;

&lt;p&gt;예를 들어 s가 “pPoooyY”면 true를 return하고 “Pyy”라면 false를 return합니다.&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;table&gt;
  &lt;tbody&gt;
  	&lt;tr&gt;
		&lt;td&gt;s&lt;/td&gt;
		&lt;td&gt;return&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&quot;pPoooyY&quot;&lt;/td&gt;
		&lt;td&gt;true&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&quot;Pyy&quot;&lt;/td&gt;
		&lt;td&gt;false&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;문제풀이&quot;&gt;문제풀이&lt;/h2&gt;

&lt;h3 id=&quot;나의-풀이&quot;&gt;나의 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(s){
    const splitedS = s.split(&quot;&quot;)
    const one = [];
    const two = [];
    splitedS.map( i =&amp;gt; {
        if(i === &quot;p&quot; || i === &quot;P&quot;) {
            one.push(i);
        }else if(i === &quot;y&quot; || i === &quot;Y&quot;){
            two.push(i);
        }
    })
  if(one.length === two.length) {
    return true
  } else if (one.length === 0 &amp;amp;&amp;amp; two.length === 0 ){
    return true
  } else {
    return false
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) 문자열을 쪼개준다(split)&lt;br /&gt;
2) 2개의 배열을 만들어서 문자를 해당 배열에 넣어준다.&lt;br /&gt;
2-1) map을 사용해 매개변수와 p,P,y,Y를 비교해 배열에 넣는다.&lt;br /&gt;
3) 각 조건에 맞게 조건문을 만들어준다.&lt;/p&gt;

&lt;h3 id=&quot;다른-사람-풀이&quot;&gt;다른 사람 풀이&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;return s.toUpperCase().split(&quot;P&quot;).length === s.toUpperCase().split(&quot;Y&quot;).length;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
  &lt;p&gt;해당 문제는 내가 푼 테스트 케이스와는 다르지만 사고의 전환을 했다는 부분이 놀랍고 신기해 가지고 와보았다. 문제의 조건을 잘 보고 간단히 할 수 있는 부분을 간단하게 만들어 풀었다는 점이 놀랍다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1) 조건에 대,소문자를 구분하지 않는다고 했기에 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;toUpperCase()&lt;/code&gt;를 사용해 모든 문자열을 대문자로 변환한다.&lt;br /&gt;
2) 변환한 대문자로 쪼갠뒤 그 길이를 비교한다.&lt;/p&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 ‘p’의 개수와 ‘y’의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. ‘p’, ‘y’ 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.</summary></entry><entry><title type="html">TIL4: [알고리즘] 문자열 다루기 기본</title><link href="https://hyen43.github.io/algorithm/post-TIL4/" rel="alternate" type="text/html" title="TIL4: [알고리즘] 문자열 다루기 기본" /><published>2021-10-12T00:00:00+00:00</published><updated>2021-10-12T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL4</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL4/">&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 “a234”이면 False를 리턴하고 “1234”라면 True를 리턴하면 됩니다.&lt;/p&gt;

&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;table&gt;
  &lt;tbody&gt;
  	&lt;tr&gt;
		&lt;td&gt;s&lt;/td&gt;
		&lt;td&gt;return&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&quot;a234&quot;&lt;/td&gt;
		&lt;td&gt;false&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&quot;1234&quot;&lt;/td&gt;
		&lt;td&gt;true&lt;/td&gt;
	&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;문제풀이&quot;&gt;문제풀이&lt;/h2&gt;

&lt;h3 id=&quot;1-삼항연산자--isnan&quot;&gt;1. 삼항연산자 &amp;amp; isNaN&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(s) {
    return(s.length === 4 || s.length === 6 &amp;amp;&amp;amp; isNaN(s) === false ? true : false)
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;isNaN(value)? value가 숫자가 아니면 true, 숫자이면 false를 반환한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;삼항연산자와 isNaN을 사용해서 작성했는데, 문제 11번에서 막혔다.&lt;br /&gt; 그 이유는 지수형식(“1e22”)를 넣었을 때 문제가 되기 때문이다.&lt;/p&gt;

&lt;h3 id=&quot;2-조건을-더-많이-줘서-풀기&quot;&gt;2. 조건을 더 많이 줘서 풀기&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(s) {
  if( !(s.length === 4 || s.length === 6)) {
    return false
  } else {
    const splitS = s.split(&quot;&quot;);
    for(let i = 0 ; i &amp;lt; splitS.length ; i++ ) {
      if(isNaN(splitS[i]) === true){
        return false
      }
    }
  }
    return true
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1) s의 문자열 길이가 4이거나 6이 아닐 때, false&lt;br /&gt;
2) s의 길이가 4이거나 6일 때, 만약 그 안의 contents가 숫자가 아닐 때, false &lt;br /&gt;
3) s의 길이가 4이나 6이고 contents가 숫자일 때, true&lt;/p&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">문제 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 “a234”이면 False를 리턴하고 “1234”라면 True를 리턴하면 됩니다.</summary></entry><entry><title type="html">TIL3: [알고리즘] 가운데 글자 가져오기</title><link href="https://hyen43.github.io/algorithm/post-TIL3/" rel="alternate" type="text/html" title="TIL3: [알고리즘] 가운데 글자 가져오기" /><published>2021-10-11T00:00:00+00:00</published><updated>2021-10-11T00:00:00+00:00</updated><id>https://hyen43.github.io/algorithm/post-TIL3</id><content type="html" xml:base="https://hyen43.github.io/algorithm/post-TIL3/">&lt;h1 id=&quot;알고리즘-프로그래머스_가운데-글자-가져오기&quot;&gt;[알고리즘] 프로그래머스_가운데 글자 가져오기&lt;/h1&gt;

&lt;h2 id=&quot;문제&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.&lt;/p&gt;
&lt;h2 id=&quot;입출력-예시&quot;&gt;입출력 예시&lt;/h2&gt;
&lt;p&gt;| s | return |
| ———— | ———— |
|”abcde”|”c”|
|”qwer”|”we”|&lt;/p&gt;

&lt;h2 id=&quot;문제풀이&quot;&gt;문제풀이&lt;/h2&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(s) {
  return (s.length%2 === 0 ? s.slice((s.length/2)-1, s.length/2+1) : s.charAt((Math.round(s.length/2))-1)) 
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;삼항연산자를 사용해 조건문을 단순화 시켰고, 짝수일 때 slice로 가운데 2자리 수를 반환한다.&lt;br /&gt;
그 외의 조건(홀수)일 때에는 반올림을 해주는 메소드(Math.round)와 단 한개의 문자만 내보내는 charAt을 사용하여 값을 반환했다.&lt;/p&gt;

&lt;h2 id=&quot;이-외의-사람들-풀이&quot;&gt;이 외의 사람들 풀이&lt;/h2&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;str.substr? &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;substr()&lt;/code&gt;메소드는 문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환한다. 
ex. const str = “Mozilla”;
console.log(str.substr(1,2)); // “oz”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;디폴트로 수를 나눈 것의 올림을 한 값을 s.substr()의 매개변수의 첫번째 수로 넣고, 짝수일 때 에는 2개의 숫자를 아닐 때에는 1개의 숫자를 반환하도록 만들었다.&lt;/p&gt;</content><author><name>NaHyun Lee</name></author><category term="Algorithm" /><category term="Algorithm" /><category term="Programmers" /><category term="code" /><summary type="html">[알고리즘] 프로그래머스_가운데 글자 가져오기</summary></entry><entry><title type="html">TIL2: 자료구조_TREE</title><link href="https://hyen43.github.io/data%20structure/post-TIL2/" rel="alternate" type="text/html" title="TIL2: 자료구조_TREE" /><published>2021-10-09T00:00:00+00:00</published><updated>2021-10-09T00:00:00+00:00</updated><id>https://hyen43.github.io/data%20structure/post-TIL2</id><content type="html" xml:base="https://hyen43.github.io/data%20structure/post-TIL2/">&lt;h1 id=&quot;자료구조_tree&quot;&gt;자료구조_TREE&lt;/h1&gt;

&lt;h3 id=&quot;-tree-구조를-보기에-앞서-자료구조-사용-이유&quot;&gt;📌 TREE 구조를 보기에 앞서.. 자료구조 사용 이유?&lt;/h3&gt;

&lt;h4 id=&quot;자료구조data-structure&quot;&gt;자료구조(Data Structure)&lt;/h4&gt;
&lt;p&gt;자료구조를 굳이 왜 만들어놓았는가!에 대한 근본적인 질문이 떠올라서 찾아본 “자료구조를 사용하는 이유?”&lt;/p&gt;

&lt;p&gt;자료구조를 배우는 이유는 &lt;strong&gt;데이터를 체계적으로 저장&lt;/strong&gt;하고, &lt;strong&gt;효율적으로 활용&lt;/strong&gt;하기 위해서이다.&lt;/p&gt;

&lt;p&gt;많은 자료구조를 알아두면, 상황별 적합한 타입의 자료구조를 사용해 데이터를 빠르게 정리하고 활용하여 문제를 해결할 수 있다.&lt;/p&gt;

&lt;p&gt;데이터를 체계적으로 정리하여 저장해두는 것이 데이터를 활용하는데 훨씬 유리하다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/60104321/136590970-de1668a3-08dc-4ca2-8724-2ffe38eca885.png&quot; alt=&quot;자료구조종류&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;tree&quot;&gt;TREE&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/60104321/136591001-cba8f170-f95a-4a57-abf3-755b4698eedc.png&quot; alt=&quot;트리구조 예시&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;1-개념&quot;&gt;1. 개념&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;트리구조란? 노드로 이루어진 구조&lt;/li&gt;
  &lt;li&gt;트리구조는 무방향의 그래프로 계층적인 자료이다.&lt;/li&gt;
  &lt;li&gt;트리구조는 데이터를 순차적으로 나열시킨 선형구조가 아니라, 여러개의 데이터가 존재할 수 있는 비선형 구조이다.&lt;/li&gt;
  &lt;li&gt;트리구조는 계층적이고 위에서 아래로만 뻗어나가 사이클이 없다.
    &lt;h4 id=&quot;1-1-용어정리&quot;&gt;1-1) 용어정리&lt;/h4&gt;
    &lt;p&gt;◼ 노드: 트리를 구성하는 각각의 요소(데이터)&lt;br /&gt;
◼ 간선(edge): 노드를 연결하는 선&lt;br /&gt; 
◼ 루트: 트리구조의 시작점&lt;br /&gt;
◼ 부모노드&lt;br /&gt; 
◼ 자식노드&lt;br /&gt;
◼ 리프: 자식노드가 없는 노드&lt;br /&gt; 
◼ 깊이(depth): 루트로부터 하위계층의 특정 노드까지의 깊이&lt;br /&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;루트 노드의 깊이는 0이다.&lt;br /&gt; 
◼ 레벨(level): 트리구조에서 같은 깊이를 가지고 있는 노드를 묶어서 같은 레벨로 표현할 수 있고, 그런 노드들을 &lt;strong&gt;형제노드&lt;/strong&gt;라고 한다.&lt;br /&gt;
◼ 높이(height): 리프노드를 기준으로 루트까지의 높이&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;부모노드는 자식노드의 가장 높은 height값에 +1한 높이를 가진다.&lt;br /&gt; 
◼ 서브트리: root에서 뻗어나온 큰 트리 내부에 트리 구조를 가지 작은 트리&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;1-2-실사용-예제--컴퓨터-디렉토리-구조&quot;&gt;1-2) 실사용 예제 =&amp;gt; 컴퓨터 디렉토리 구조&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/60104321/136591014-0f59799d-0996-4911-a5f5-9871b4f556c8.png&quot; alt=&quot;디렉토리 구조&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;2-이진트리binary-tree--이진탐색트리binary-search-tree&quot;&gt;2. 이진트리(Binary Tree) &amp;amp; 이진탐색트리(Binary Search Tree)&lt;/h3&gt;
&lt;p&gt;트리구조는 특징에 따라 여러 이름으로 불리는데, 그 중 많이 사용되는 트리가 이진트리와 이진탐색트리이다.&lt;/p&gt;

&lt;h4 id=&quot;-이진트리binary-tree&quot;&gt;☝ 이진트리(Binary Tree)&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;자식노드가 최대 두 개인 노드들로 구성된 트리&lt;/li&gt;
  &lt;li&gt;자식노드는 왼쪽 자식 노드와 오른쪽 자식 노드로 바꿀 수 있다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/60104321/136591040-81d82083-39e5-4d59-8df7-09ac4afde088.jpg&quot; alt=&quot;정이진트리, 포화이진트리, 완전이진트리&quot; /&gt;&lt;/p&gt;

&lt;p&gt;1) 정이진트리: 각 노드가 0개 혹은 2개의 자식 노드를 가진다.&lt;br /&gt;
2) 완전이진트리: 마지막 레벨을 제외한 모든 노드가 가득 차있어야 하고, 마지막 레델의 노드는 왼쪽 노드가 채워져야 한다.&lt;br /&gt;
3) 포화 이진 트리: 모든 리프 노드의 레벨이 동일하고 모든 레벨이 가득 채워있는 트리이다.&lt;/p&gt;

&lt;h4 id=&quot;-이진탐색트리binary-search-tree&quot;&gt;☝ 이진탐색트리(Binary Search Tree)&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;이진 탐색 트리는 모든 왼쪽 자식의 값이 루트나 부모보다 작고 모든 오른쪽 자식의 값이 루트나 부모보다 큰 값을 가지는 특징&lt;/li&gt;
  &lt;li&gt;균형잡힌 트리가 아닐 때, 한쪽으로 몰릴 수 있어 이때에는 시간이 더 걸리기 때문에 해결해야한다.&lt;/li&gt;
  &lt;li&gt;균형이 잡히지 않는 트리 탐색 문제는’트리구조를 재조정’함으로써 해결할 수 있다.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;간단한 이해를 원하시면👉 https://bit.ly/3mDz09M&lt;br /&gt;
조금 더 딥하게 이해하고 싶으면👉 https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>NaHyun Lee</name></author><category term="Data Structure" /><category term="data structure" /><category term="Tree" /><category term="Front-end Developer" /><summary type="html">자료구조_TREE</summary></entry></feed>