<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dkssud-hi.log</title>
        <link>https://velog.io/</link>
        <description>멋있는 개발자를 꿈꾸는 코린이</description>
        <lastBuildDate>Mon, 15 Aug 2022 15:08:04 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>dkssud-hi.log</title>
            <url>https://velog.velcdn.com/images/dkssud-hi/profile/1d463cf5-e939-4867-91e8-b7a2acf615b5/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. dkssud-hi.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dkssud-hi" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[8/16]]></title>
            <link>https://velog.io/@dkssud-hi/816</link>
            <guid>https://velog.io/@dkssud-hi/816</guid>
            <pubDate>Mon, 15 Aug 2022 15:08:04 GMT</pubDate>
            <description><![CDATA[<p>도전과 실패를 두려워하지마라 
실패하더라도 그속에 내가 배우는 것이 있고 다시 돌아오면 된다.
충분히 생각해보고 가슴을 따라가자. 본능을 따라가다보면
언젠간 내가 진정 원하는 삶을 살 수 있을것이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[8/1]]></title>
            <link>https://velog.io/@dkssud-hi/81-bgqqwcst</link>
            <guid>https://velog.io/@dkssud-hi/81-bgqqwcst</guid>
            <pubDate>Mon, 01 Aug 2022 15:02:31 GMT</pubDate>
            <description><![CDATA[<p>목표 : 멋있는 서비스를 배포하는 개발자
서비스를 배포하기위해 내가 해야할 것 들을 하나씩 해나가면 된다.
조급해할것 없이 하나씩 하나씩 해나가면 된다.</p>
<p>오늘 한것
알고리즘 한문제
강의 컬렉션 프로그램 (복습 안함)</p>
<p>운동(o) 독서(x) &gt; 아침에 조금 더 부지런하게 
운동을 아침 공복에 시작해보자 잠도 깰겸 헬스장에서 찬물 샤워 후 운동 한시간 하고오기.</p>
<p>이력서는 주말에 하나씩 지원해나가는 생각으로
일주일에 하루는 오로지 나를 위한 시간으로 시간을 비우자.
해야할것들을 해나가되 조금은 여유를 가지고 돌아보면서 나아가자.</p>
<p>6:00 ~ 7:00 
7:00 ~ 8:00 // 운동 </p>
<p>8:00 ~ 9:00 // 아침식사</p>
<p>10:00 ~ 11:00
11:00 ~ 12:00
12:00 ~ 13:00
13:00 ~ 14:00 // 알고리즘</p>
<p>14:00 ~ 15:00 // 점심식사</p>
<p>15:00 ~ 16:00
16:00 ~ 17:00
17:00 ~ 18:00 // 강의</p>
<p>18:00 ~ 19:00 // 저녁식사</p>
<p>19:00 ~ 20:00
20:00 ~ 21:00
21:00 ~ 22:00
22:00 ~ 23:00 // 복습, 추가학습(오늘 공부하면서 더 조사해봐야겠다고 느낀것)</p>
<p>23:00 ~ 24:00 // 독서</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[7/31 공부 기록]]></title>
            <link>https://velog.io/@dkssud-hi/731-%EA%B3%B5%EB%B6%80-%EA%B8%B0%EB%A1%9D</link>
            <guid>https://velog.io/@dkssud-hi/731-%EA%B3%B5%EB%B6%80-%EA%B8%B0%EB%A1%9D</guid>
            <pubDate>Sun, 31 Jul 2022 07:39:16 GMT</pubDate>
            <description><![CDATA[<ul>
<li><p>섹션2 함수형으로 전환하기 (2회독 후기)
우리가 평소에 Array객체의 메소드로 다루던 filter, map 메소드를 함수형으로 변환하는 것부터 시작하여
여러 가지 함수를 만들며 함수형 프로그램에 대한 사용법?, 이점? 등등 함수형 프로그램의 전반적인 내용을 다루었다.
사실 이번 2회독 까지는 새로 만드는 함수에 대해 이해하느라 급급했다. 그래서 그런지 강의 내용의 핵심까지는 파악을 하기는 힘들었다. 대충 아.. 이래서 함수형 프로그램을 쓰는구나, 함수형 프로그래밍을 하면 코드를 좀 더 간결하게 쓰고 좀 더 안전하게 프로그램을 짤 수 있겠구나 하는 감만 조금 잡힌상태?
일단 메소드에 대한 이해를 한 후 추 후에 한번 더 들어봐야겠다. 어서 강의를 다 들은 후 모든 내용이 이해 될 때 까지 강의를 더 들어봐야겠다.</p>
</li>
<li><p>명령형 프로그램과 선언형 프로그램
명령형 프로그램은 어떻게 할것인가에 초점이 맞춰져있는 데에 반해 선언형 프로그램은 무엇을 할것인지에 초점이 맞춰져있다. 실생활에 예를 들어 설명하자면 내가 롯데타워에 가는 길을 설명한다고 할 때 
명령형 프로그램은 “ 현 위치에서 500미터 걸어가서 좌회전 후 xx공구점까지 직진한 후 우회전하면 됩니다.”이고
선언형 프로그램은 “롯데타워의 주소는 서울특별시 xx동 xxx번지” 이다.
이렇게 보면 선언형 프로그램은 명령형 프로그램으로 잘 추상화 되어있는 프로그램인것같다. 
함수형 프로그래밍도 명령형 코드들을 함수로 추상화하여 만들어진 함수들로 하여금 선언적으로 프로그래밍 할 수 있게끔 만들어주는 프로그래밍 방식인 것 같다.</p>
</li>
<li><p>배열의 key값은 인덱스이다. 
오늘 함수형프로그래밍 강의를 듣는도중 Object.keys() 메소드의 인자로 일반 배열을 넣는데 필자는 key값은 객체나 map등 key값이 명시되어있는 배열형 객체만 가지고 있는줄 알아 한참이나 이해가 가지 않아 직접 코드를 실행시켜
실험을 해보니 Object.keys([1,2,3,4,5])의 리턴값이 [‘0’,‘1’,‘2’,‘3’,‘4’] 로 나오는 것이다, 즉 Object.keys()에 배열을 넣으면 해당 배열의 모든 요소의 인덱스번호가 문자형으로 표시된 배열이 리턴된다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[8월까지 나아갈 방향]]></title>
            <link>https://velog.io/@dkssud-hi/8%EC%9B%94%EA%B9%8C%EC%A7%80-%EB%82%98%EC%95%84%EA%B0%88-%EB%B0%A9%ED%96%A5</link>
            <guid>https://velog.io/@dkssud-hi/8%EC%9B%94%EA%B9%8C%EC%A7%80-%EB%82%98%EC%95%84%EA%B0%88-%EB%B0%A9%ED%96%A5</guid>
            <pubDate>Sun, 24 Jul 2022 08:03:56 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p>알고리즘</p>
<blockquote>
<p>문제 수를 경쟁하려는게 아니다. 어떻게하면 더 좋은 코드로 문제를 해결할 수 있을까, 이 문제를 해결하기 위해서 어떻게 코드를 짜야할지 생각하면서 생각하는 힘과 경험을 기르는 과정이다. 난 공부를 하려는거지 경쟁을 하려는게 아니다. 조급해지지 말자 문제를 많이푼다고 실력이 느는게 아니다.
공부든 뭐든, 천천히 여유를 가지고 본질이 무엇인지 알고 나아가자.</p>
</blockquote>
</li>
<li><p>js 기초 문법공부, css, html</p>
<blockquote>
<p>인프런의 무료강좌인 함수형 프로그래밍을 우선 완강하자.
그 후 노마드코더의 코코아클론코딩으로 css와 html을 다시 공부하자.
이도 마찬가지로, 본질을 잊지말자 강의수를 채우려고 공부하는 것이 아니다. 알기 위해서 하는것이다.</p>
</blockquote>
</li>
<li><p>이력서 작성(인턴 알아보기)</p>
<blockquote>
<p>취업지원금을 받기 위해서도 있지만, 본질적인 이유는 내 실력을 가늠해보고싶다. 자꾸 내 실력을 내가 판단하게되면 나를 너무 모자르게 보는 경향이 있다. 판단은 평가하는 사람이 하는것이다. 
지레 겁먹지말고 나를 증명해보자. 자꾸 지원하고 경험해보자.  </p>
</blockquote>
</li>
<li><p>코딩동아리 지원</p>
<blockquote>
<p>코딩동아리에 지원해서 사람들과 함께 프로젝트를 진행해보자.
인맥이 중요하다더라, 나와 같은 방향을 보고 걷는 사람들과 함께 프로젝트를 진행해보고싶다. 나의 이력은 자연스레 채워질것이다.</p>
</blockquote>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/JadenCase 문자열 만들기]
JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4JadenCase-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4JadenCase-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0JavaScript</guid>
            <pubDate>Mon, 18 Jul 2022 12:31:22 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/4d85fec2-6efb-45f8-85a2-c26cacf89541/image.PNG" alt=""></p>
<blockquote>
<h4 id="제한사항">제한사항</h4>
</blockquote>
</blockquote>
</blockquote>
<ul>
<li>s는 길이 1 이상 200 이하인 문자열입니다.</li>
<li>s는 알파벳과 숫자, 공백문자(&quot; &quot;)로 이루어져 있습니다.</li>
<li>숫자는 단어의 첫 문자로만 나옵니다.</li>
<li>숫자로만 이루어진 단어는 없습니다.</li>
<li>공백문자가 연속해서 나올 수 있습니다.</li>
</ul>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(s) {
return s.toLowerCase()
          .split(&quot; &quot;)
          .map(x=&gt; x == &quot;&quot; ? x:x[0].toUpperCase()+x.slice(1))
          .join(&quot; &quot;);
}</code></pre>
<h3 id="1-문제-풀이">1. 문제 풀이</h3>
<pre><code>이 문제의 핵심은 공백 이후 문자열의 첫번 째 문자만 대문자로 변경해주는것이다.
그래서 필자는 우선 toLowerCase를 이용해 인자로 주어진 문자열s를 모두 소문자로 변경해주고
split을 이용하여 공백을 구분자로 문자열을 배열로 나누어주었다.
그리고 map을 이용하여 현재 인덱스의 요소가 “”(빈문자열)임을 검사해 맞다면 그대로 “”를 리턴해주고
아니라면 문자열의 첫 번째 문자만 toUpperCase를 이용하여 대문자로 바꿔준 후 
slice의 인자에 1(시작 인덱스)을 넣어주어 문자열의 0번째 문자를 제외한 1번째 문자부터 문자열의 끝까지를 반환해주어 두 문자열을 붙여 새로운 배열에 리턴해준다.
그리고 join을 이용해 배열의 모든값을 다시 &quot; &quot;을 구분자로 붙여주면 정답이 나오게 된다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/N개의 최소공배수] JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4N%EA%B0%9C%EC%9D%98-%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98-JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4N%EA%B0%9C%EC%9D%98-%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98-JavaScript</guid>
            <pubDate>Mon, 18 Jul 2022 12:20:45 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 
공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 
이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/b35c3050-c793-4266-907b-2ee32857ba5a/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(arr) {
    var max = arr.sort((a,b)=&gt;b-a).shift();
    var value = 1;

    function check(sort_arr, new_max){
        for(var i=0; i&lt;sort_arr.length; i++){
            if(new_max%sort_arr[i] != 0){
                return false;
            }
        }
        return true;
    }

    while(!check(arr,(max*value))){
        value++;      
    }



    return max*value;
}</code></pre>
<h3 id="1-문제-풀이">1. 문제 풀이</h3>
<pre><code>N개의 수들의 최소공배수의 최소값은 N개의 수들 중 제일 큰 수임을 발견하였고 그에 착안하여 코드를 짰다.
인자로 주어진 배열 arr의 수들중 제일 큰 수를 찾아내었다 이 과정은 arr.sort를 이용하여 배열을 내림차순으로
정리하면 제일 앞에 위치한 수가 제일 큰 수이므로 shift를 이용해 그 값을 배열에서 빼내어 리턴해주었다.
value는 max에 차례대로 배수를 만들어주기 위한 수이므로 초기값을 1로 지정해주었다.

그 후 공배수임이 참이되려면 남은 arr의 요소들이 차례대로 주어지는 max값과 모두 나누어 떨어져야함을
착안하여 인자로 주어지는 수(max_value)가 공배수임을 확인해주는 함수 check을 만들어
이를 while문의 조건문으로 넣어 check의 max_value인자를 max의 1배수부터 차례대로 넣어
최소값부터 차례대로 검사하여 참인경우 반복문을 빠져나와 

최종적으로 최소공배수(max*value)를 리턴하도록 하였다. </code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/로또의 최고 순위와 최저 순위] JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EB%A1%9C%EB%98%90%EC%9D%98-%EC%B5%9C%EA%B3%A0-%EC%88%9C%EC%9C%84%EC%99%80-%EC%B5%9C%EC%A0%80-%EC%88%9C%EC%9C%84-JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EB%A1%9C%EB%98%90%EC%9D%98-%EC%B5%9C%EA%B3%A0-%EC%88%9C%EC%9C%84%EC%99%80-%EC%B5%9C%EC%A0%80-%EC%88%9C%EC%9C%84-JavaScript</guid>
            <pubDate>Sun, 17 Jul 2022 13:12:12 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.
자세한 설명은 아래의 링크를 참조하여주세요.
<a href="https://school.programmers.co.kr/learn/courses/30/lessons/77484">https://school.programmers.co.kr/learn/courses/30/lessons/77484</a></p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/2a4416d3-985f-4c4b-9a02-36166a49a972/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(lottos, win_nums) {
    var check_num = [6,6,5,4,3,2,1];
    var min_count =0; // 맞춘 갯수의 최솟값
    var zero_count = 0; // 0의 갯수를 count

    for(var i=0; i&lt;lottos.length; i++){
        if(lottos[i]==0){
            zero_count++; // lottos의 요소가 0이면  zero_count++
        }
        else{
             for(var j=0; j&lt;win_nums.length; j++){
                 if(lottos[i]==win_nums[j]){ // 당첨번호와 적은번호가 동일하다면 
                     min_count++;  // min_count++
                 }
             }
        }
    }

    return [check_num[min_count+zero_count],check_num[min_count]];
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<pre><code>처음 주어진 lottos배열에서 당첨된 번호 갯수가 최소값이고
lottos배열의 0의 갯수를 더하면 최댓값임을 이용하여 풀었습니다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/신규 아이디 추천] JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%8B%A0%EA%B7%9C-%EC%95%84%EC%9D%B4%EB%94%94-%EC%B6%94%EC%B2%9C-JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%8B%A0%EA%B7%9C-%EC%95%84%EC%9D%B4%EB%94%94-%EC%B6%94%EC%B2%9C-JavaScript</guid>
            <pubDate>Sun, 17 Jul 2022 12:56:34 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, &quot;네오&quot;가 설계한 7단계의 처리 과정을 거친 후의 추천 아이디를 return 하도록 solution 함수를 완성해 주세요.
