<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>chaey_p.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Wed, 20 Dec 2023 06:28:01 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. chaey_p.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/chaey_p" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Javascript] 문자열을 숫자로 변환하는 법 -parseInt()
]]></title>
            <link>https://velog.io/@chaey_p/Javascript-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%88%AB%EC%9E%90%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B2%95</link>
            <guid>https://velog.io/@chaey_p/Javascript-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%88%AB%EC%9E%90%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B2%95</guid>
            <pubDate>Wed, 20 Dec 2023 06:28:01 GMT</pubDate>
            <description><![CDATA[<hr>
<p><em>📑 프로그래머스 lv.1 문제 풀이 중 알게된 함수 공부 기록</em></p>
<hr>
<p>Q. 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.</p>
<h4 id="🚩-풀이-방법">🚩 풀이 방법</h4>
<pre><code>function solution(s) {
    var answer = parseInt(s,10);
    return answer;
}</code></pre><h4 id="🚩-조건이-들어간-풀이-방법">🚩 조건이 들어간 풀이 방법</h4>
<pre><code>🟩 조건 :
  _  s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 &quot;0&quot;으로 시작하지 않습니다._</code></pre><pre><code>function solution(s) {
    var sign = 1;

    if (s[0] === &#39;-&#39;) {
        sign = -1;
        s = s.slice(1); 
    } else if (s[0] === &#39;+&#39;) {
        s = s.slice(1);
    }

    // 문자열이 &quot;0&quot;으로 시작하지 않도록 처리
    if (s[0] === &#39;0&#39; &amp;&amp; s.length &gt; 1) {
        // &quot;0&quot;으로 시작하는 경우 첫 번째 문자를 제외한 나머지 문자열로 업데이트
        s = s.slice(1);
    }

    // parseInt 함수를 사용하여 문자열을 정수로 변환하고 부호를 적용
    var answer = sign * parseInt(s, 10);

    return answer;
}</code></pre><hr>
<h1 id="parseint">parseInt</h1>
<ul>
<li><p>Javascript에서 문자열을 숫자(number)로 형변환
문자열을 파싱해서 숫자나 NaN(Not a Number)을 리턴</p>
</li>
<li><p>목적 : 문자열에서 숫자 추출</p>
</li>
</ul>
<h3 id="parseint-함수-사용">parseInt() 함수 사용</h3>
<pre><code>parseInt(string, *radix);</code></pre><p>  <em>🔸 파라미터</em>
  string : 숫자로 변환할 문자열
  radix : ( *optional) string 문자열을 읽을 진법(수의 진법 체계의 진법)</p>
<p>  <em>🔸 리턴값</em>
  string을 정수로 변환한 값을 리턴
  string의 첫 글자를 정수로 변경할 수 없으면 NaN(Not a Number) 값을 리턴</p>
<hr>
<h4 id="적용범위">적용범위</h4>
<ul>
<li>정수 값 parseInt(&quot;10&quot;);  //10 
  : 문자열을 숫자로 변환하여 정수 리턴</li>
<li>음수 값 parseInt(&quot;-10&quot;);  //-10 
  : 문자열을 숫자로 변환하여 정수 음수 리턴</li>
<li>실수 값 parseInt(&quot;10.9&quot;); //10 
  : 소수점을 제거한 후, 정수 값만 리턴</li>
<li>문자열이 아닌 다른 타입의 값 parseInt(10); //10 
  : 파라미터를 문자열로 변환하여 처리</li>
<li>문자열의 첫글자가 숫자이고, 그 이후에 숫자가 아닌 다른 문자열 
parseInt(&quot;10n&quot;); // 10
parseInt(&quot;10nnn13&quot;); // 10<pre><code>: 숫자가 아닌 문자 이후의 값은 무시하고, 그 이전의 숫자만 정수로 변환</code></pre></li>
<li>처음 공백 parseInt(&quot;    10&quot;); // 10
  : 문자열의 첫글자는 반드시 숫자여야 하지만, 처음에 오는 공백 문자는 허용</li>
<li>뒤 공백 parseInt(&quot;10      &quot;); // 10
  : 문자열의 첫글자가 숫자이면, 뒤에 오는 공백은 무시</li>
<li>첫글자가 숫자가 아닌 경우 parseInt(&quot;k10&quot;); // NaN
  : NaN(Not a Number)를 리턴</li>
<li>공백만 존재 parseInt(&quot;&quot;); // NaN
  : 문자열의 첫 글자가 숫자가 아니므로, NaN(Not a Number)를 리턴</li>
</ul>
<blockquote>
</blockquote>
<p>🚀 정상 출력 
: 정수, 음수, 실수, 문자열이 아닌 다른 타입의 값, 첫글자만 숫자인 문자열, 첫글자가 공백, 뒤 공백</p>
<blockquote>
</blockquote>
<p>⚒️ NaN 출력 
: 첫글자가 숫자가 아닌 문자열, 공백만 존재 </p>
<hr>
<h4 id="주의점">주의점</h4>
<pre><code>const age = prompt(&quot;are you OK?&quot;);

console.log(age, parseInt(age), age);</code></pre><p>형을 변환해준다고 하기에 parseInt(변수)를 사용한 뒤에 변수의 타입을 다시 찍어보면 계속 number로 나오지 않을까?</p>
<p>그런데 위 코드를 찍어보니 첫 번째, 세 번째는 string 타입으로, 두 번째는 number 타입으로 출력
따라서 parseInt(변수)를 한 번 사용했다고 해서, 해당 변수의 타입이 number 타입으로 영구적으로 변하는 것은 아닌것으로 예상
parseInt 함수를 사용할 때만 임시로 형 변환이 되는 것이라 주의 필요</p>
<hr>
<p>참조. 출처</p>
<ul>
<li><a href="https://hianna.tistory.com/386">https://hianna.tistory.com/386</a> [어제 오늘 내일:티스토리]</li>
<li><a href="https://velog.io/@0jiiino/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-parseInt-%ED%95%A8%EC%88%98-%EA%B6%81%EA%B8%88%EC%A6%9D-%ED%8F%AC%ED%95%A8">https://velog.io/@0jiiino/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-parseInt-%ED%95%A8%EC%88%98-%EA%B6%81%EA%B8%88%EC%A6%9D-%ED%8F%AC%ED%95%A8</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[모바일에서 로컬 환경 localhost 접속하기(다양한 방법 시도)]]></title>
            <link>https://velog.io/@chaey_p/%EB%AA%A8%EB%B0%94%EC%9D%BC%EC%97%90%EC%84%9C-%EB%A1%9C%EC%BB%AC-%ED%99%98%EA%B2%BD-localhost-%EC%A0%91%EC%86%8D%ED%95%98%EA%B8%B0%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95-%EC%8B%9C%EB%8F%84</link>
            <guid>https://velog.io/@chaey_p/%EB%AA%A8%EB%B0%94%EC%9D%BC%EC%97%90%EC%84%9C-%EB%A1%9C%EC%BB%AC-%ED%99%98%EA%B2%BD-localhost-%EC%A0%91%EC%86%8D%ED%95%98%EA%B8%B0%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95-%EC%8B%9C%EB%8F%84</guid>
            <pubDate>Fri, 27 Oct 2023 04:17:36 GMT</pubDate>
            <description><![CDATA[<h2 id="모바일에서-localhost-접속이-안될때-다양한-방법윈도우-기준">모바일에서 localhost 접속이 안될때 다양한 방법(윈도우 기준)</h2>
<p>이런저런 시도 끝에 성공하여 잊기전에 남겨둡니댜..⭐</p>
<h3 id="1기본적인-방법">1.기본적인 방법</h3>
<p>PC와 모바일에 같은 와이파이 연결
cmd -&gt; ipconfig -&gt; 무선 LAN 어댑터 WiFi의 IPv4주소 + :포트번호 입력
<img src="https://velog.velcdn.com/images/chaey_p/post/8bb95f45-ef76-4803-8c86-b89bd70df0e1/image.png" alt=""></p>
<p> <em>=&gt; 모바일 환경에서 연결 실패</em></p>
<h4 id="1-첫번째-시도--이더넷-접속-해제">1) 첫번째 시도 : 이더넷 접속 해제</h4>
<p>네트워크 및 인터넷 -&gt; 고급 네트워크 설정 -&gt; 이더넷 사용안함 클릭
   <img src="https://velog.velcdn.com/images/chaey_p/post/cf7d425a-9e22-4115-92d8-9bc871dad8da/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/3da0f06c-dbca-4451-a3c5-a8c725cfbb4e/image.png" alt="">
클릭한 상태</p>
<h4 id="2-두번째-시도--방화벽-설정">2) 두번째 시도 : 방화벽 설정</h4>
<pre><code>1. 우선 제어판 -&gt; 시스템 및 보안 -&gt; Windows 방화벽 ( 제어판\시스템 및 보안\Windows 방화벽 ) </code></pre><p><img src="https://velog.velcdn.com/images/chaey_p/post/79c77930-558c-4575-b930-6cb4a0b21e4e/image.png" alt="">
    2. 고급 설정 
<img src="https://velog.velcdn.com/images/chaey_p/post/a9fc63ed-a142-4afb-9ee8-00bbe38ba5e5/image.png" alt="">
    3. 인바운드 규칙 -&gt; 새 규칙 
<img src="https://velog.velcdn.com/images/chaey_p/post/f6fec06e-d6ad-4672-937c-b1b8de052725/image.png" alt="">
    4. 새 인바운드 규칙 마법사 -&gt; 포트 -&gt; 
<img src="https://velog.velcdn.com/images/chaey_p/post/1d49b354-f37e-43af-bd20-1d67dc4bcd16/image.png" alt="">
    5. 특정 로컬 포트 ( 임의로 숫자 겹치지 않는 것 넣습니다. 12345 ) 
<img src="https://velog.velcdn.com/images/chaey_p/post/d0332beb-1ff1-4cf2-8b0c-f85236030e52/image.png" alt="">
    6. Next Next 한다음에 규칙 이름을 적습니다.
<img src="https://velog.velcdn.com/images/chaey_p/post/5b3b084a-d94a-4a7a-9b99-812d16396a62/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/e220a3e5-b608-4432-afe4-2da5387d41ac/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/e376f4b0-93ea-4680-ac35-75d6b17ee94e/image.png" alt="">
    7. 방금 설정한 규칙을 볼수 있고 오른쪽 옆에 속성을 클릭 
<img src="https://velog.velcdn.com/images/chaey_p/post/426d8f16-f602-48e5-a887-36cc755b5ad9/image.png" alt="">
    8. 프로토콜 및 포트 탭으로 가서 IPv6 으로만 변경 후 적용 
<img src="https://velog.velcdn.com/images/chaey_p/post/0a06ea1d-7e1b-4ab6-b8b3-7e7d6cecba3e/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/f0ffed03-5ac5-4540-8644-7e906109f493/image.png" alt=""></p>
<h4 id="3-세번째-시도--방화벽-설정2">3) 세번째 시도 : 방화벽 설정2</h4>
<ol>
<li>방화벽 및 네트워크보호 - 고급설정</li>
<li>Windows Defender 방화벽 속성을 클릭 후 &quot;공용 프로필 탭&quot; 클릭</li>
<li>인바운드 연결 설정 차단(기본값) 을 허용상태로 변경
<img src="https://velog.velcdn.com/images/chaey_p/post/86fca112-ca70-49e2-9582-f058c2843d03/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/bad220aa-985d-4b09-8526-608b69b8b866/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/ea6a2383-7637-4fa3-8959-5ea9c5696c94/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/4287d638-2fab-4e3f-bd30-55b0309a4bc1/image.png" alt=""></li>
</ol>
<h4 id="4-네번째-시도--와이파이-네트워크-프로필-변경">4) 네번째 시도 : 와이파이 네트워크 프로필 변경</h4>
<ol>
<li>핸드폰과 컴퓨터가 동일한 wifi 환경에 접속되었는지 확인</li>
<li>[windows10] 설정 &gt; 네트워크 및 인터넷 &gt; Wi-Fi &gt; 연결된 wifi 선택 &gt; 네트워크 프로필 &quot;개인&quot;으로 변경
<img src="https://velog.velcdn.com/images/chaey_p/post/ceac1475-b9b3-486d-b744-7bbe0491f917/image.png" alt="">
<img src="https://velog.velcdn.com/images/chaey_p/post/f59ea6f4-ea28-4bb9-a0f8-03f17de9dc1f/image.png" alt=""></li>
</ol>
<p><em>=&gt;성공</em></p>
<p>와이파이가 공용으로 설정되어있으면 연결이안되었다. 
✨시도해보시는 분은 4번부터 확인 해 보시고 위의 방법을 시도해보시는 것을 추천드립니다 !</p>
<blockquote>
<pre><code>출처:
모바일에서 localhost 개발 환경 접속하기|작성자 아이크렌
https://phant0m.tistory.com/13
https://yujin-dev.tistory.com/49</code></pre></blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 문자열 겹쳐쓰기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B2%B9%EC%B3%90%EC%93%B0%EA%B8%B0</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B2%B9%EC%B3%90%EC%93%B0%EA%B8%B0</guid>
            <pubDate>Thu, 31 Aug 2023 07:08:58 GMT</pubDate>
            <description><![CDATA[<h3 id="코딩테스트-연습">코딩테스트 연습</h3>
<p>🟡언어 : Javascript</p>
<h3 id="🤖-문제">🤖 문제</h3>
<h3 id="문자열-겹쳐쓰기">문자열 겹쳐쓰기</h3>
<p>문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.</p>
<p>입출력</p>
<pre><code>my_string            |    overwrite_string    |    s    |    result
&quot;He11oWor1d&quot;        |    &quot;lloWorl&quot;            |    2    |    &quot;HelloWorld&quot;
&quot;Program29b8UYP&quot;    |    &quot;merS123&quot;            |    7    |    &quot;ProgrammerS123&quot;</code></pre><p>입출력 예 설명</p>
<p>예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 &quot;11oWor1&quot;이고 이를 &quot;lloWorl&quot;로 바꾼 &quot;HelloWorld&quot;를 return 합니다.</p>
<p>예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 &quot;29b8UYP&quot;이고 이를 &quot;merS123&quot;로 바꾼 &quot;ProgrammerS123&quot;를 return 합니다.</p>
<h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>function solution(my_string, overwrite_string, s) {
    const myStr = [...my_string]
    myStr.splice(s,overwrite_string.length,overwrite_string)
    return myStr.join(&quot;&quot;)
}</code></pre><h3 id="❇️-알게된-점">❇️ 알게된 점</h3>
<h3 id="--splice">- .splice()</h3>
<p><em>: 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경</em></p>
<blockquote>
<p>참고 : <a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice</a>
<a href="https://velog.io/@daydreamplace/TIL-JSArray-%EB%82%A0-%EA%B4%B4%EB%A1%AD%ED%9E%88%EB%8A%94-slice%EC%99%80-splice%ED%95%A8%EC%88%98">https://velog.io/@daydreamplace/TIL-JSArray-%EB%82%A0-%EA%B4%B4%EB%A1%AD%ED%9E%88%EB%8A%94-slice%EC%99%80-splice%ED%95%A8%EC%88%98</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 문자열 돌리기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8F%8C%EB%A6%AC%EA%B8%B0</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8F%8C%EB%A6%AC%EA%B8%B0</guid>
            <pubDate>Thu, 31 Aug 2023 05:22:31 GMT</pubDate>
            <description><![CDATA[<h3 id="코딩테스트-연습">코딩테스트 연습</h3>
<p>🟡언어 : Javascript</p>
<hr>
<h3 id="🤖-문제">🤖 문제</h3>
<h3 id="문자열-돌리기">문자열 돌리기</h3>
<p>문자열 str이 주어집니다.
문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.</p>
<p>입력</p>
<pre><code>abcde</code></pre><p>출력</p>
<pre><code>a
b
c
d
e</code></pre><h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on(&#39;line&#39;, function (line) {
    input = line;
}).on(&#39;close&#39;,function(){
    [...input].forEach(a =&gt; console.log(a))
});</code></pre><h3 id="💡-다른-풀이">💡 다른 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on(&#39;line&#39;, function (line) {
    input = [line];
}).on(&#39;close&#39;,function(){
    str = input[0];
    for(let i of str){
        console.log(i)
    }
});</code></pre><hr>
<h3 id="❇️-알게된-점">❇️ 알게된 점</h3>
<ol>
<li>문자열을 배열로 바꾸기</li>
<li>배열의 길이만큼의 값 1개씩 꺼내오기</li>
</ol>
<h3 id="--스프레드-연산자--es6">- 스프레드 연산자 [...] (ES6)</h3>
<p>*: 문자열을 배열로 전환 - 예) &#39;string&#39; -&gt; [&#39;s&#39;, &#39;t&#39;, &#39;r&#39;, &#39;i&#39;, &#39;n&#39;, &#39;g&#39;] *</p>
<p>세가지 방법 존재 </p>
<blockquote>
<p>1) String.prototype.split() : 스트링 프로토타입 메서드 split
2) [...string] : 스프레드 연산자 (ES6부터 추가)
3) Array.from(string) : Array 객체의 정적 메서드</p>
</blockquote>
<p>속도 비교
<img src="https://velog.velcdn.com/images/chaey_p/post/3a41a51b-f23e-48dd-af82-e3a3d48d2e8c/image.png" alt=""></p>
<blockquote>
<p>스프레드 연산자 &gt; split &gt; Array.from
스프레드 연산자가 Array.from에 비해 두 배 정도 빠른 속도를 보임</p>
</blockquote>
<p>split이 이모티콘을 처리하는 방식</p>
<pre><code>&#39;orange🍊&#39;.split(&#39;&#39;); // [ &#39;o&#39;, &#39;r&#39;, &#39;a&#39;, &#39;n&#39;, &#39;g&#39;, &#39;e&#39;, &#39;\ud83c&#39;, &#39;\udf4a&#39; ]
[...&#39;orange🍊&#39;]; // [&#39;o&#39;,  &#39;r&#39;, &#39;a&#39;, &#39;n&#39;,  &#39;g&#39;, &#39;e&#39;, &#39;🍊&#39;]
Array.from(&#39;orange🍊&#39;); // [&#39;o&#39;,  &#39;r&#39;, &#39;a&#39;, &#39;n&#39;,  &#39;g&#39;, &#39;e&#39;, &#39;🍊&#39;]</code></pre><p>위 코드와 같이, split 메서드는 멀티바이트 UTF8 문자를 처리할 때 이모티콘 인식 불가</p>
<p>구문</p>
<pre><code>strUpper = str.toUpperCase();</code></pre><hr>
<h3 id="--콜백함수foreach">- 콜백함수.forEach()</h3>
<p><em>: forEach()는 주어진 callback을 배열에 있는 각 요소에 대해 오름차순으로 한 번씩 실행
삭제했거나 초기화하지 않은 인덱스 속성에 대해서는 실행하지 않음.</em></p>
<h4 id="콜백함수-비교해보기-foreach-map-filter-reduce">콜백함수 비교해보기 forEach, map, filter, reduce</h4>
<p><em>*배열안의 요소들을 하나하나 탐색해줌 (for문 처럼)</em></p>
<p><strong>1.forEach</strong> : 주어진 함수를 배열에 있는 각 요소에 대해 실행</p>
<pre><code>! 구문

const array1 = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;];
array1.forEach((element) =&gt; console.log(element));

! 결과값
a
b
c</code></pre><p>*<em>2.map *</em>: 원본 배열의 요소를 하나하나 탐색하며 return한 값들로 새로운 배열을 생성(원본 배열 길이와 동일)</p>
<pre><code>! 구문
let a = [&quot;사과&quot;, &quot;바나나&quot;, &quot;복숭아&quot;];
let answer = a.map((value, index) =&gt; {
    return value + &quot;맛&quot;;
});
console.log(answer);

! 결과값
[&quot;사과맛&quot;, &quot;바나나맛&quot;, &quot;복숭아맛&quot;]</code></pre><p>*<em>3.filter *</em>: 원본 배열의 요소를 하나하나 탐색하면서 조건에 맞는 새로운 배열 생성(원본 배열 길이 무시)</p>
<pre><code>! 구문

let a = [10, 20, 30, 40, 50];
let answer = a.filter((value, index) =&gt; {
    return value &lt; 30;
});
console.log(answer);

! 결과값
[10,20]</code></pre><p>*<em>4.reduce *</em>: 배열의 각 요소에 대해 callback을 실행하며, 단 1개의 출력 결과값 반환
전체 합,최대값, 배열 펼치기, 배열 원소 개수 세기 </p>
<pre><code>! 구문

//합구하기
let total = [1, 2, 3, 4, 5].reduce(
  ( acc, curr ) =&gt; acc + curr, 
  0
);
console.log(total)

! 결과값
15</code></pre><hr>
<p>참고 : 
<a href="https://velog.io/@sunohvoiin/JavaScript-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-3%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95-convert-string-to-array">https://velog.io/@sunohvoiin/JavaScript-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-3%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95-convert-string-to-array</a></p>
<p><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 문자열 붙여서 출력하기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-m972cy1y</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-m972cy1y</guid>
            <pubDate>Thu, 31 Aug 2023 02:52:21 GMT</pubDate>
            <description><![CDATA[<h3 id="코딩테스트-연습">코딩테스트 연습</h3>
<p>🟡언어 : Javascript</p>
<h3 id="🤖-문제">🤖 문제</h3>
<h3 id="문자열-붙여서-출력하기">문자열 붙여서 출력하기</h3>
<p>두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.
입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요.</p>
<p>입력</p>
<pre><code>apple pen
Hello World!</code></pre><p>출력</p>
<pre><code>applepen
HelloWorld!</code></pre><h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on(&#39;line&#39;, function (line) {
    input = line.split(&#39; &#39;);
}).on(&#39;close&#39;, function () {
    str1 = input[0];
    str2 = input[1];
    console.log(str1+str2)
});</code></pre><h3 id="💡-다른사람의-풀이">💡 다른사람의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
}).on(&#39;line&#39;, function (line) {
    const strArr = line.split(&#39; &#39;)
    console.log(strArr.join(&#39;&#39;))
})</code></pre><pre><code> 나의 코드보다 유지보수성이 높은 방법이라 생각된다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 덧셈식 출력하기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-af34qiai</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0-af34qiai</guid>
            <pubDate>Thu, 31 Aug 2023 02:47:15 GMT</pubDate>
            <description><![CDATA[<h3 id="코딩테스트-연습">코딩테스트 연습</h3>
<p>🟡언어 : Javascript</p>
<h3 id="🤖-문제">🤖 문제</h3>
<h3 id="덧셈식-출력하기">덧셈식 출력하기</h3>
<p>두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.
제한 사항</p>
<pre><code>1 ≤ a, b ≤ 100</code></pre><p>입력</p>
<pre><code>4 5</code></pre><p>출력</p>
<pre><code>4 + 5 = 9</code></pre><h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on(&#39;line&#39;, function (line) {
    input = line.split(&#39; &#39;);
}).on(&#39;close&#39;, function () {
    const a = Number(input[0])
    const b = Number(input[1])

    if(a&gt;=1 &amp;&amp; b&lt;=100){
    const result = a+b
    console.log(a+&#39; + &#39;+b+&#39; = &#39;+result);
    }

});
</code></pre><h3 id="💡-다른-사람의-풀이">💡 다른 사람의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;)
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
}).on(&#39;line&#39;, function (line) {
    const [a, b] = line.split(&#39; &#39;)
    console.log(a, &#39;+&#39;, b, &#39;=&#39;, Number(a) + Number(b))
})
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 특수문자 출력하기
]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%ED%8A%B9%EC%88%98%EB%AC%B8%EC%9E%90-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%ED%8A%B9%EC%88%98%EB%AC%B8%EC%9E%90-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 30 Aug 2023 06:05:45 GMT</pubDate>
            <description><![CDATA[<h3 id="코딩테스트-연습">코딩테스트 연습</h3>
<p>🟡언어 : Javascript</p>
<h3 id="🤖-문제">🤖 문제</h3>
<h4 id="특수문자-출력하기">특수문자 출력하기</h4>
<p>다음과 같이 출력하도록 코드를 작성해 주세요.</p>
<p>출력</p>
<pre><code>!@#$%^&amp;*(\&#39;&quot;&lt;&gt;?:;</code></pre><h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.on(&#39;close&#39;, function () {
    console.log(&quot;!@#$%^&amp;*(\\&#39;\&quot;&lt;&gt;?:;&quot;);

});</code></pre><h3 id="❇️-알게된-점">❇️ 알게된 점</h3>
<h4 id="--특수문자-이스케이프-처리">- 특수문자 이스케이프 처리</h4>
<p><em>: ( \ 백슬래시를 &#39; 또는 &quot; 앞에 추가)</em></p>
<p> 작은 따옴표(&#39;) =&gt; &#39;
이스케이프되지 않은 큰 따옴표(&quot;) 앞에 백슬래시 \ 를 추가하여 문자열 내에서 큰 따옴표를 사용할 수 있도록 처리</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 대소문자 바꿔서 출력하기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%EB%B0%94%EA%BF%94%EC%84%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%EB%B0%94%EA%BF%94%EC%84%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 30 Aug 2023 05:23:39 GMT</pubDate>
            <description><![CDATA[<h3 id="코딩테스트-연습">코딩테스트 연습</h3>
<p>🟡언어 : Javascript</p>
<h3 id="🤖-문제">🤖 문제</h3>
<h4 id="대소문자-바꿔서-출력하기">대소문자 바꿔서 출력하기</h4>
<p>영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.</p>
<p>입력 </p>
<pre><code>aBcDeFg</code></pre><p>출력</p>
<pre><code>AbCdEfG</code></pre><h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on(&#39;line&#39;, function (line) {
    input = [line];
}).on(&#39;close&#39;,function(){
    str = input[0];
    arr = [];

    for (let i = 0; i &lt; str.length; i++) {
        if (str[i] === str[i].toUpperCase()) {
            arr.push(str[i].toLowerCase());
        } else {
            arr.push(str[i].toUpperCase());
    }
    }

    console.log(arr.join(&quot;&quot;))
});</code></pre><h3 id="❇️-알게된-점">❇️ 알게된 점</h3>
<h4 id="--touppercase">- toUpperCase()</h4>
<p><em>: 문자열을 대문자로 변환</em></p>
<p>구문</p>
<pre><code>strUpper = str.toUpperCase(); </code></pre><h4 id="--tolowercase">- toLowerCase()</h4>
<p><em>: 문자열을 소문자로 변환</em></p>
<p>구문</p>
<pre><code>strLower = str.toLowerCase(); </code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 문자열 반복해서 출력하기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%98%EB%B3%B5%ED%95%B4%EC%84%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%98%EB%B3%B5%ED%95%B4%EC%84%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 28 Aug 2023 23:55:52 GMT</pubDate>
            <description><![CDATA[<h3 id="코딩테스트-연습">코딩테스트 연습</h3>
<p><em>🟡언어 : Javascript</em></p>
<hr>
<h3 id="🤖-문제">🤖 문제</h3>
<p>문자열 반복해서 출력하기</p>
<p>문자열 str과 정수 n이 주어집니다.
str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.</p>
<h4 id="입출력-예">입출력 예</h4>
<ul>
<li>입력 #1
<em>string 5</em></li>
<li>출력 #1
stringstringstringstringstring</li>
</ul>
<hr>
<h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on(&#39;line&#39;, function (line) {
    input = line.split(&#39; &#39;);
}).on(&#39;close&#39;, function () {
    str = input[0];
    n = Number(input[1]);


    const repeatString = str.repeat(n);
    console.log(repeatString)
});</code></pre><hr>
<h3 id="❇️-알게된-점">❇️ 알게된 점</h3>
<h4 id="stringprototyperepeat">String.prototype.repeat()</h4>
<p> : 문자열을 주어진 횟수(count)만큼 반복해 붙인 새로운 문자열을 반환</p>
<h4 id="1-구문">1. 구문</h4>
<pre><code>str.repeat(count); </code></pre><h4 id="2-예외">2. 예외</h4>
<pre><code>RangeError: 반복 횟수는 양의 정수여야 함.
RangeError: 반복 횟수는 무한대보다 작아야 하며, 최대 문자열 크기를 넘어선 안됨.</code></pre><h4 id="3-활용">3. 활용</h4>
<p><em>- 반복문 안에서도 사용가능</em></p>
<pre><code>예시 구문
for(let i=0;i&lt;5;i++){
    console.log(&quot;*&quot;.repeat(i+1));
}

출력 구문
*
**
***
****
*****</code></pre><hr>
<blockquote>
<p>참고 : <a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/repeat">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/repeat</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] a와 b 출력하기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0</guid>
            <pubDate>Fri, 25 Aug 2023 05:40:10 GMT</pubDate>
            <description><![CDATA[<p><em><strong>코딩테스트 연습
🟡언어 : Javascript</strong></em></p>
<h3 id="🤖-문제">🤖 문제</h3>
<h4 id="문자열-출력하기">문자열 출력하기</h4>
<blockquote>
<p>문제 설명
정수 a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.</p>
</blockquote>
<h4 id="제한사항">제한사항</h4>
<blockquote>
<p>-100,000 ≤ a, b ≤ 100,000</p>
</blockquote>
<h4 id="입출력-예">입출력 예</h4>
<blockquote>
<p><em>입력 #1</em>
4 5
<em>출력 #1</em>
a = 4
b = 5</p>
</blockquote>
<h3 id="💡-나의-풀이">💡 나의 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on(&#39;line&#39;, function (line) {
    input = line.split(&#39; &#39;);

}).on(&#39;close&#39;, function () {
    const input1 = Number(input[0]);
    const input2 = Number(input[1]);

    if(input1&gt;=-100000 &amp;&amp; input1 &lt;=100000&amp;&amp;input2&gt;=-100000 &amp;&amp; input2 &lt;=100000){
        console.log(&#39;a = &#39;+input1);
        console.log(&#39;b = &#39;+input2);
    }
});</code></pre><h3 id="❇️-알게된-점">❇️ 알게된 점</h3>
<blockquote>
<p>input 배열은 전역 변수로 선언</p>
</blockquote>
<h3 id="변수의-유효-범위variable-scope"><strong>변수의 유효 범위(variable scope)</strong></h3>
<h4 id="1-지역-변수local-variable">1. 지역 변수(local variable)</h4>
<p>_  ⭐ 지역 변수(local variable) : 함수 내에서 선언된 변수
  ⭐ 지역 변수는 변수가 선언된 함수 내에서만 유효하며, 함수가 종료되면 메모리에서 사라짐
  ⭐ 함수의 매개변수 또한 함수 내에서 정의되는 지역 변수처럼 동작_</p>
<pre><code>  function localNum() {

    var num = 10; // 지역 변수 num에 숫자 10 대입

    document.write(&quot;함수 내부에서 변수 num의 타입은 &quot; + typeof num + &quot;입니다.&lt;br&gt;&quot;); // number

}

localNum();       // 함수 localNum()을 호출함.

document.write(&quot;함수의 호출이 끝난 뒤 변수 num의 타입은 &quot; + typeof num + &quot;입니다.&quot;); // undefined</code></pre><pre><code>    var b = &quot;A가a나A다a&quot;

      b.replace(/a/g,&quot;&quot;)
      // 결과 : &quot;A가나A다&quot;

      b.replace(/a/gi,&quot;&quot;)
      // 결과 : &quot;가나다&quot;
</code></pre><h4 id="2-전역-변수global-variable">2. 전역 변수(global variable)</h4>
<p>_  ⭐ 전역 변수(global variable) : 함수의 외부에서 선언된 변수
  ⭐ 프로그램의 어느 영역에서나 접근할 수 있으며, 웹 페이지가 닫혀야만 메모리에서 사라짐_</p>
<pre><code>var num = 10; // 전역 변수 num 선언

function globalNum() {

    document.write(&quot;함수 내부에서 변수 num의 값은 &quot; + num + &quot;입니다.&lt;br&gt;&quot;); // 10

    num = 20; // 전역 변수 num의 값을 함수 내부에서 변경

}

globalNum();  // 함수 globalNum()을 호출

document.write(&quot;함수의 호출이 끝난 뒤 변수 num의 값은 &quot; + num + &quot;입니다.&quot;); // 20</code></pre><h4 id="3-constlet">3. const,let</h4>
<p>_  🛡️ const : 상수 (변치 않는 값을 갖는 변수 - 항상 같은 수)</p>
<pre><code>    - 값 재할당 X
    const myName = &#39;NY KIM&#39;;
    myName = &#39;Nana&#39;;  //TypeError: Assignment to constant variable

    - 반드시 값 할당
    const a;
    console.log(a); //SyntaxError: Missing initializer in const declaration</code></pre><p>_  🕯️ let</p>
<pre><code>    - 다른 값 재할당 O
    let meal = &#39;Bulgogi&#39;;
    meal = &#39;Bibimbap&#39;;_</code></pre><blockquote>
<p>나중에 다른 값 줄 거야!: let
값 안 바꿀 건데: const</p>
</blockquote>
<h4 id="3-var-문제점">3. var 문제점</h4>
<p>_  ⭐ 스코프(scope) 란 변수가 사용될 수 있는 영역_</p>
<ul>
<li>함수스코프</li>
</ul>
<blockquote>
<ol>
<li>var 는 함수 스코프라서 함수 밖에서 사용하면 에러가 발생한다.</li>
</ol>
</blockquote>
<pre><code>function error() {
    var a = 1;
}
console.log(a);     // ReferenceError: a is not defined</code></pre><blockquote>
<ol start="2">
<li>var 키워드 없이 변수를 선언하면 전역 변수가 된다.</li>
</ol>
</blockquote>
<pre><code>function global() {
    a = 1;
}
function local() {
    console.log(a);
}
global();
local();    // 1 출력</code></pre><blockquote>
<ol start="3">
<li>for 문에서 선언된 변수가 사라지지 않는다.
for 문 뿐만 아니라 while, switch, if 문 등 함수 내부에서 작성되는 모든 코드가 같은 문제를 안고 있다.</li>
</ol>
</blockquote>
<pre><code>for (var i = 0; i &lt; 10; i++) {
    console.log(i);     // 0 ~ 9 출력
}
console.log(i);     // 10 출력</code></pre><ul>
<li>호이스팅(hoisting)
  var 로 정의된 변수는 해당 스코프의 최상단으로 끌어올려진다.</li>
</ul>
<blockquote>
<ol>
<li>변수를 선언 없이 사용하면 참조 에러가 발생한다.</li>
</ol>
</blockquote>
<pre><code>console.log(a);     // ReferenceError: a is not defined</code></pre><blockquote>
<ol start="2">
<li>하지만 다음 코드는 에러가 발생하지 않는다.</li>
</ol>
</blockquote>
<pre><code>console.log(a);     // undefined
var a = 1;</code></pre><blockquote>
<ol start="3">
<li>호이스팅에 의해 위 코드는 아래와 같이 취급된다.</li>
</ol>
</blockquote>
<pre><code>var a = undefined;
console.log(a);     // undefined
a = 1;</code></pre><blockquote>
<ol start="3">
<li>심지어 변수 선언 전에 값을 할당할 수도 있다.</li>
</ol>
</blockquote>
<pre><code>console.log(a);     // undefined
a = 2;
console.log(a);     // 2
var a = 1;</code></pre><pre><code>=&gt; 이런 호이스팅 개념은 코드를 직관적이지 않게 만들며, 버그가 발생하여도 정확한 원인을 찾기 힘들게 만든다.</code></pre><ul>
<li>항상 재할당 가능
  var 는 재할당 가능한 변수로만 만들 수 있다.
  따라서 상수처럼 고정된 값을 변수로 선언해서 이용해야 할 때에도 변경될 위험이 존재</li>
</ul>
<h4 id="4-constlet-문제점-해결">4. const,let 문제점 해결</h4>
<p>_  ⭐ ES6 에서 const 와 let 을 이용하는 새로운 변수 정의 방법이 생김_</p>
<ul>
<li>블록 스코프
  대부분의 언어에서 블록 스코프를 사용
  블록 스코프에서는 블록을 벗어나면 변수를 사용할 수 없다.</li>
</ul>
<blockquote>
<ol>
<li>블록을 벗어나도 살아있던 var 변수와 달리 const, let 변수는 블록을 벗어나면 관리해줄 필요가 없다.</li>
</ol>
</blockquote>
<pre><code>if (true) {
    const a = 0;
}
console.log(a);     // ReferenceError: a is not defined</code></pre><ul>
<li>호이스팅(hoisting)
  const, let 도 호이스팅 되지만, 변수를 선언하기 전에 사용하려하면 에러발생</li>
</ul>
<blockquote>
<ol>
<li>const, let 은 서로 다른 스코프에서 같은 이름의 변수를 사용할 때 실수를 방지</li>
</ol>
</blockquote>
<pre><code>console.log(a);      // ReferenceError: Cannot access &#39;a&#39; before initialization
const a = 1;</code></pre><blockquote>
<ol start="2">
<li>아래 코드에서 a 는 다른 블록 스코프지만 상위에 선언되었기 때문에 1 이 출력</li>
</ol>
</blockquote>
<pre><code>const a = 1;
{
    console.log(a);     // 1
}</code></pre><blockquote>
<ol start="3">
<li>하지만 아래 코드에서는 참조 에러가 발생한다. 하위 블록 스코프에서 호이스팅으로 인해 const a = 2 로 할당 되기 전까지는 사용이 불가능하다. 이처럼 같은 이름의 변수를 사용할 때의 실수를 방지해준다.</li>
</ol>
</blockquote>
<pre><code>const a = 1;
{
    console.log(a);
    const a = 2;
}</code></pre><ul>
<li>재할당 불가능 const</li>
</ul>
<blockquote>
<p>const 로 정의된 변수 : 재할당 불가능, const 로 정의된 객체의 내부 속성값은 수정 가능
    let 으로 선언된 변수 : 재할당 가능</p>
</blockquote>
<pre><code>const arr = [1, 2];
arr[0] = 3;
arr.push(4);
console.log(arr);   // [3, 2, 4]</code></pre><p>💗자세한 내용은 아래 블로그에 이해하기 쉽게 설명
<a href="https://nykim.work/72">https://nykim.work/72</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 Lv.0] 문자열 출력하기]]></title>
            <link>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@chaey_p/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.0%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 24 Aug 2023 02:59:19 GMT</pubDate>
            <description><![CDATA[<p><em><strong>코딩테스트 연습
🟡언어 : Javascript</strong></em></p>
<h3 id="🤖-문제">🤖 문제</h3>
<h4 id="문자열-출력하기">문자열 출력하기</h4>
<blockquote>
<p>문제 설명
문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.</p>
</blockquote>
<h4 id="제한사항">제한사항</h4>
<blockquote>
<p>1 ≤ str의 길이 ≤ 1,000,000
str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.</p>
</blockquote>
<h4 id="입출력-예">입출력 예</h4>
<blockquote>
<p><em>입력 #1</em>
HelloWorld!
<em>출력 #1</em>
HelloWorld!</p>
</blockquote>
<h3 id="💡-풀이">💡 풀이</h3>
<pre><code>const readline = require(&#39;readline&#39;);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];


    rl.on(&#39;line&#39;, function (line) {
    input += line; //여러줄 입력 하나의 문자열로 합침
}).on(&#39;close&#39;,function(){

        const str = input.trim(); //양쪽 공백제거

        if (str.length &gt;= 1 &amp;&amp; str.length &lt;= 1000000) {
        const replacedStr = str.replace(/ /g, &#39;&#39;); //공백을 빈값으로 바꾸어 제거
        console.log(replacedStr);
        }
});</code></pre><h3 id="❇️-알게된-점">❇️ 알게된 점</h3>
<blockquote>
<p>** 문자열 공백제거 (replace,trim)**</p>
</blockquote>
<h4 id="1-replace">1. replace</h4>
<pre><code>  var a = &quot;가 나 다 라 마 바 사 &quot;

    a.replace(&quot; &quot;,&quot;&quot;)
    // 결과 : &quot;가나 다 라 마 바 사 &quot;

    a.replace(/ /g,&quot;&quot;)
    // 결과 : &quot;가나다라마바사&quot;</code></pre><p>_  ⭐ replace 를 이용하면 공백을 빈값으로 바꾸어 제거하는 것과 같은 효과
  ⭐ 다만, 문자열의 모든 공백을 제거하기 위해선 정규식을 사용
  ⭐ 정규식에서 / /사이의 값을 replace의 두번째 인자값으로 교체가 가능하며, 뒤에붙는 g는 문자열의 모든 / / 사이의 값을 바꿔줌_</p>
<pre><code>    var b = &quot;A가a나A다a&quot;

      b.replace(/a/g,&quot;&quot;)
      // 결과 : &quot;A가나A다&quot;

      b.replace(/a/gi,&quot;&quot;)
      // 결과 : &quot;가나다&quot;
</code></pre><h4 id="2-trim">2. trim</h4>
<pre><code>  var a = &quot; 가 나 다 라 마 &quot;
    a.trim()

    // 결과 : &quot;가 나 다 라 마&quot;</code></pre><p>_ ⭐ replace는 문자를 교체하는것이기 때문에 공백이 아니라도 가능
  ⭐ 위와같이 a라는 문자를 공백으로 교체를 하기위해 정규식을 사용하였는데, g만 사용하면 같은 문자라도 대소문자를 가림
=&gt; 따라서, i 옵션을 주어 대소문자를 모두 포함시킬 수 있음._</p>
<blockquote>
<p>** 문자열 합치기 (+, concat, join)**
  문자열을 연결하거나 붙이기 :  &quot;+&quot; 연산자, concat() 함수
  배열의 문자열을 합치기 : join() 함수</p>
</blockquote>
<ul>
<li>문자열을 합칠 때는 일반적으로 &quot;+&quot; 연산자를 많이 사용 </li>
<li>&quot;+&quot; 연산자가 concat() 함수보다 조금 더 성능이 좋은 걸로 알려져 있음</li>
</ul>
<h4 id="1--연산자를-사용하여-문자열-합치기">1. &quot;+&quot; 연산자를 사용하여 문자열 합치기</h4>
<pre><code> var str = &#39;Java&#39; + &#39;Script&#39;;

// 결과 : &#39;JavaScript&#39;</code></pre><pre><code>  var str = &#39;JavaScript&#39;;
  str += &#39; &#39;;
  str += &#39;Developer&#39;;

// 결과 : &#39;JavaScript Developer&#39;</code></pre><p> ⭐ <em>문자열 변수를 합칠때도 &quot;+&quot; 연산자 사용 (str1 + str2 + str3)
 ⭐ 문자열을 연속으로 합칠 때는 &quot;+=&quot; 연산자 사용 (동일 문법)</em></p>
<h4 id="2-concat-함수를-사용하여-문자열-합치기">2. concat() 함수를 사용하여 문자열 합치기</h4>
<pre><code>  var str1 = &#39;Java&#39;;
  var str2 = &#39;Script&#39;;
  var str3 = &#39; &#39;;
  var str4 = &#39;Developer&#39;;
  var res = str1.concat(str2, str3, str4);

// 결과 : &#39;JavaScript Developer&#39;</code></pre><p> ⭐ <em>concat() 함수의 인자는 1개 이상 입력해야 하며, 입력한 인자의 개수만큼 문자열을 합침</em></p>
<pre><code>  var res = &#39;&#39;.concat(&#39;JavaScript&#39;, &#39; &#39;, &#39;Developer&#39;);

// 결과 : &#39;JavaScript Developer&#39;</code></pre><p> ⭐ <em>빈 문자(&#39;&#39;)에서 concat() 함수 사용 가능</em></p>
<h4 id="3-join-함수를-사용하여-배열을-문자열로-합치기">3. join() 함수를 사용하여 배열을 문자열로 합치기</h4>
<pre><code>   var langs = [&#39;HTML&#39;, &#39;CSS&#39;, &#39;JavaScript&#39;];
   var res = langs.join();

// 결과 : &#39;HTML,CSS,JavaScript&#39;</code></pre><p> ⭐ <em>join() 함수에 빈 문자를 인자로 넣으면 구분자없이 문자열 합침</em></p>
<pre><code>  var langs = [&#39;HTML&#39;, &#39;CSS&#39;, &#39;JavaScript&#39;];
  var res = langs.join(&#39;/&#39;);

// 결과 : &#39;HTML/CSS/JavaScript&#39;</code></pre><p> ⭐ <em>join() 함수에 특정 구분자(&#39;/&#39;)를 인자로 넣으면 해당 구분자로 배열의 문자열을 합침</em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[에러] error: src refspec main does not match any]]></title>
            <link>https://velog.io/@chaey_p/%EC%97%90%EB%9F%AC-error-src-refspec-main-does-not-match-any</link>
            <guid>https://velog.io/@chaey_p/%EC%97%90%EB%9F%AC-error-src-refspec-main-does-not-match-any</guid>
            <pubDate>Tue, 18 Jul 2023 00:57:33 GMT</pubDate>
            <description><![CDATA[<h2 id="1">1.</h2>
<blockquote>
<p>🚧 에러 상황 <strong>error: src refspec main does not match any</strong></p>
</blockquote>
<p>** git push origin master**
 입력하니 에러 발생</p>
<blockquote>
<p>🔎 이유 </p>
</blockquote>
<ul>
<li>깃허브에서 pull 없이 push할 경우 기존 내용을 삭제하거나 하는 문제가 생길 수 있기 때문에, 이런 문제를 피하고자 에러 메세지를 발생</li>
</ul>
<p>❓해결방안
$ git init
$ git add .
$  git log --graph --oneline --all
$ git commit -m &#39;커밋 메세지&#39;
$ git push -u origin master</p>
<h2 id="2">2.</h2>
<blockquote>
<p>🚧 에러상황 error: src refspec master does not match any
error: failed to push some refs to &#39;<a href="https://github.com/">https://github.com/</a>~~</p>
</blockquote>
<p><strong>$ git push -u origin master</strong>
 입력하니 에러 발생</p>
<blockquote>
<p>🔎 이유 </p>
</blockquote>
<ul>
<li>master branch가 없어서 발생하는 오류</li>
</ul>
<p>❓해결방안
$ git checkout -b &#39;master&#39;
$ git push origin master</p>
<ul>
<li>[new branch]      master -&gt; master 성공!❇️</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>