<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>amelia-_-develop.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Mon, 25 Nov 2024 06:32:34 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. amelia-_-develop.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/amelia-_-develop" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[javascript]옵셔널체이닝]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript%EC%98%B5%EC%85%94%EB%84%90%EC%B2%B4%EC%9D%B4%EB%8B%9D</link>
            <guid>https://velog.io/@amelia-_-develop/javascript%EC%98%B5%EC%85%94%EB%84%90%EC%B2%B4%EC%9D%B4%EB%8B%9D</guid>
            <pubDate>Mon, 25 Nov 2024 06:32:34 GMT</pubDate>
            <description><![CDATA[<p>?. 이거는 ?. &#39;앞&#39;의 평가대상이 undefined이거나 null이면 평가를 멈추고 undefined를 반환</p>
<p> const getBoardId = location.state?.id || &#39;&#39;을 한글로 풀어서 설명하면</p>
<p> location.state가 값이 존재하면, id값을 가져오고 그렇지 않으면 빈값을 가져온다</p>
<p> const getBoardId = location.state?.id || &#39;&#39;을 if문으로 풀어쓰면 아래와 같다
     <img src="https://velog.velcdn.com/images/amelia-_-develop/post/c0cff60a-2663-41a1-b5d0-6438cee1ea90/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] 입력한 수가 연속되었는지 확인하기]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-%EC%9E%85%EB%A0%A5%ED%95%9C-%EC%88%98%EA%B0%80-%EC%97%B0%EC%86%8D%EB%90%98%EC%97%88%EB%8A%94%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-%EC%9E%85%EB%A0%A5%ED%95%9C-%EC%88%98%EA%B0%80-%EC%97%B0%EC%86%8D%EB%90%98%EC%97%88%EB%8A%94%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 01 Nov 2024 10:21:13 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/amelia-_-develop/post/c654aa92-0927-4360-ae44-10a2daa3dcc4/image.jpg" alt=""></p>
<p>(1, 2, 3)은 내가 propmt에 입력한 숫자</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] 스택을 활용한 여는괄호와 닫는괄호의 짝맞춰서 올바른지 판별하기]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-%EC%8A%A4%ED%83%9D%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%97%AC%EB%8A%94%EA%B4%84%ED%98%B8%EC%99%80-%EB%8B%AB%EB%8A%94%EA%B4%84%ED%98%B8%EC%9D%98-%EC%A7%9D%EB%A7%9E%EC%B6%B0%EC%84%9C-%EC%98%AC%EB%B0%94%EB%A5%B8%EC%A7%80-%ED%8C%90%EB%B3%84%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-%EC%8A%A4%ED%83%9D%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%97%AC%EB%8A%94%EA%B4%84%ED%98%B8%EC%99%80-%EB%8B%AB%EB%8A%94%EA%B4%84%ED%98%B8%EC%9D%98-%EC%A7%9D%EB%A7%9E%EC%B6%B0%EC%84%9C-%EC%98%AC%EB%B0%94%EB%A5%B8%EC%A7%80-%ED%8C%90%EB%B3%84%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 01 Nov 2024 05:56:01 GMT</pubDate>
            <description><![CDATA[<h4 id="스택을-활용한-문자열-판별하기">스택을 활용한 문자열 판별하기</h4>
<p>prompt로 괄호를 입력한다고 했을 때, 여는괄호와 닫는괄호의 쌍을 맞춰서 서로 올바른 쌍이면 true 그렇지 않으면 false를 보여준다고 하자.</p>
<p>여기서의 <strong>해결실마리는 스택이다, Last in First Out (LIFO)를 활용하면 된다</strong>
<strong>여는괄호를 스택에 쌓아</strong>서, 입력하는 문자(=닫는괄호)와 짝이 맞는지 판별을 한다</p>
<p>단, &#39;닫는괄호가 많아서 스택의 길이가 0일때&#39; 에 대한 경우도 고려를 해야한다
예를들어 &#39;()))))))()&#39; 이렇게 여는괄호보다 닫는괄호가 많은경우, false로 판별해야 하기 떄문이다</p>
<p>[해결방법]
스택이라는 배열을 만든다 -&gt; 입력된문자(=propmpt로 입력된 문자들)에 대한 length를 조건으로 하는 for문을 돌린다 -&gt; 해당배열에 push()를 한다 -&gt; 스택이라는 배열의 길이가 0인경우(=닫는괄호가 많아서 스택의 길이가 0인경우) 고려한다 -&gt; 스택이라고 만든 배열에 pop()을 하여 배열의 마지막으로 들어간 요소(=괄호)부터 하나씩 빼본다 -&gt; 빼보면서 스택에 있는 여는괄호와 닫는괄호의 짝을 맞춘다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] 퀵정렬 구현하기]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-%ED%80%B5%EC%A0%95%EB%A0%AC-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-%ED%80%B5%EC%A0%95%EB%A0%AC-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 31 Oct 2024 06:09:07 GMT</pubDate>
            <description><![CDATA[<h4 id="피봇중심축을-기준으로-하여-리스트의-크기가-0-또는-1이-될때까지-반복">피봇(=중심축)을 기준으로 하여, 리스트의 크기가 0 또는 1이 될때까지 반복</h4>
<p><img src="https://velog.velcdn.com/images/amelia-_-develop/post/c33252d1-03b2-4dd6-9685-f503ab312f2b/image.png" alt=""></p>
<p>입력한 숫자 배열의 0번째를 피봇이라고 가정한다</p>
<p>퀵정렬은 입력배열을 점점 작게 (큰놈 -&gt; 작은놈으로 줄이고 줄이기, 몸집을 점점 줄이기) 나눠서
재귀적으로(=원래 자리로 돌아감) 정렬하는 방식이다</p>
<p>그리고, 가장중요한!
<strong>return값의 형태는 배열형태로 병합된다 
병합순서 :: [피봇보다 작은 값들이 있던 left, 피봇, 피봇보다 큰 값들이 있던 right]</strong></p>
<p><img src="https://velog.velcdn.com/images/amelia-_-develop/post/c61e3955-b098-4c80-8237-d213d2d13b94/image.jpg" alt=""></p>
<p>위 사진처럼 피봇과 같은 &#39;5&#39;가 중간에 있는 경우에 가운데 있는 5는 중간에 위치한 상태 그대로 있는다.</p>
<p>퀵정렬의 핵심은</p>
<ol>
<li>피봇을 기준으로 요소분할</li>
<li>재귀적(원래 상태로 돌아오려는) 반복 정렬</li>
<li>피봇과 비교해서 왼쪽, 오른쪽 분할하는 것이 포인트</li>
</ol>
<p>퀵정렬에 대한 잘못된 이해</p>
<ol>
<li>배열의 양쪽 끝값을 단순비교하는게 아님</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] slice()와 전개연산자'...'의 차이]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-slice%EC%99%80-%EC%A0%84%EA%B0%9C%EC%97%B0%EC%82%B0%EC%9E%90...%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-slice%EC%99%80-%EC%A0%84%EA%B0%9C%EC%97%B0%EC%82%B0%EC%9E%90...%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Thu, 31 Oct 2024 04:33:14 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>원본배열을 변경하지 않고 새로운배열로 생성하는건 동일한데 차이점이 뭔지</p>
</blockquote>
<ol>
<li><p>slice()는 배열 전체 또는 특정범위만 복사할 수 있음, 배열의 일부만 복사 할 수 있음
const arr = [1, 2, 3, 4];
const slicedArr = arr.slice(1, 3);  // [2, 3]
(slice()는 자를 때, 배열의 시작부터 끝까지(end는 미포함))</p>
</li>
<li><p>[...]은 전체배열을 복사할 수 있음, 여러배열을 쉽게 결합
const arr1 = [1, 2];
const arr2 = [3, 4];
const combinedArr = [...arr1, ...arr2];  // [1, 2, 3, 4]</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] 버블정렬 구현하기]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-%EB%B2%84%EB%B8%94%EC%A0%95%EB%A0%AC-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-%EB%B2%84%EB%B8%94%EC%A0%95%EB%A0%AC-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 31 Oct 2024 04:22:25 GMT</pubDate>
            <description><![CDATA[<h4 id="인접한-두-수를-비교해서-정렬하는-방법">인접한 두 수를 비교해서 정렬하는 방법</h4>
<p><img src="https://velog.velcdn.com/images/amelia-_-develop/post/be1b5ef4-7377-42de-bc16-41e56ee75ada/image.png" alt=""></p>
<p>가장 중요한건, &#39;현재값(j) vs 다음값(j+1)&#39;을 비교해서 현재값이 더 크다! 위너다! 하면
현재값과 다음값의 위치를 바꿔준다는 것이 가장 중요하다</p>
<p>따라서</p>
<ol>
<li>현재값과 다음값을 비교하는데 비교조건은 현재값이 크다 &amp; 위너다</li>
<li>현재값을 저장할 변수(=공간) 확보</li>
<li>다음값을 현재값이 있는 위치로 이동</li>
<li>현재값을 담은 변수(=공간)에 다음값을 저장</li>
</ol>
<p>그리고, 위 캡처화면의 소스에서 조금 변형을 해보았다. &#39;현재값과 다음값을 교환하는 과정&#39;에 대해 적은 소스3줄을 한줄로 수정하였다.
<img src="https://velog.velcdn.com/images/amelia-_-develop/post/c9c6793c-4333-4898-990a-d6335ea268fc/image.png" alt=""></p>
<p>수정한 부분</p>
<ol>
<li>한줄로 수정하면서, 마지막j를 루프돌면 j+1이 undefined가 나옴</li>
<li>이를 방지하기위해, &#39;isSwap&#39;라는 boolean형태의 플래그를 줌</li>
<li>&#39;현재값 &gt; 다음값&#39;에 대한 if조건문이 끝난 이후에, 플래그가 없으면 for문을 빠져나오도록 함</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] indexOf()]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-indexOf</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-indexOf</guid>
            <pubDate>Wed, 30 Oct 2024 09:22:07 GMT</pubDate>
            <description><![CDATA[<h4 id="문자열안에서-내가-원하는-특정문자가-몇번째인지-알고싶을때">문자열안에서 내가 원하는 특정문자가 몇번째인지 알고싶을때</h4>
<blockquote>
<p>indexOf()</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/amelia-_-develop/post/82c934b7-482e-47bc-bcb5-a6ff6f118dec/image.png" alt=""></p>
<p>즉, 위 코드에서 내가 찾고싶은 &#39;f&#39;라는 문자는 공백(=띄어쓰기)를 포함하여
해당문장(=I am want front-end developer)에서 <strong>f가 첫번째(=처음으로)로 등장하는 인덱스</strong>를 알려준다</p>
<p><img src="https://velog.velcdn.com/images/amelia-_-develop/post/4d25b90f-ce00-48a1-9af2-5a73ed3a07f4/image.png" alt="">
만약, 위 캡처화면의 소스처럼 알파벳 &#39;o&#39;의 indexOf를 찾는다하면, 현재 문장(=I am want front-end developer)에서는 &#39;o&#39;가 가장 처음으로 등장하는 부분이 &#39;front-end&#39;라는 문장에서 나오므로, indexOf()는 12가 된다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] split()]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-split</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-split</guid>
            <pubDate>Wed, 30 Oct 2024 04:13:42 GMT</pubDate>
            <description><![CDATA[<h4 id="prompt로-입력된-문자열을-분리하는-방법">&gt; prompt로 입력된 문자열을 분리하는 방법</h4>
<blockquote>
<p>split()</p>
</blockquote>
<p>let inputNumber = prompt(&#39;숫자를 입력해주세요&#39;).<strong>split(&quot;&quot;)</strong>
위와같은 소스에서 split함수안에 &quot; &quot; 이런 공백을 넣느냐, 아님 공백을 넣지 않느냐에 대한 차이는 아래와 같다</p>
<ol>
<li>split(&quot;&quot;) :: 모든 문자를 하나하나 요소로 분리</li>
<li>split(&quot; &quot;) :: 공백을 기준으로 문자열을 분리</li>
</ol>
<p>-&gt; <strong>2번은, 사용자가 prompt로 입력할 때 공백까지 같이 포함해서 입력해</strong>주면 2번과 같은 조건이 성립됨</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] 입력받은 문자열로 된 배열을 숫자형태로 바꿔서 배열로 만들기]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-%EC%9E%85%EB%A0%A5%EB%B0%9B%EC%9D%80-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%90%9C-%EB%B0%B0%EC%97%B4%EC%9D%84-%EC%88%AB%EC%9E%90%ED%98%95%ED%83%9C%EB%A1%9C-%EB%B0%94%EA%BF%94%EC%84%9C-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-%EC%9E%85%EB%A0%A5%EB%B0%9B%EC%9D%80-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%90%9C-%EB%B0%B0%EC%97%B4%EC%9D%84-%EC%88%AB%EC%9E%90%ED%98%95%ED%83%9C%EB%A1%9C-%EB%B0%94%EA%BF%94%EC%84%9C-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Wed, 30 Oct 2024 03:04:31 GMT</pubDate>
            <description><![CDATA[<h4 id="입력받은-값이-문자열-형태의-배열일-때-숫자로-바꿔서-배열로-만들기">입력받은 값이 문자열 형태의 배열일 때, 숫자로 바꿔서 배열로 만들기</h4>
<blockquote>
<p>map(Number)</p>
</blockquote>
<p>prompt()로 입력받은 값은 &#39;문자열&#39;로 반환됨
이 &#39;문자열 형태&#39; -&gt; &#39;숫자 형태&#39; 로 바꾸는 방법은 아래와 같다</p>
<p>let eachPeopleWeight = prompt(&quot;몸무게를 입력하세요&quot;).split(&quot; &quot;)
let numPeopleWeight = eachPeopleWeight.<strong>map(Number)</strong></p>
<p>eachPeopleWeight의 typeof를 로그로 찍으면 string으로 찍힌다.(split하여 찍으면 형태는 object임)
이를 숫자형태의 배열로 변경하기 위해서는 numPeopleWeight을 찍어보면 숫자형태로 찍힌다
<img src="https://velog.velcdn.com/images/amelia-_-develop/post/14bf47ae-8a43-4937-a4ab-e55372bc4113/image.png" alt="">
<img src="https://velog.velcdn.com/images/amelia-_-develop/post/9c8b6260-f162-4f50-b118-0cca83353477/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] foreach()]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-foreach</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-foreach</guid>
            <pubDate>Wed, 30 Oct 2024 02:34:57 GMT</pubDate>
            <description><![CDATA[<h4 id="배열을-순회-배열을-돈다-배열을-빙글빙글-돈다">배열을 순회, 배열을 돈다, 배열을 빙글빙글 돈다</h4>
<blockquote>
<p> foreach()</p>
</blockquote>
<p>foreach는 [요소1, 요소2, 요소3...] 이렇게 생긴 배열을 순회(=돌고 돈다)하기 위해 사용
foreach에의 파라미터에는 콜백함수가 들어감</p>
<p><strong>▶foreach의 파라미터에 들어가는 친구들</strong></p>
<ol>
<li>currentValue - 현재 처리할 요소</li>
<li>index - 현재 처리할 요소의 인덱스 (선택적임, 필수가 아님)</li>
<li>array - foreach메서드를 호출할 배열 = 배열 그자체임 (선택적임, 필수가아님)</li>
</ol>
<p>위 3가지를 코드로 작성하면 아래 예제와 같다 
<img src="https://velog.velcdn.com/images/amelia-_-develop/post/a36af166-37b0-4a5f-83a0-01c7f7d439ae/image.png" alt="">
cookingArr에 요즘 핫한 &#39;흑백요리사&#39;의 셰프들 이름을 넣은 배열이다.
이 배열을 &#39;돌고 돈다&#39; 라고 했을 때, foreach안에서의 로그에 찍히는 결과들에 대해서는 아래 캡처화면처럼 로그가 찍힌다
<img src="https://velog.velcdn.com/images/amelia-_-develop/post/9fe1fb5d-688f-4d6c-be14-2a73d38fab14/image.png" alt="">
foreach의 세번째 선택적 파라미터인 배열이 들어갈때, 해당 cookingArr에 돌아가는 인덱스에다가 문자열(=&#39;흑백요리사2 출연 예정자들(카더라)&#39;)을 추가해주었다</p>
<p>그리고, <strong>map()의 반환결과는 array이지만, foreach()의 반환은 undefined이다.
다시말해, foreach()는 배열의 순환(=돌고 돈다)이기때문에, 순환에 대한 반환결과는 undefined이다</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] getDay()]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-getDay</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-getDay</guid>
            <pubDate>Tue, 29 Oct 2024 09:23:32 GMT</pubDate>
            <description><![CDATA[<h4 id="입력한-월일이-무슨요일인지-알아낼때">입력한 &#39;월,일&#39;이 무슨요일인지 알아낼때</h4>
<blockquote>
<p>getDay() 를 사용</p>
</blockquote>
<h4 id=""><img src="https://velog.velcdn.com/images/amelia-_-develop/post/7fd218a5-313f-4c1b-bc52-30891e958c1c/image.png" alt=""></h4>
<p>new Date라는 객체안에 내가 알고 싶어 하는 &#39;년-월-일&#39;을 넣어서
&#39;new Date(년도-입력한 Month-입력한 Date).getDay()&#39;을 하면 입력한 Month/Date에 해당하는 요일을 
확인 할 수 있음</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[javascript] Math.sqrt()]]></title>
            <link>https://velog.io/@amelia-_-develop/javascript-Math.sqrt</link>
            <guid>https://velog.io/@amelia-_-develop/javascript-Math.sqrt</guid>
            <pubDate>Tue, 29 Oct 2024 08:11:38 GMT</pubDate>
            <description><![CDATA[<h2 id="입력한-값을-갖고-해당-입력값이-소수인지-판별할때">입력한 값을 갖고, 해당 입력값이 소수인지 판별할때</h2>
<blockquote>
<p>Math.sqrt() 를 사용</p>
</blockquote>
<h4 id="제곱근의-성질을-이용-제곱되는-수를-넘는-약수는-짝이-있으므로-제곱근-이하의-수를-사용">제곱근의 성질을 이용: 제곱되는 수를 넘는 약수는 짝이 있으므로, 제곱근 이하의 수를 사용</h4>
<p>ex) 36의 약수: 1, 2, 3, 4, 9, 6, 4, 12, 18, 36 -&gt; 
Math.sqrt()를 사용하면 제곱근인 6을 넘는 약수는 이미 제곱근6 이하의 수와 짝을 이루었음
따라서, 중복으로 계산할 필요 없음</p>
<p>결론: N이라는 숫자가 소수인지 판별할땐, 해당 N의 제곱근의 이하인 숫자들만 체크하도록 loop를 작성하면 됨</p>
]]></description>
        </item>
    </channel>
</rss>