자세한 설명은 아래의 링크를 참고하여주세요.
<a href="https://school.programmers.co.kr/learn/courses/30/lessons/72410">https://school.programmers.co.kr/learn/courses/30/lessons/72410</a></p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/fa3e13a5-4617-4b5c-8e8d-e21659d43556/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(new_id) {
    var temp = [];
    var id =  new_id.toLowerCase();
    var result = &#39;&#39;;

    for(var i=0; i&lt;id.length; i++){//1
        var ascii = id.charCodeAt(i);
        if((ascii&gt;=97 &amp;&amp; ascii&lt;=122) || (ascii&gt;=48 &amp;&amp; ascii&lt;=57) || (ascii&gt;=45 &amp;&amp; ascii&lt;=46) || ascii === 95){
            if(ascii === 46 &amp;&amp; id.charCodeAt(i+1)===46){
                continue;
            }
            else if(ascii === 46 &amp;&amp; temp[temp.length-1]===&#39;.&#39;){
                continue;
            }
            else{
                temp.push(id[i]);
            }
        }
    }
   //2
    temp[0] == &#39;.&#39; ? temp[0]=&#39;&#39;:false;
    temp[temp.length-1] == &#39;.&#39; ? temp[temp.length-1]=&#39;&#39;:false;

    result = temp.join(&#39;&#39;);
    //3
    if(result.length &lt;= 2){
        if(result.length == 0){
            result = &#39;aaa&#39;;
        }
        else{
            while(result.length &lt; 3){
                result += result[result.length-1];
            }
        }
    }
    else{
        if(result.length&gt;15){
            result = result.substr(0,15);
            while(result[result.length-1] == &#39;.&#39;){
                 result = result.substr(0,result.length-1);
            }
        }
    }

    return result;
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<pre><code>처음 for문에서는 남겨야할 문자의 아스키코드를 이용하여 temp배열에 push를 해주었고
여기서 문자 ‘.’은 아스키코드가 46인데 if ... else if문으로 .이 중복되어 들어가는 것을 방지했습니다.
첫번째 for문이 끝나고 주석 2부분에서 temp의 양 끝단에 . 이 있는 경우 제거하도록 하였고
join 메소드를 이용해 배열을 문자열로 반환하여 result변수에 넣어주었습니다.
그리고 3번 주석부터 문자열의 길이를 비교하여 조건에 맞게끔 문자열을 조정해준 후
result를 반환해주었습니다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/숫자 문자열과 영단어]
JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%88%AB%EC%9E%90-%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EC%98%81%EB%8B%A8%EC%96%B4JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%88%AB%EC%9E%90-%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EC%98%81%EB%8B%A8%EC%96%B4JavaScript</guid>
            <pubDate>Sun, 17 Jul 2022 12:48:22 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
