<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>syeonJeong.log</title>
        <link>https://velog.io/</link>
        <description>-</description>
        <lastBuildDate>Fri, 23 Jun 2023 01:11:54 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>syeonJeong.log</title>
            <url>https://images.velog.io/images/soodev9_6/profile/13626b02-9cae-458c-bbb8-7deadad45ff5/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. syeonJeong.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/soodev9_6" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Python] 알파벳 리스트 만들기]]></title>
            <link>https://velog.io/@soodev9_6/Python-%EC%95%8C%ED%8C%8C%EB%B2%B3-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@soodev9_6/Python-%EC%95%8C%ED%8C%8C%EB%B2%B3-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Fri, 23 Jun 2023 01:11:54 GMT</pubDate>
            <description><![CDATA[<h4 id="알파벳-리스트를-만드는-코드-list-comprehension-이용">알파벳 리스트를 만드는 코드 (List Comprehension 이용)</h4>
<pre><code class="language-Python">import string

# 소문자 리스트
lower = [i for i in string.ascii_lowercase]
print(lower)
# [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;, &#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;, &#39;q&#39;, &#39;r&#39;, &#39;s&#39;, &#39;t&#39;, &#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;, &#39;z&#39;]

# 대문자 리스트
upper = [i for i in string.ascii_uppercase]
print(upper)
# [&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;, &#39;K&#39;, &#39;L&#39;, &#39;M&#39;, &#39;N&#39;, &#39;O&#39;, &#39;P&#39;, &#39;Q&#39;, &#39;R&#39;, &#39;S&#39;, &#39;T&#39;, &#39;U&#39;, &#39;V&#39;, &#39;W&#39;, &#39;X&#39;, &#39;Y&#39;, &#39;Z&#39;]

# 대문자 + 소문자 전체 리스트
lowup = [i for i in string.ascii_letters]
print(lowup)
# [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;, &#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;, &#39;q&#39;, &#39;r&#39;, &#39;s&#39;, &#39;t&#39;, &#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;, &#39;z&#39;, &#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;, &#39;K&#39;, &#39;L&#39;, &#39;M&#39;, &#39;N&#39;, &#39;O&#39;, &#39;P&#39;, &#39;Q&#39;, &#39;R&#39;, &#39;S&#39;, &#39;T&#39;, &#39;U&#39;, &#39;V&#39;, &#39;W&#39;, &#39;X&#39;, &#39;Y&#39;, &#39;Z&#39;]</code></pre>
<p>외워두면 유용할 것 같다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Python/프로그래머스] 배열의 원소 삭제하기]]></title>
            <link>https://velog.io/@soodev9_6/Python%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B0%B0%EC%97%B4%EC%9D%98-%EC%9B%90%EC%86%8C-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@soodev9_6/Python%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B0%B0%EC%97%B4%EC%9D%98-%EC%9B%90%EC%86%8C-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 22 Jun 2023 13:28:09 GMT</pubDate>
            <description><![CDATA[<h2 id="problem">Problem</h2>
<p><img src="https://velog.velcdn.com/images/soodev9_6/post/f0cb973b-12b5-4fce-8497-ac0db862b228/image.png" alt=""></p>
<h2 id="solution">Solution</h2>
<pre><code class="language-python">def solution(arr, delete_list):
    answer = []
    rm_arr = []
    for i in arr:        
        for j in delete_list:
            if i==j:
                rm_arr.append(i)    
                arr = [x for x in arr if x not in rm_arr]                    
    answer = arr
    return answer</code></pre>
<h2 id="takeaway">Takeaway</h2>
<p>리스트명.remove(&#39;값&#39;) : 리스트 내 하나의 값을 제거, 여러 개의 값을 제거할 수 X
여러 개의 값을 제거하려면? <strong>List Comprehension</strong> 이용!
ex) 
<img src="https://velog.velcdn.com/images/soodev9_6/post/13eb8db9-cccc-4c60-8234-8875311d9bdc/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[6월 3주차✏️
]]></title>
            <link>https://velog.io/@soodev9_6/6%EC%9B%94-3%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@soodev9_6/6%EC%9B%94-3%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Tue, 14 Jun 2022 12:47:32 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>📌** To Do **</p>