-1478 → &quot;one4seveneight&quot;
-234567 → &quot;23four5six7&quot;
-10203 → &quot;1zerotwozero3&quot;
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/2ae0de3a-5773-4b5f-be4b-495b276b524e/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(s) {
    var number = [&#39;zero&#39;,&#39;one&#39;,&#39;two&#39;,&#39;three&#39;,&#39;four&#39;,&#39;five&#39;,&#39;six&#39;,&#39;seven&#39;,&#39;eight&#39;,&#39;nine&#39;];
    var answer = []; //정답을 넣을 배열

    for(var i=0; i&lt;s.length; i++){
        if(0 &lt;= +s[i]){ // 문자열 s의 i번째 문자를 +를 이용하여 숫자로 바꿨을 때
          //숫자인것은 answer에 push한다. 문자에 + 연산을 해주는 경우엔 NaN이 출력되므로
          // 어떤 값과 비교해도 false가 나온다.
            answer.push(+s[i]);
        }
        else{ // 문자인 경우 numbers 배열을 순차적으로 순회하여
            for(var j=0; j&lt;number.length; j++){
                if(s.indexOf(number[j],i)  === i ){ // 중복을 방지하기 위해 i번째 인덱스부터 해당 문자가 있는지 탐색한다.
                    answer.push(j); 
                    i += (number[j].length-1);
                    break;
                }
            }
        }
    }

    return +answer.join(&#39;&#39;); // 정답배열을 join메소드를 이용해 묶어 문자열로 반환후 +연산을 이용해 number형으로 리턴한다.
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/키패드 누르기] JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%82%A4%ED%8C%A8%EB%93%9C-%EB%88%84%EB%A5%B4%EA%B8%B0-JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%82%A4%ED%8C%A8%EB%93%9C-%EB%88%84%EB%A5%B4%EA%B8%B0-JavaScript</guid>
            <pubDate>Sun, 17 Jul 2022 12:23:30 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>순서대로 누를 번호가 담긴 배열 numbers, 왼손잡이인지 오른손잡이인 지를 나타내는 문자열 hand가 매개변수로 주어질 때, 각 번호를 누른 엄지손가락이 왼손인 지 오른손인 지를 나타내는 연속된 문자열 형태로 return 하도록 solution 함수를 완성해주세요.
자세한 설명은 아래의 링크를 클릭해주세요.
<a href="https://school.programmers.co.kr/learn/courses/30/lessons/67256">https://school.programmers.co.kr/learn/courses/30/lessons/67256</a></p>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(numbers, hand) {
    var answer = &#39;&#39;;
    var button = [1,2,3,4,5,6,7,8,9,&#39;*&#39;,0,&#39;#&#39;];
    var map = new Map();
    var row=0;

    for(var i=0; i&lt;button.length; i++){ // 버튼의 위치를 버튼을 키값으로 위치를 저장
        if((i!=0) &amp;&amp; (i%3===0)) row++;
        map.set(button[i],[row,i%3]);    
    }

    var L_position = &#39;*&#39;; // 왼손가락의 현위치
    var R_position = &#39;#&#39;; // 오른손가락의 현위치

    for(var i=0; i&lt;numbers.length; i++){  //numbers배열을 순회
        if(numbers[i]%3===1){ // 왼손가락으로 클릭할 경우
            answer += &#39;L&#39;;
            L_position = numbers[i]; //현위치 변경
        }
        else if((numbers[i]%3===0) &amp;&amp; (numbers[i] != 0)){ //오른손가락으로 클릭할 경우
            answer += &#39;R&#39;; 
            R_position = numbers[i]; //현위치 변경
        }
        else{ //눌러야할 숫자가 2,5,8,0일 경우
            var L_distance = Math.abs(map.get(L_position)[0]-map.get(numbers[i])[0])
                            + Math.abs(map.get(L_position)[1]-map.get(numbers[i])[1]);
            var R_distance = Math.abs(map.get(R_position)[0]-map.get(numbers[i])[0])
                            + Math.abs(map.get(R_position)[1]-map.get(numbers[i])[1]);
           //각 숫자 각각의 행의 위치와 열의 위치의 차의 절댓값끼리의 합이 거리가 된다.
          //거리 검사 후 거리 비교후 버튼 클릭.
            if(L_distance &gt; R_distance){
                answer += &#39;R&#39;;
                R_position = numbers[i];
            }
            else if(L_distance &lt; R_distance){
                answer += &#39;L&#39;;
                L_position = numbers[i];
            }
            else{ // 거리가 같은경우 주손 검사
               if(hand===&quot;left&quot;){
                   answer += &#39;L&#39;;
                    L_position = numbers[i];
               }
                else{
                    answer += &#39;R&#39;;
                    R_position = numbers[i];
                }

            }
        }
    }


    return answer;
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<pre><code>var L_distance = Math.abs(map.get(L_position)[0]-map.get(numbers[i])[0])
                            + Math.abs(map.get(L_position)[1]-map.get(numbers[i])[1]);
var R_distance = Math.abs(map.get(R_position)[0]-map.get(numbers[i])[0])
                            + Math.abs(map.get(R_position)[1]-map.get(numbers[i])[1]);
아마 이 부분이 설명이 필요할거 같다.
밑의 표를 보면 #의 위치는 [1,1]이고 %의 위치는 [2,2]이다. 그렇다면 표에서 이 두 문자의 거리는
절댓값(%의 행의위치 - #의 행의위치) + 절댓값(%의 열의위치 - #의 열의위치) 의 결과값이
거리가 나오게 된다. 왜냐하면 행의위치의 차의 절댓값은 두 문자의 세로거리이고
열의 차의 절댓값을 가로거리이기 때문이다.
이를 핸드폰 키보드 위치에 대입해보면 위 코드가 이해가 갈것이다.
|#|$|
|@|%|


</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/크레인 인형뽑기 게임]JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%81%AC%EB%A0%88%EC%9D%B8-%EC%9D%B8%ED%98%95%EB%BD%91%EA%B8%B0-%EA%B2%8C%EC%9E%84JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%81%AC%EB%A0%88%EC%9D%B8-%EC%9D%B8%ED%98%95%EB%BD%91%EA%B8%B0-%EA%B2%8C%EC%9E%84JavaScript</guid>
            <pubDate>Sun, 17 Jul 2022 11:45:29 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요.
자세한 설명은 아래의 링크 참고
<a href="https://school.programmers.co.kr/learn/courses/30/lessons/64061">https://school.programmers.co.kr/learn/courses/30/lessons/64061</a></p>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(board, moves) {
    var bucket = []; // 뽑을 인형을 담을 배열
    var answer = 0; // 사라진 인형의 갯수를 count

    for(var i=0; i&lt;moves.length; i++){
        for(var j=0; j&lt;board.length; j++){

            if(board[j][moves[i]-1] != 0){
                if(bucket[bucket.length-1]===board[j][moves[i]-1]){
                    bucket.pop();
                    answer += 2;
                }
                else{
                    bucket.push(board[j][moves[i]-1]);
                }

                board[j][moves[i]-1] = 0;
                break;
            }
        }

    }

    return answer;
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<pre><code>for문을 돌며 moves배열에 주어진 위치에 board배열의 요소가 0인지 아닌지를 판단한다.
만약 0이 아니라면(빼낼 인형이 있다면) bucket배열의 마지막 요소와 현재 뽑은 인형이 같은지를 판단하고
같다면 그 인형을 pop 해주고 answer 변수의값을 +2 해준다,
만약 같지 않다면 그대로 bucket 배열에 넣어주고 board배열에서 인형을 뽑은 자리의 요소를 0으로 초기화해준다.
그리고 내부 for문을 break하고 다음 moves를 실행해준다,</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/없는 숫자 더하기]]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%97%86%EB%8A%94-%EC%88%AB%EC%9E%90-%EB%8D%94%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%97%86%EB%8A%94-%EC%88%AB%EC%9E%90-%EB%8D%94%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 17 Jul 2022 11:33:34 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. 
numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 
solution 함수를 완성해주세요.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/daca866a-e034-4495-86f5-118971c5de57/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(numbers) {
    var origin = [0,1,2,3,4,5,6,7,8,9];

    return origin.reduce((acc,cur)=&gt;acc+cur) - numbers.reduce((acc,cur)=&gt;acc+cur);
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<pre><code>0부터9까지의 합에서 numbers 배열의 합을 빼면 없는 숫자의 합이 나오므로
reduce 메소드를 이용하여 정답을 바로 리턴하였습니다.
0부터 9까지의 합을 코드상에서 계산하면 시간복잡도가 다소 올라갈 수 있지만
추후에 코드의 재사용성으로 보아 위와같이 만들었습니다.
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/소수 만들기]JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%86%8C%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%86%8C%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0JavaScript</guid>
            <pubDate>Wed, 13 Jul 2022 11:25:12 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.</p>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(nums) {

    const getCombinations = function (arr, selectNumber) {
    const results = [];
    if (selectNumber === 1) return arr.map((el) =&gt; [el]); 

    arr.forEach((fixed, index, origin) =&gt; {
      const rest = origin.slice(index + 1); 
      const combinations = getCombinations(rest, selectNumber - 1); 
      const attached = combinations.map((el) =&gt; [fixed, ...el]); 
      results.push(...attached); 
    });

    return results;

}
     var sums = getCombinations(nums,3).map(function(x){
    let sum=0;
    for(var i=0; i&lt;x.length; i++){
        sum += x[i];
    }
    return sum;
});

     return sums.filter(function (x){
          for(var i=2; i&lt;x; i++){
              if(x%i === 0){
                  return false;
              }
          }
          return true;
      }).length;
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<pre><code>전체 로직)
1. 배열에서 서로다른 3개를 뽑아 배열에 넣는다.
2. 뽑아놓은 배열에서 서로다른 3개를 더한다.
3. 더한 값들 중 소수에 해당하는 것만 거른 배열의 길이를 리턴한다.

1번 과정은 getCombinations 조합 함수를 이용하였다. 위 함수는 내가 조합에 대해 공부할 때 다른분이 짜 놓은
코드를 가지고 있다 써먹었다.
2번 과정은 바로 변수 sums에 getCombinations로 리턴받은 조합배열을 map 메소드를 이용하여 서로 다른 수를
더한 값을 가진 배열을 리턴받았다.
3번 과정은 바로 sums 배열에 filter 메소드를 적용하여 약수인 요소만 true를 리턴하게 하여 약수만 포함된
배열을 리턴하게 하였고 이 배열의 길이를 최종적으로 리턴하여 알고리즘을 해결하였다.
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/실패율] JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%8B%A4%ED%8C%A8%EC%9C%A8-JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%8B%A4%ED%8C%A8%EC%9C%A8-JavaScript</guid>
            <pubDate>Wed, 13 Jul 2022 11:15:43 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>실패율은 다음과 같이 정의한다.
스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p>스테이지의 개수 N은 1 이상 500 이하의 자연수이다.
stages의 길이는 1 이상 200,000 이하이다.
stages에는 1 이상 N + 1 이하의 자연수가 담겨있다.
-각 자연수는 사용자가 현재 도전 중인 스테이지의 번호를 나타낸다.
-단, N + 1 은 마지막 스테이지(N 번째 스테이지) 까지 클리어 한 사용자를 나타낸다.
만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다.
스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다.</p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(N, stages) {
    var arrive = 0;
    var not_clear = 0;
    var fail_rate = [];


    for(var i=1; i&lt;=N; i++){
        for(var j=0; j&lt;stages.length; j++){
            if(i===stages[j]){
                not_clear++;
            }
             if(i &lt;= stages[j] ){
                arrive++;
            }
        }
        fail_rate.push(arrive != 0 ? [i,not_clear/arrive] : [i,0]);
        not_clear = 0;
        arrive = 0;
    }

    fail_rate.sort((a,b) =&gt; b[1]-a[1]);
    console.log(fail_rate);
    return fail_rate.map(x =&gt; x[0]);
}</code></pre>
<h3 id="수정-후-코드">수정 후 코드</h3>
<pre><code class="language-javascript">function solution(N, stages) {
    var fail_rate = [];


    for(var i=1; i&lt;=N; i++){
        var arrive = stages.filter(x =&gt; x &gt;= i).length;
        var not_clear= stages.filter(x =&gt; x===i).length;
        fail_rate.push(arrive != 0 ? [i,not_clear/arrive] : [i,0]);

    }

    fail_rate.sort((a,b) =&gt; b[1]-a[1]);

    return fail_rate.map(x =&gt; x[0]);
}</code></pre>
<h3 id="1-문제-풀이">1. 문제 풀이</h3>
<pre><code>수정 전 코드는 내부 for문 안에서 조건문을 이용하여 스테이지에 도달했으나 아직 클리어하지 못한 플레이어수를
not_clear 변수에 스테이지에 도달한 플레이어 수를 arrive 변수에 카운트 해주고
내부 for문을 마치면  fail_rate 배열에 [스테이지 / 실패율] 형식으로 넣어주고 다음 스테이지의 실패율을 계산하기
위해 no_clear와 arrive 변수를 초기화 해주었다. 그런데 문제를 다 풀고 다른사람의 풀이를 보니 나와 전체적인
로직은 같은데 좀더 간결하게 코드를 짜신 분이 있어 몇가지를 배우고 코드를 수정하였다.
첫 번째로는 필터 함수를 이용하면 이중 for문과 조건문을 사용하지 않고 좀 더 간결하게 코드를 짤 수 있었고
두 번째로는 반복 문 안에 not_clear변수와 arrive 변수를 선언하면 매번 변수를 초기화 하는건 같으나 좀 더 코드를
깔끔히 짤 수 있었다는 점이다.</code></pre><h3 id="2-배운점">2. 배운점</h3>
<pre><code>문제 조건에 도달한 사람이 없는경우 실패율을 0으로 책정하라고 기재되어 있어서 삼항연산자를 이용하여 
도달한 사람이 없을 경우 실패율에 0을 넣는 방식으로 코딩을 진행하였다. 하지만 내가 참고한 분의 코드에는
도달한 사람이 없을 경우 실패율을 0으로 책정하는 코드가 보이지 않아(실제로 고려를 하고 코드를 짠걸 수 있겠지만)
어떻게 오류가 안날 수 있을까 궁금해져 sort메소드의 compare 메소드의 원리를 생각을 해보았다.   
sort메소드의 원리는 compare 함수의 실행 결과가 음수냐 양수냐에 따라 정렬을 한다. 실험 결과
숫자, NaN) 또는 (NaN 과 NaN)을 연산하게 되면 NaN이 나오므로 음수도 양수도 아니기 때문에
배열의 두 요소는 자리변동 없이 자리를 유지하게 된다. 따라서 0으로 지정했을 때와는 다르게 정렬이 되므로 정렬이 제대로 되지 않을거 같았다..
하지만 내가 참고한 분의 코드가 통과할 수 있는 이유는 스테이지 검사를 오름차순으로 검사했기 때문에 앞의
도달한 스테이지만 비교검사가 정상적으로 진행되고 뒤의 도달하지 못한 스테이지는 자연스레 그 자리에 남아
오류가 발생하지 않은것 같다.
-생각하면서 NaN이 포함된 배열의 sort는 어떻게 진행될까 궁금하여 검색해보았다.
https://obscurejavascript.tumblr.com/post/125103356483/sorts-and-nan-in-javascript
이분의 코드를 살펴보면 NaN이 포함된 배열을 정렬할 때 
sort메소드의 compare메소드를 참고할 수 있으니 참고하시길 바란다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/약수의 개수와 덧셈]]]></title>
            <link>https://velog.io/@dkssud-hi/m3kmhc3q</link>
            <guid>https://velog.io/@dkssud-hi/m3kmhc3q</guid>
            <pubDate>Tue, 12 Jul 2022 12:22:02 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/db175983-c62c-4826-9637-f4918c318e10/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(left, right) {

    function count(n){
       var check = 0;
        for(let i=1; i&lt;=n; i++){
           if(n%i===0) check++;
       }
        return check;
    }

    var sum=0;

    for(var i=left; i&lt;=right; i++){
        if(count(i)%2===0){
            sum += i;
        }
        else{
            sum -= i;
        }
    }

    return sum;
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<p>```
약수 판별 함수 count를 따로 만들어주고 left부터 right까지 해당 함수에 수를 집어넣어 
약수의 갯수를 리턴받아 약수의 갯수가 홀수인지 짝수인지 판별하여 
변수 sum에 총 계산하였다.
하지만 다른사람의 풀이를 보니 제곱근이 정수면 약수의 개수가 홀수인것을 배웠다..
왜냐면 어떤 수의 제곱근은 그 수의 약수들의 중간값인데 그 제곱근이 정수란 얘기는
약수로서존재한다는 이야기고 약수의 갯수가 홀수개란 이야기.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/3진법 뒤집기]JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A43%EC%A7%84%EB%B2%95-%EB%92%A4%EC%A7%91%EA%B8%B0JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A43%EC%A7%84%EB%B2%95-%EB%92%A4%EC%A7%91%EA%B8%B0JavaScript</guid>
            <pubDate>Tue, 12 Jul 2022 12:13:16 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/25dc5aea-2984-4f89-9612-b6a0598fdf41/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(n) {

    return parseInt(n.toString(3).split(&#39;&#39;).reverse().join(&#39;&#39;), 3);
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<p>```
(10진수).toString(n) 을 이용해 인자로 받은 10진수를 3진수로 바꾸어 주었고 parseInt(n진수, n)를 이용해
최종적으로 3진수를 다시 10진수로 바꾸어주었다 주의할점은 parseInt의 n진수 자리에는 문자열형태의 자료형이
들어가야 하고, toString의 10진수 자리에는 넘버 형태의 자료형이 들어가야한다.</p>
<p>,총 풀이를 하자면
중간의 split메소드는 toString으로 받환받은 3진수의 문자열값을 배열로 바꾸어주었고
그 배열을 reverse메소드를 이용하여 뒤집어주었다 그리고 join메소드를 이용하여 배열의 모든 인덱스값을
합쳐 문자열 형태로 반환 한 후 뒤집어진 3진수의 문자열 형태값을 parseInt의 인자로 넣어준것이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/예산]JavaScript]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%98%88%EC%82%B0JavaScript</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EC%98%88%EC%82%B0JavaScript</guid>
            <pubDate>Tue, 12 Jul 2022 12:06:51 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.