</blockquote>
<ul>
<li>22.06.14.화
- SQLD) ORDER BY절 파트 정독 및 정리 [o]
- SQLD) 조인 파트 정독 및 정리 [0]</li>
<li>22.06.15.수
- SQLD) 1절 표준조인 정독 및 정리 [ ]
- SQLD) 2절 집합 연산자 정독 및 정리 [ ]</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[사내 코테]]]></title>
            <link>https://velog.io/@soodev9_6/%EC%82%AC%EB%82%B4-%EC%BD%94%ED%85%8C</link>
            <guid>https://velog.io/@soodev9_6/%EC%82%AC%EB%82%B4-%EC%BD%94%ED%85%8C</guid>
            <pubDate>Tue, 24 May 2022 13:28:36 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/soodev9_6/post/33669266-1726-4ffc-bc7c-ffe8bcff4365/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 12948번 - 핸드폰 번호 가리기]]></title>
            <link>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12948%EB%B2%88-%ED%95%B8%EB%93%9C%ED%8F%B0-%EB%B2%88%ED%98%B8-%EA%B0%80%EB%A6%AC%EA%B8%B0</link>
            <guid>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12948%EB%B2%88-%ED%95%B8%EB%93%9C%ED%8F%B0-%EB%B2%88%ED%98%B8-%EA%B0%80%EB%A6%AC%EA%B8%B0</guid>
            <pubDate>Mon, 16 May 2022 15:39:57 GMT</pubDate>
            <description><![CDATA[<h3 id="problem">Problem</h3>
<p><img src="https://velog.velcdn.com/images/soodev9_6/post/46c64fc3-8eaa-4cc9-8967-4ff5997b2ca7/image.png" alt=""></p>
<h3 id="solution">Solution</h3>
<p>1) 전화번호의 길이 구하기 - length() 메소드 이용
2) [전화번호 길이 - 4]만큼 * 붙여주기 - 반복문 이용
3) 문자열함수(substring 등)를 이용하여 뒷 4자리를 answer에 더해준다.</p>
<pre><code class="language-java">// 나의 풀이
class Solution {
    public String solution(String phone_number) {
        String answer = &quot;&quot;;
        int len = phone_number.length();                   
        for (int i=0;i&lt;len-4;i++) {
            answer = answer +&#39;*&#39;;
        }
        answer = answer + phone_number.substring(len-4, len);
        return answer;
    }
}</code></pre>
<p>▼ 다른 사람의 풀이 - toCharArray() 메소드 이용
: 문자 → 배열로 변경하여 반복문 사용</p>
<pre><code class="language-java">class Solution {
  public String solution(String phone_number) {
     char[] ch = phone_number.toCharArray();
     for(int i = 0; i &lt; ch.length - 4; i ++){
         ch[i] = &#39;*&#39;;
     }
     return String.valueOf(ch);
  }
}</code></pre>
<h3 id="takeaway">Takeaway</h3>
<p>2)의 과정에서 *을 찍어줄 때 곱셉이 아닌 덧셈을 이용해야 한다.
(자꾸 곱셈을 사용해서 이상하게 출력됨)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 12906번 - 같은 숫자는 싫어]]></title>
            <link>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12906%EB%B2%88-%EA%B0%99%EC%9D%80-%EC%88%AB%EC%9E%90%EB%8A%94-%EC%8B%AB%EC%96%B4</link>
            <guid>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12906%EB%B2%88-%EA%B0%99%EC%9D%80-%EC%88%AB%EC%9E%90%EB%8A%94-%EC%8B%AB%EC%96%B4</guid>
            <pubDate>Sun, 15 May 2022 14:15:53 GMT</pubDate>
            <description><![CDATA[<h3 id="problem">Problem</h3>
<p><img src="https://velog.velcdn.com/images/soodev9_6/post/5f744b39-6f7d-488a-ab2a-5d5a919c575b/image.png" alt=""></p>
<h3 id="solution">Solution</h3>
<ul>
<li></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[IntelliJ] Github 연동하기]]></title>
            <link>https://velog.io/@soodev9_6/IntelliJ-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95</link>
            <guid>https://velog.io/@soodev9_6/IntelliJ-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95</guid>
            <pubDate>Sun, 08 May 2022 14:15:10 GMT</pubDate>
            <description><![CDATA[<p>프로젝트가 빌드되면
<img src="https://velog.velcdn.com/images/soodev9_6/post/5159534d-0783-4937-9834-f0f46f0a9e22/image.png" alt="">
이렇게 out 경로 밑에 클래스가 생긴다.</p>
<h3 id="github에-프로젝트-연동하기">GitHub에 프로젝트 연동하기</h3>
<p><strong>0. 설치했었던 Git의 실행파일 경로를 지정</strong>
상단의 File &gt; Settings : Version Controls - Git
ex) C:\Program Files\Git\cmd\git.exe # 나의 경로</p>
<p>*<em>1. Github 계정 추가 *</em>
상단의 File &gt; Settings : Version Controls - Github에서 계정 추가 
※ 요즘은 토큰으로 로그인하므로 잘 기억해두기!</p>
<p><strong>2. Intellij - Github 연동</strong></p>
<ul>
<li>VCS &gt;  Share Project on Github 
<img src="https://velog.velcdn.com/images/soodev9_6/post/a6fb46d1-0641-446d-8e5f-3a21e051c0fe/image.png" alt="">
확인 후 Share하게 되면
<img src="https://velog.velcdn.com/images/soodev9_6/post/2cb7d7e1-070d-4afc-8595-8bf080aa42ad/image.png" alt="">
커밋 메세지 입력 후 Add 
- 기존 프로젝트와 동일하게 Github과 연동된 것을 볼 수 있다.</li>
</ul>
<p>참고
<a href="https://goddaehee.tistory.com/249">https://goddaehee.tistory.com/249</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 12935번 - 제일 작은 수 제거하기 - re]]></title>
            <link>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12925%EB%B2%88-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%A0%95%EC%88%98%EB%A1%9C-%EB%B0%94%EA%BE%B8%EA%B8%B0</link>
            <guid>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12925%EB%B2%88-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%A0%95%EC%88%98%EB%A1%9C-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Wed, 04 May 2022 15:27:16 GMT</pubDate>
            <description><![CDATA[<h3 id="problem">Problem</h3>
<p><img src="https://velog.velcdn.com/images/soodev9_6/post/54ba9eb4-22ca-4785-b241-89b132693b50/image.png" alt=""></p>
<h3 id="참고">참고</h3>
<p><a href="https://limdotori.tistory.com/40">https://limdotori.tistory.com/40</a>
cf) for-each문 
<img src="https://velog.velcdn.com/images/soodev9_6/post/48f45442-d44c-4482-ad6e-4407a10792fc/image.png" alt="">
<img src="https://velog.velcdn.com/images/soodev9_6/post/977bc2c4-ec89-441c-a97b-a3d429b86d36/image.png" alt=""></p>
<h3 id="solution">Solution</h3>
<pre><code class="language-java">import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        int min = arr[0];
        for (int i = 1; i &lt; arr.length; i++) {
            min = Math.min(min, arr[i]);
        }

        ArrayList&lt;Integer&gt; resultArr = new ArrayList&lt;&gt;();
        for (int i = 0; i &lt; arr.length; i++) {
            if (arr[i] != min) {
                resultArr.add(arr[i]);
            }
        }

        if (resultArr.size() == 0) {
            resultArr.add(-1);
        }

        return resultArr.stream().mapToInt(i -&gt; i).toArray();
    }
}</code></pre>
<h3 id="takeaway">Takeaway</h3>
<p>- 최솟값을 찾았지만, 배열을 삭제하는 부분에서 애먹었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 12928번 - 약수의 합]]></title>
            <link>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B2%88-%EC%95%BD%EC%88%98%EC%9D%98-%ED%95%A9</link>
            <guid>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B2%88-%EC%95%BD%EC%88%98%EC%9D%98-%ED%95%A9</guid>
            <pubDate>Mon, 02 May 2022 09:58:39 GMT</pubDate>
            <description><![CDATA[<h3 id="problem">Problem</h3>
<p>정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.</p>
<ul>
<li><p>제한 사항
n은 0 이상 3000이하인 정수입니다.</p>
</li>
<li><p>입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.</p>
</li>
<li><p>입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.</p>
</li>
</ul>
<h3 id="solution">Solution</h3>
<pre><code class="language-java">// 나의 풀이
class Solution {
    public int solution(int n) {
        int answer = 0;                
        for (int i=1;i&lt;=n;i++){
          if (n%i==0) {
            answer = answer + i;                           
          }            
        }                
        return answer;
    }
}</code></pre>
<h3 id="takeaway">Takeaway</h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래머스 12944번 - 배열의 평균 구하기]]></title>
            <link>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12944%EB%B2%88-%EB%B0%B0%EC%97%B4%EC%9D%98-%ED%8F%89%EA%B7%A0-%EA%B5%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@soodev9_6/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-12944%EB%B2%88-%EB%B0%B0%EC%97%B4%EC%9D%98-%ED%8F%89%EA%B7%A0-%EA%B5%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 27 Apr 2022 14:17:35 GMT</pubDate>
            <description><![CDATA[<h3 id="problem">Problem</h3>
<p><a href="https://programmers.co.kr/learn/courses/30/lessons/12944">문제 링크</a></p>
<p>정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.</p>
<p>제한사항
- arr은 길이 1 이상, 100 이하인 배열입니다.
- arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.</p>
<h3 id="solution">Solution</h3>
<ol>
<li><p>(배열을 돌면서) 배열에 담긴 요소들의 합을 구한다. by for문</p>
</li>
<li><p>위에서 구한 합을 배열의 길이 만큼 나눈다.</p>
<pre><code class="language-javascript">// JavaScript
function solution(arr) {
 var answer = 0;
 let sum = 0;

 for (var i=0;i&lt;arr.length;i++) {
   sum += arr[i];
 }
 answer = sum / arr.length;
 return answer;
}</code></pre>
</li>
</ol>
<pre><code class="language-java">// Java
class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        double sum = 0;
        for (int i=0;i&lt;arr.length;i++){
            sum += arr[i];
        }
        answer = sum / arr.length;                    
        return answer;            
    }
}</code></pre>
<h3 id="takeaway">Takeaway</h3>
<p><img src="https://velog.velcdn.com/images/soodev9_6/post/07ac8928-2922-4eb8-91d4-793136ef0938/image.png" alt=""></p>
<p>처음 문제를 봤을 때, 이러한 제한사항을 직접 코드로 구현해야 하는줄 알았다.🤦‍♀️ 단순히 이러한 조건들은 <strong>이미 선언이 되었다고 가정하고 문제를 풀어야 한다</strong>는 것을 깨달았다 !</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JS] 14_05강 함수의 호출]]></title>
            <link>https://velog.io/@soodev9_6/JS-1405%EA%B0%95-%ED%95%A8%EC%88%98%EC%9D%98-%ED%98%B8%EC%B6%9C</link>
            <guid>https://velog.io/@soodev9_6/JS-1405%EA%B0%95-%ED%95%A8%EC%88%98%EC%9D%98-%ED%98%B8%EC%B6%9C</guid>
            <pubDate>Thu, 14 Apr 2022 14:43:44 GMT</pubDate>
            <description><![CDATA[<h3 id="함수의-호출">함수의 호출</h3>
<pre><code class="language-javascript">// 1)
function sum(arg1, arg2) {
  return arg1 + arg2;
}
sum.apply(null, [1,2]); // 3
// sum(1,2) -- 위와 동일한 결과
//--------------------------------
// 2)
o1 = {val1:1, val2:2, val3:3}
o2 = {v1:10, v2:50, v3:100, v4:25}
function sum(){
    var _sum = 0;
    for(name in this){
        _sum += this[name];
    }
    return _sum;
}
alert(sum.apply(o1)) // 6, o1.sum과 같은 의미
alert(sum.apply(o2)) // 185, o2.sum과 같은 의미</code></pre>
<blockquote>
<p> 1) 함수 sum = <strong>Function이라는 객체의 인스턴스</strong>
즉, func는 객체 Function이 가지고 있는 메소드들(apply 등)을 상속하고 있음
⇒ 객체 Function 의 메소드인 apply 호출 가능
2) 
: sum.apply(o1) 호출 시, 암시적으로 var this = o1;이 호출됨
: sum.apply(o2) 호출 시, 암시적으로 var this = o2;이 호출됨</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JS] 14_04강 arguments]]></title>
            <link>https://velog.io/@soodev9_6/JS-1404%EA%B0%95-arguments</link>
            <guid>https://velog.io/@soodev9_6/JS-1404%EA%B0%95-arguments</guid>
            <pubDate>Thu, 14 Apr 2022 13:10:23 GMT</pubDate>
            <description><![CDATA[<h3 id="arguments">arguments</h3>
<blockquote>
<p><strong>argument</strong>란? 
: 함수 내부에서 사용할 수 있도록 그 이름이나 특성이 약속되어 있는 객체
: 배열과 비슷하지만, 배열은 아니다! (유사배열)</p>
</blockquote>
<pre><code class="language-javascript">ex1) arguments[0] 
// : 함수로 전달된 첫 번째 인자를 알 수있다.
ex2) arguments.length 
// : 인자의 개수를 알 수 있다.</code></pre>
<pre><code class="language-javascript">function sum(){
    var i, _sum = 0;    
    for(i = 0; i &lt; arguments.length; i++){
        document.write(i+&#39; : &#39;+arguments[i]+&#39;&lt;br /&gt;&#39;);
        _sum += arguments[i];
    }   
    return _sum;
}
// JS는 유연하므로, 인자의 값을 아무렇게나 지정해도 에러 발생X
document.write(&#39;result : &#39; + sum(1,2,3,4)); // 10
/* 디버깅
arguments.length = 4
⒈_sum = arguments[1]
⒉_sum = arguments[1] + arguments[2]
⒊_sum = arguments[1] + arguments[2] + arguments[3]
⒋_sum = arguments[1] + arguments[2] + + arguments[3] + arguments[4] = 10
*/</code></pre>
<h4 id="cf-매개변수parameter-vs-인자arguments">cf. 매개변수(parameter) vs 인자(arguments)</h4>
<pre><code class="language-javascript">// 매개변수 vs 인자 
// (보통은 같은 의미로 쓰이지만) 엄격히 구분해보자!
function a(arg) {...} // a : 매개변수
a(1); // 1 : 인자</code></pre>
<h3 id="매개변수의-수">매개변수의 수</h3>
<pre><code class="language-javascript">function one(arg1){
    console.log(
        &#39;one.length&#39;, one.length, // 1
        &#39;arguments&#39;, arguments.length // 2
    );
}
one(val1, val2);
</code></pre>
<blockquote>
<ul>
<li>함수명.length : 함수에 정의된 인자 수</li>
</ul>
</blockquote>
<ul>
<li>arguments.length : 함수로 전달된 실제 인자의 수</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JS] 14_02강 값으로서의 함수와 콜백]]></title>
            <link>https://velog.io/@soodev9_6/JS-1402%EA%B0%95-%EA%B0%92%EC%9C%BC%EB%A1%9C%EC%84%9C%EC%9D%98-%ED%95%A8%EC%88%98%EC%99%80-%EC%BD%9C%EB%B0%B1</link>
            <guid>https://velog.io/@soodev9_6/JS-1402%EA%B0%95-%EA%B0%92%EC%9C%BC%EB%A1%9C%EC%84%9C%EC%9D%98-%ED%95%A8%EC%88%98%EC%99%80-%EC%BD%9C%EB%B0%B1</guid>
            <pubDate>Tue, 29 Mar 2022 12:14:57 GMT</pubDate>
            <description><![CDATA[<h3 id="함수의-다양한-용도">함수의 다양한 용도</h3>
<p>JS에서의 <span style="color:indianred"><strong>함수</strong></span>는 <strong>객체</strong>이고, 일종의 <strong>값</strong>이다.
다시말해
<strong>변수, 객체의 값, 함수의 인자, 함수의 리턴값, 배열의 값</strong> 
등 으로 사용될 수 있다.</p>
<pre><code class="language-javascript">// 1) 값으로서의 함수
function a() {} // var a = function() {}
// 함수 a는 변수 a에 담겨진 값

// 2) 함수는 객체의 값으로도 포함 가능***
a = {
    b : function() { // b : 키(속성), func : 값
    // key가 변수의 역할을 수행할 경우, 속성(property)이라고 할 수 있음
    // 객체의 속성값으로 담겨진 함수 = 메소드(method) 
    }
};

// 3) 함수는 다른 함수의 인자로 전달 가능
function cal(func, num){
    return func(num)
}
function increase(num){
    return num+1
}
function decrease(num){
    return num-1
}
alert(cal(increase, 1));
alert(cal(decrease, 1));

// 4) 함수는 &#39;함수의 리턴 값(반환값)&#39;으로 사용 가능
function cal(mode){
    var funcs = {
        &#39;plus&#39; : function(left, right){return left + right},
        &#39;minus&#39; : function(left, right){return left - right}
    }
    return funcs[mode];
}
alert(cal(&#39;plus&#39;)(2,1));
alert(cal(&#39;minus&#39;)(2,1));

// 5) 함수는 &#39;배열&#39;로도 사용가능
var process = [
    function(input){ return input + 10;},
    function(input){ return input * input;},
    function(input){ return input / 2;}
];
var input = 1;
for(var i = 0; i &lt; process.length; i++){
    input = process[i](input);
}
alert(input);
/*
(i = 0)
input = process[0](1); // 11
(i = 1)
input  = process[1](11); // 11 * 11 = 121
(i = 2)
input = process[2](121); // 121 / 2 = 60.5
*/

</code></pre>
<h3 id="콜백">콜백</h3>
<pre><code class="language-javascript">var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
var sortfunc = function(a, b) {
    return a - b; // 아래와 같은 결과값, 오름차순
 // return b - a; 의 경우에는 내림차순
  /*
      if (a &gt; b) {
      return 1;
    } else if (a &lt; b) {
      return -1;
    } else {
        return 0;
    }  
  */
}
console.log(numbers.sort(sortfunc));</code></pre>
<blockquote>
<ul>
<li><strong>numbers.sort()</strong>에서 numbers가 <strong>배열 객체</strong>이기 때문에 sort()는 <strong>메소드</strong>이다.</li>
</ul>
</blockquote>
<ul>
<li>numbers.sort(sortfunc)에서 <strong>sortfunc()함수</strong>가 <strong>콜백함수</strong>가 된다. </li>
<li><strong>콜백(callback)</strong> : 값을 변경 ⇒ 오리지널 함수의 동작 방법을 변경 가능함 <em>(즉, JS에서 함수가 값이기 때문에)</em>
ex) sort() 메소드가 sortfunc를 인자로 전달받아서 sort()메소드의 동작방법을 변경할 수 있다.
<span style="color:blue"><em>** 추후 복습 need</em></span></li>
</ul>
<h3 id="비동기-콜백과-ajax">비동기 콜백과 Ajax</h3>
<blockquote>
<ul>
<li>콜백은 비동기 처리에도 유용하게 사용된다.</li>
</ul>
</blockquote>
<p>cf. 동기 vs 비동기 개념은 아래 블로그를 참고하자.
(<a href="https://velog.io/@daybreak/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC">https://velog.io/@daybreak/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC</a>)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JS] 14_01강 유효범위]]></title>
            <link>https://velog.io/@soodev9_6/14%EA%B0%9501-%EC%9C%A0%ED%9A%A8%EB%B2%94%EC%9C%84-g07j8lo2</link>
            <guid>https://velog.io/@soodev9_6/14%EA%B0%9501-%EC%9C%A0%ED%9A%A8%EB%B2%94%EC%9C%84-g07j8lo2</guid>
            <pubDate>Thu, 24 Mar 2022 14:25:46 GMT</pubDate>
            <description><![CDATA[<h3 id="전역변수-vs-지역변수">전역변수 vs 지역변수</h3>
<blockquote>
<p><strong>유효범위</strong>란? &#39;변수의 수명&#39;을 의미 <br/>
<strong>지역변수</strong>는
함수 내에서 변수를 선언한 경우 (local)
<strong>전역변수</strong>는
함수 밖에서 변수를 선언한 경우
즉, 애플리케이션 전역에서 접근이 가능한 변수이다. (global) </p>
</blockquote>
<pre><code class="language-javascript">// 지역변수 vs 전역변수
// Ex01
var vscope = &#39;global&#39;;
function fscope(){
    var vscope = &#39;local&#39;
    alert(vscope); // local 출력, 가까운 곳에서 선언한 변수 출력
}
fscope();

// Ex02
var vscope = &#39;global&#39;;
function fscope(){
    var vscope = &#39;local&#39;;
    var lv = &#39;local variables&#39;;
    alert(lv); // local variables
}
fscope();
alert(lv); // Undefined, 지역변수이기 때문에 함수 내에서만 호출 가능함

// Ex03
var vscope = &#39;global&#39;;
function fscope(){
  // 1) var 사용O
    var vscope = &#39;local&#39;;
  // 2) var 사용X
 // vsscope = &#39;local&#39;; -- 전역변수
}
fscope(); 
alert(vscope); // 1) global 2) local
// **var을 사용하지 않는 지역변수는 전역변수가 된다.

// Ex04
var vscope = &#39;global&#39;;
function fscope(){
// 지역변수 선언 후, 전역변수 선언했을 경우  
    var vscope = &#39;local&#39;;
    vsscope = &#39;local&#39;; // 우선적으로 지역변수로 지정되었기 때문에, 해당라인에서 vsscope은 지역변수의 값을 할당하게 된다.
}
fscope(); 
alert(vscope); // global
</code></pre>
<p>cf. <del>전역변수</del>는 사용하지 않는 것을 권장한다. <br/> → 여러가지 이유로 그 값이 변경될 수 있기 때문!</p>
<hr>
<h3 id="유효범위의-효용">유효범위의 효용</h3>
<pre><code class="language-javascript">// Ex01 
// Ex01과 Ex02의 차이점을 이해해보자.
function a (){
    var i = 0; // *지역변수
}
for(var i = 0; i &lt; 5; i++){
    a();
    document.write(i); // 01234
}

// Ex02
// 만약 함수a 내부의 지역변수를 선언할 때, var을 사용하지 않았다면? (아래 예제)
function a (){
    i = 0; // *전역변수
}
for(var i = 0; i &lt; 5; i++){
    a();
    document.write(i); // 무한루프 발생
// 전역변수는 각기 다른 로직에서 사용하는 같은 이름의 변수값을 변경시켜서 의도하지 않은 문제를 발생시킨다.
}
</code></pre>
<hr>
<h3 id="전역변수의-사용">전역변수의 사용</h3>
<blockquote>
<p>불가피하게 전역변수를 사용해야 하는 경우에는</p>
</blockquote>
<p>1) <strong>하나의 객체를 전역변수</strong>로 만들고 객체의 속성으로 변수를 관리하는 방법을 사용하거나,
2) 전역변수를 사용하고 싶지 않다면 아래와 같이 익명함수를 호출한다.</p>
<pre><code class="language-javascript">MYAPP = {} // 객체를 전역변수로 만듦
MYAPP.calculator = {
    &#39;left&#39; : null,
    &#39;right&#39; : null
}
MYAPP.coordinate = {
    &#39;left&#39; : null,
    &#39;right&#39; : null
}

MYAPP.calculator.left = 10;
MYAPP.calculator.right = 20;
function sum(){
    return MYAPP.calculator.left + MYAPP.calculator.right;
}
document.write(sum());

// 혹은, 아래와 같이 익명함수를 호출한다.
(function() { 
    var MYAPP = {} // 객체를 전역변수로 만듦
    MYAPP.calculator = {
        &#39;left&#39; : null,
        &#39;right&#39; : null
    }
    MYAPP.coordinate = {
        &#39;left&#39; : null,
        &#39;right&#39; : null
    }
    MYAPP.calculator.left = 10;
    MYAPP.calculator.right = 20;
    function sum(){
        return MYAPP.calculator.left + MYAPP.calculator.right;
    }
    document.write(sum());
}())</code></pre>
<hr>
<h3 id="js에서의-유효범위의-대상">JS에서의 유효범위의 대상</h3>
<blockquote>
<p>JS : <strong>함수</strong>에 대한 유효범위를 제공
(=자바스크립트의 지역변수는 함수에서만 유효하다.)</p>
</blockquote>
<pre><code class="language-javascript">// JavaScript
for(var i = 0; i &lt; 1; i++){
    var name = &#39;coding everybody&#39;; // 전역변수
}
alert(name); // coding everybody
// 즉, 자바스크립트의 지역변수는 함수에서만 유효하다.</code></pre>
<pre><code class="language-java">// Java
for(int i = 0; i &lt; 10; i++){
    String name = &quot;sooyeon&quot;; // for문에 대한 지역변수, for문의 중괄호{..}내에서만 유효
}
System.out.println(name); // error, 여기서 name은 존재하지 않는 변수이기 때문에</code></pre>
<hr>
<h3 id="정적-유효범위">정적 유효범위</h3>
<blockquote>
<p>JS : <strong>함수가 선언된 시점에서의 유효범위</strong>를 갖는다. 
이러한 유효범위의 방식을 <strong>정적 유효범위(static scoping)</strong>, 혹은 <strong>렉시컬(lexical scoping)</strong>이라고 한다.</p>
</blockquote>
<pre><code class="language-javascript">var i = 5;

function a(){
    var i = 10;
    b();
} 
function b(){
    document.write(i); // 5, 함수가 정의된 시점에서의 유효범위를 가짐
}

a(); </code></pre>
<hr>
<blockquote>
<p><strong>📌 핵심포인트</strong>
- 전역변수 vs 지역변수 차이점 알 것
- var을 사용하지 않는 지역변수는 전역변수가 된다.
(전역변수는 각기 다른 로직에서 사용하는 같은 이름의 변수값을 변경시켜서 의도하지 않은 문제가 발생됨)</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[이클립스 프로젝트 GitHub에 올리기]]></title>
            <link>https://velog.io/@soodev9_6/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-GitHub%EC%97%90-%EC%98%AC%EB%A6%AC%EA%B8%B0</link>
            <guid>https://velog.io/@soodev9_6/%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-GitHub%EC%97%90-%EC%98%AC%EB%A6%AC%EA%B8%B0</guid>
            <pubDate>Thu, 17 Mar 2022 16:38:02 GMT</pubDate>
            <description><![CDATA[<h4 id="📌-준비사항">📌 <strong>준비사항</strong></h4>
<p>1) GitHub 계정 가입 및 레퍼지토리 생성
2) Git 다운로드
3) Git 환경설정
- 다운로드후 Git Bash를 오픈한 후, 환경설정을 한다.
<img src="https://images.velog.io/images/soodev9_6/post/b2e8273c-8bd2-406d-9c86-cd66d1f9828a/image.png" alt=""> 
① git config --global user.name &quot;username&quot;
② git config --global user.email &quot;useremail&quot;
③ git config --list
# 마지막에 user.name과 user.email에 본인이 설정한 이름과 이메일이 보여야 한다.</p>
<h4 id="여기까지-준비되었으면-이제-본격적으로-이클립스-프로젝트를-github에-올려보자">여기까지 준비되었으면 이제 본격적으로 <strong>이클립스 프로젝트</strong>를 <strong>GitHub</strong>에 올려보자.</h4>
<p>1) 올리고자 하는 프로젝트 우클릭 &gt; Team &gt; Share Project 접속 및 설정
<img src="https://images.velog.io/images/soodev9_6/post/28fa78d4-86a4-40d1-8cee-bb8d31de3684/image.png" alt=""> </p>
<p>이런 화면이 뜰 것이고, 여기서 확인할 것은 두 가지이다.
- 상단의 Use or Create repository in parent folder of project 체크
그러면 하단의 Create Repository가 활성화되는데, 누르고 Finish 클릭하면 됨</p>
<p>2) 다시 한 번, 프로젝트 우클릭 &gt; Team을 누르게 되면 아까와 달리 Team에 많은 메뉴가 보이게 됩니다. 프로젝트 우클릭&gt;Team&gt;Commit을 클릭합니다.</p>
<p>3) 커밋(Commit)
① 먼저 (AddToIndex) 버튼을 클릭하게 되면, Unstaged Changes → Staged Changes로 파일이 옮겨지게 된다.
② Commit Message란에 커밋메시지 입력
③ Commit &amp; push 클릭 
<img src="https://images.velog.io/images/soodev9_6/post/1dc5f9af-7501-4666-8b9d-439b07d17c39/image.png" alt=""></p>
<p>4) 푸쉬(Push)
① URL부분에 GitHub링크 붙여넣기
② Authentication에 GitHub ID, GitHub Password 입력
→ Preview 두 번 클릭 
<img src="https://images.velog.io/images/soodev9_6/post/6972f550-75d5-462e-888b-b04e1ab60160/image.png" alt="">
③ 로딩이 된 후, Login창이 뜬다.**
<img src="https://images.velog.io/images/soodev9_6/post/91e0c8fc-ec7a-482f-a85d-a2f1514b65ff/image.png" alt="">
※ 21년도 8월부터 깃헙에서 아이디, 패스워드 인증을 없애고 
→ ID / Personal Access Token으로 인증방식을 변경했다.
토큰 발급받는 방법은 해당 블로그 참고 (<a href="https://joytk.tistory.com/58">https://joytk.tistory.com/58</a>)
④ 로그인이 되었으면 아래와 같은 창이 뜨고, Push를 진행한다.
<img src="https://images.velog.io/images/soodev9_6/post/3c2ffaba-64f7-45d2-9eca-77535325f4b8/image.png" alt="">
⑤ Push 후, 한번 더 로그인(GitHub ID, Token)을 진행한 후 종료한다.</p>
<p>5) 마지막으로, 깃허브 사이트 접속하여 확인한다.
이렇게 프로젝트가 반영된 것을 볼 수 있을 것이다!
<img src="https://images.velog.io/images/soodev9_6/post/34fe80bb-105a-4dff-afba-32a8cb710ed8/image.png" alt=""></p>
<p>참고
<a href="https://www.youtube.com/watch?v=pGV4_rpmS5o">https://www.youtube.com/watch?v=pGV4_rpmS5o</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Velog 사용 팁]]></title>
            <link>https://velog.io/@soodev9_6/Velog-%EC%82%AC%EC%9A%A9-%ED%8C%81</link>
            <guid>https://velog.io/@soodev9_6/Velog-%EC%82%AC%EC%9A%A9-%ED%8C%81</guid>
            <pubDate>Tue, 15 Mar 2022 06:16:11 GMT</pubDate>
            <description><![CDATA[<h3 id="마크다운-작성-법">마크다운 작성 법</h3>
<p><a href="https://velog.io/@yuuuye/velog-%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4MarkDown-%EC%9E%91%EC%84%B1%EB%B2%95">https://velog.io/@yuuuye/velog-%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4MarkDown-%EC%9E%91%EC%84%B1%EB%B2%95</a></p>
<h3 id="간단-사용법">간단 사용법</h3>
<p><a href="https://velog.io/@jinuku/Velog-%EA%B0%84%EB%8B%A8-%EC%82%AC%EC%9A%A9%EB%B2%95">https://velog.io/@jinuku/Velog-%EA%B0%84%EB%8B%A8-%EC%82%AC%EC%9A%A9%EB%B2%95</a></p>
<h3 id="텍스트-색상-변경하기">텍스트 색상 변경하기</h3>
<p><a href="https://velog.io/@ssongplay/%EB%B2%A8%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C-%EA%B8%80%EC%94%A8-%EC%83%89%EA%B9%94-%EB%B0%B0%EA%B2%BD%EC%83%89%EA%B9%94-%EB%B0%94%EA%BE%B8%EA%B8%B0-HTML-%EC%83%89%EC%83%81-%EC%9D%B4%EB%A6%84-%EC%BD%94%EB%93%9C">https://velog.io/@ssongplay/%EB%B2%A8%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C-%EA%B8%80%EC%94%A8-%EC%83%89%EA%B9%94-%EB%B0%B0%EA%B2%BD%EC%83%89%EA%B9%94-%EB%B0%94%EA%BE%B8%EA%B8%B0-HTML-%EC%83%89%EC%83%81-%EC%9D%B4%EB%A6%84-%EC%BD%94%EB%93%9C</a></p>
<br/>
좋은 정보를 제공해주시는 분들께 늘 감사합니다!🙆‍♀️]]></description>
        </item>
    </channel>
</rss>