물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.
부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/4df40628-41de-4feb-af2a-3b8852f44701/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(d, budget) {
    d.sort((a, b) =&gt; a - b);

    var sum = 0;
    var i = 0

    for ( i; i&lt;d.length; i++) {
        if (sum + d[i] &lt;= budget) {
            sum += d[i];
        }
        else{
            return i;
        }
    }

    return i;
}</code></pre>
<h4 id="1-문제-풀이">1. 문제 풀이</h4>
<pre><code>처음 생각엔 n = d.length 라고하면 n명중 n명에게 지원해주는 조합의 수,
n명중 n-1명에게 지원해주는 조합의수....  n명중 1명에게 지원해주는 조합의수를 차례대로 탐색하며 
해당 차례의 조합의 수에서 총 지원금액들 중 예산금액보다 작거나 같은 금액이 한개의 경우라도 있으면
그 지원해주는 명수가 최대 지원가능 명수라고 생각했었는데 테스트 케이스 7번부터 런타임 에러가 나서 한참을 생각해도 다른 방법이 떠오르지 않아
다른분의 풀이를 참고하였다. 다른분의 풀이는 프로그래머스 다른사람 풀이를 참고하였다. 참고결과
배열을 오름차순으로 정렬하면 간단히 해결될 문제였다. 오름차순으로 정렬후 첫번째 인덱스부터 차례대로 
더해주면 첫번째 인덱스의 합은 한명을 지원했을 때
지원금액의 최소값, 두번째인덱스까지 더했을 땐 두명을 지원했을 때 지원금액의 최소값이 된다.
결국은 각 구간의 합은 해당인원수 지원금액의 최솟값이므로
그 금액이 예산을 초과하지 않으면 그 인원은 지원 가능하게 되는 논리이다. </code></pre><h4 id="2-배운점">2. 배운점</h4>
<pre><code>배열을 오름차순으로 정렬하면 배열의 각 요소의 합,곱,차의 최소값 최대값을 구하기 쉽다. 
그리고, 어느 하나가 안되면 그 방법을 고집하지말고 다르게 생각해보는연습을 해봐야겠다.
될것같아도 이게 아닌경우도 있다. 빨리 포기하고 다른방법을 모색하는것도 실력이다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스/두 개 뽑아서 더하기]Java Script]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EB%91%90-%EA%B0%9C-%EB%BD%91%EC%95%84%EC%84%9C-%EB%8D%94%ED%95%98%EA%B8%B0Java-Script</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EB%91%90-%EA%B0%9C-%EB%BD%91%EC%95%84%EC%84%9C-%EB%8D%94%ED%95%98%EA%B8%B0Java-Script</guid>
            <pubDate>Tue, 12 Jul 2022 11:45:07 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/8ee84447-94e1-4084-a35f-615208d926a3/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(numbers) {

    var answer = [];
    var t_answer = new Set();
    for(var i=0; i&lt;numbers.length; i++){
        for(var j=i+1; j&lt;numbers.length; j++){ 
            t_answer.add(numbers[i]+numbers[j]);
        }
    }

    answer = Array.from(t_answer);
    answer.sort((a,b) =&gt; a-b);
    return answer;
}</code></pre>
<h4 id="문제-풀이">문제 풀이</h4>
<p>```
이중 for문을 이용하여 배열 안의 값들을 빠짐없이 더해주려 하였고
j=i+1 로 설정하여 같은인덱스와 이미 계산한 인덱스를 겹치지 않게 해주었다.
그리고 set객체에 더한값들을 집어넣어 값이 중복되지 않게 해주었고
마지막에 sort 매소드를 이용하여 오름차순으로 정리해주었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 / 시저 암호] Java Script]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%8B%9C%EC%A0%80-%EC%95%94%ED%98%B8-Java-Script</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%8B%9C%EC%A0%80-%EC%95%94%ED%98%B8-Java-Script</guid>
            <pubDate>Mon, 04 Jul 2022 14:59:30 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 &quot;AB&quot;는 1만큼 밀면 &quot;BC&quot;가 되고, 3만큼 밀면 &quot;DE&quot;가 됩니다. &quot;z&quot;는 1만큼 밀면 &quot;a&quot;가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.</p>
<blockquote>
<h4 id="제한조건">제한조건</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/92ed83df-f451-4197-879c-23b0dae1ac4f/image.PNG" alt=""></p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/b8160450-d627-4de3-ad6e-54e0f91e8ee5/image.PNG" alt=""></p>
</blockquote>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(s, n) {
    var answer = &#39;&#39;;

    for(let i=0; i&lt;s.length; i++){

        if(s[i] === &quot; &quot;){
            answer += &#39; &#39;;
            continue;
        }

        if(s.charCodeAt(i) &lt;= 90){
            if((s.charCodeAt(i)+n)&gt;90){
                answer += String.fromCharCode(((s.charCodeAt(i)+n)-90)+64);
            }
            else{
                answer += String.fromCharCode(s.charCodeAt(i)+n);
            }
        }else if(s.charCodeAt(i) &gt;= 97){
            if((s.charCodeAt(i)+n)&gt;122){
                answer += String.fromCharCode(((s.charCodeAt(i)+n)-122)+96);
            }
            else{
                answer += String.fromCharCode(s.charCodeAt(i)+n);
            }
        }
    }

    return answer;
}</code></pre>
<h3 id="코드-설명">코드 설명</h3>
<h4 id="1-문제-분석">1. 문제 분석</h4>
<pre><code>이 문제를 보자마자 아스키코드 표를 보고 그것을 활용해야겠다고 생각했다.
그래서 자바스크립트에서 아스키코드의 번호와 문자열을 대칭하여 이용할 수
있는 방법을 탐색했고 charCodeAt() 메소드와 from.CharCode()메소드를
찾아냈다.</code></pre><h4 id="2-문제-풀이">2. 문제 풀이</h4>
<pre><code>charCodeAt()은 주어진 문자열에서 알고싶은 문자의 아스키코드 번호를
알고싶을 때 해당 문자의 인덱스 번호를 입력값으로 주어 아스키코드 번호
를 받을 수 있는 메소드이다. 이 메소드를 이용하여 번호를 받았고
String.fromCharCode메소드를 이용하여 번호를 대칭되는 문자로 받아내었다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[프로그래머스 / 자연수 뒤집어 배열로 만들기] Java Script]]></title>
            <link>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9E%90%EC%97%B0%EC%88%98-%EB%92%A4%EC%A7%91%EC%96%B4-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-Java-Script</link>
            <guid>https://velog.io/@dkssud-hi/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9E%90%EC%97%B0%EC%88%98-%EB%92%A4%EC%A7%91%EC%96%B4-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-Java-Script</guid>
            <pubDate>Mon, 04 Jul 2022 14:51:21 GMT</pubDate>
            <description><![CDATA[<h3 id="문제-설명">문제 설명</h3>
<blockquote>
<p>자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.</p>
<blockquote>
<h4 id="입출력-예">입출력 예</h4>
<p><img src="https://velog.velcdn.com/images/dkssud-hi/post/29a9b1f4-f10e-46d3-8f9e-2bd36399c204/image.PNG" alt=""></p>
</blockquote>
</blockquote>
<h3 id="나의-코드">나의 코드</h3>
<pre><code class="language-javascript">function solution(n) {
    var answer = [];

    while(n&gt;0){

       answer.push(n%10);
       n=Math.floor(n/10);

    }

    return answer;
}</code></pre>
<h3 id="코드-설명">코드 설명</h3>
<h4 id="1-문제-분석">1. 문제 분석</h4>
<pre><code>처음엔 splite 메소드와 reverse 메소드를 사용하여 뒤집어진 배열을 
만든 후 각 인덱스의 값을 다시 number형으로 바꾸어주면 될거같았는데
생각해보니 그렇게 좋은 코드는 아닌거같았다.
다시 정수형으로 바꾸어주는 과정까지 대략 2n 정도의 시간 복잡도가 
걸릴것 같았기 때문이다.
그래서 처음부터 숫자형태로 하나하나씩 빼서 배열에 저장한다면
딱 n의 복잡도로 문제를 해결 할 수 있다고 생각하였고 위와 같이 해결하였다.</code></pre><h4 id="2-문제-풀이">2. 문제 풀이</h4>
<p>```
풀이과정은 어떤 값이든 10으로 나머지 연산을 하면 마지막 일의자리 숫자
가 나오게 된다. 
그리고 10을 나눈 몫은 일의자리를 제외한 숫자가 나오게된다.
그 과정을 반복하여 몫이 0이 나올때까지 반복해준다면
모든 자리수의 숫자를 배열에 저장할 수 있게된다.</p>
]]></description>
        </item>
    </channel>
</rss>