-
[JS/스코프] 자바스크립트 스코프(scope)와 즉시실행함수(IIFE)Frontend 2019. 5. 2. 16:02
스코프(scope) 스코프란 일종의 "범위"와 같은 것이다. 어떤 변수를 선언하였을 때, 그 변수에 접근할 수 있는 범위라고 생각하면 쉽니다. 스코프에는 Global(전역)과 Local(지역)이 있는데, Global scope는 말 그대로 어떤 함수에 종속되어있지 않고 어디서나 접근할 수 있는 전역 범위를 말한다. 반면, Local scope는 어떤 함수나 블록 단위로 국한되는 범위를 말한다. 만약에 Global scope에 어떤 변수가 선언되었다면, 그 변수는 Global Variable(전역 변수)가 된다. 반면, 어떤 변수가 Local scope에 선언되었다면, Local Variable(지역 변수)가 된다. 위 그림에서 파란색 영역이 Global scope, 보라색 영역이 Local scope이다..
-
[알고리즘/자바스크립트] 페이지 카운트 (Page Count)Algorithm 2019. 5. 1. 19:14
[문제] Viserion은 예민한 사람들이 많은 도서관에서 공부를 합니다. Viserion은 한번에 특정 페이지를 열지 못하고, 교과서의 맨 앞장이나 맨 뒷장부터 차례로 넘길 수만 있습니다. 그래서 책을 넘기는 소리를 적게 내는 방법을 고민해야 합니다. 또한 항상 한번에 한페이지만 넘길 수 있습니다. Viserion이 책 앞장을 펼치면, 항상 1페이지는 오른쪽에 있습니다. * _________________________________ * | : | * | : | * | : | * | : 1page | * |_______________ : _______________| 1페이에서 한장을 넘기면, 다음 장에는 2페이지와 3페이지가 있습니다. * _________________________________ ..
-
[알고리즘/자바스크립트] 영역 안에 떨어진 사과와 오렌지 개수 구하기 (Count Apples and Oranges)Algorithm 2019. 5. 1. 15:10
[문제] 다음과 같은 흑백 세상에 오렌지 나무와 사과나무가 있습니다. a는 사과나무의 위치를, b는 오렌지 나무의 위치를 나타냅니다. 두 나무 사이에는 Vanilla House가 있고, Vanilla House의 영역은 s에서부터 t까지로 정의됩니다. * -----a---------------------------------s---------------t----------------------------------b-----* * * * ___________ * * * * * | Vanilla | * * * | | House | | * -----a---------------------------------s---------------t----------------------------------b----..
-
[알고리즘/자바스크립트] 합해서 나눠떨어지는 쌍 찾기 (Divisible Sum Pairs)Algorithm 2019. 5. 1. 14:23
[문제] 정수로 이루어진 배열 ar과 양의 정수 k가 있습니다. 다음과 같은 조건을 만족하는 배열 원소들의 쌍의 개수를 반환하는 함수를 작성해주세요. i < j 이다. ar[i] + ar[j] 는 k의 배수이다. 예를들어, ar = [1, 2, 3, 4, 5, 6] 이고 k = 5 일때, 조건을 만족하는 쌍은 [1, 4], [2, 3], [4, 6] 세 쌍입니다. 그러므로 결과값은 3이 나와야 합니다. ar = [1, 2, 3, 4, 5, 6] 이고 k = 5 일때 배열을 1부터 6까지 차례로 돌리는데, 1의 순서가 왔을 때, 1에다가 2, 3, 4, 5, 6을 각각 더해서 5의 배수인지 판별하고 2의 순서가 왔을 떄는 3, 4, 5, 6을 각각 더해서 5의 배수인지 판별, 3의 순서가 왔을 때는 4, ..
-
[알고리즘/자바스크립트] 컵 돌리기 게임 (Find Key)Algorithm 2019. 5. 1. 13:11
[문제] 세 개의 뒤집힌 컵 중 한 개의 컵 안에 열쇠가 있습니다. 당신이 열쇠를 찾기 위해 컵을 들어올리려는 순간, Drogon이 빠르게 컵의 위치를 뒤섞기 시작합니다. 컵의 교환이 끝났을 때, 열쇠가 들어있는 컵을 찾아야 합니다. 컵의 위치는 인덱스로 표현됩니다. (0부터 시작) 키가 들어있는 컵의 인덱스와 교환된 컵의 인덱스를 나타내는 배열(swaps)을 입력으로 받습니다. 예를들어, 열쇠가 들어있는 컵의 처음 위치가 `0`이고 컵이 교환되는 순서가 다음과 같다면 [(0, 1), (1, 2), (1, 0)] 첫 교환때 열쇠가 있는 컵은 0 에서 1로 이동하게 됩니다. 두번째 교환때 열쇠가 있는 컵은 1 에서 2로 이동하게 됩니다. 마지막 교환때 1에 있는 컵이 0으로 가지만, 열쇠가 있는 컵에는 영..
-
[JS/반복문] 자바스크립트, 가장 기초적인 반복문 for문의 동작 원리 (for문/이중for문/break/continue)Frontend 2019. 4. 28. 14:17
어떤 언어에서든지 매우 중요하게 다뤄지는 반복문에 대해서 정리해보려고 한다. 1. for문 반복문은 어떤 동작을 여러 번 실행할 때 사용한다. 만약에 어떤 변수에 1부터 10까지 더한다고 생각해보자. 반복문이 없다면 우리는 변수에 계속해서 숫자를 더하는 코드를 10줄 써야할 것이다. var sum = 0; sum += 1; sum += 2; sum += 3; sum += 4; sum += 5; sum += 6; sum += 7; sum += 8; sum += 9; sum += 10; 이 얼마나 귀찮은(!) 100까지 더하면 100줄, 1000까지 더하면 1000줄로 늘어난다(!) 물론 컴퓨터는 매우 똑똑해서 귀찮은 반복작업을 대신 해준다. 그 때 사용하는 것이 반복문인데 가장 많이 사용되는 for문으로 ..
-
[IT] 객체지향 프로그래밍이란?Computer Science 2019. 4. 25. 01:40
요즘 IT업계에서 공부를 하거나 일하고 있는 사람들이라면 많이 들어봤을 단어. 객체지향 프로그래밍, 객체지향 소프트웨어 공학, 객체지향 블라블라~~ 내가 배우고있는 자바스크립트라는 언어도 객체지향적인 언어라고 할만한 요소들이 있고 우리가 프로그래밍을 할 때도 객체지향 기법으로 해야한다고 하는데 그래서 대체 이 객체지향 프로그래밍이라는 것이 무엇일까? 뭔가 단어만 들으면 감이 안오고 생소한 객체지향이란 말은 사실 별게 아니다. 객체지향 기법이란 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있도록 하는 기법이다. 말은 댑따 어렵지만 개념을 쉽게 설명해보면 그렇게 어려운..
-
[JS/Arguments] 자바스크립트, Arguments 객체에 대해서.Frontend 2019. 4. 24. 15:40
Javascript, The Arguments Object function makeSum (num1, num2) { return num1 + num2; } makeSum(4, 7); 만약에 위와 같이 어떤 숫자의 합을 구하는 간단한 function을 만들었다고 해보자. 함수 파라미터로 num1, num2에 각각 숫자를 넣으면 그 숫자의 합을 구해서 return하는 함수이다. 그런데 위와 같이 함수를 만들면 우리는 딱 2개의 숫자만 더할 수 있다. 그러니까 즉, 함수를 처음 만들 때 지정한 parameter의 개수만큼만 가져와서 연산할 수 있다는 말이다. 그렇다면 만약에 어떤 경우에는 파라미터로 3, 5, 6, 8을 넘겨주고 이 숫자들의 합을 구하고 어떤 경우에는 7, 34, 2, 7, 8, 23, 4 이..
-
[JS/클로져] 자바스크립트의 Lexical scoping과 ClosureFrontend 2019. 4. 23. 15:25
하.. 너무 이해하기 어렵고 힘들었는데 최대한 MDN이랑 W3Cschools 글을 읽고 또 읽어서 이해한 내용을 정리해보려고 한다. 내가 정리한 내용들은 모두 아래 링크로 들어가면 나온다. Closures A closure is the combination of a function and the lexical environment within which that function was declared. developer.mozilla.org JavaScript Function Closures JavaScript Closures JavaScript variables can belong to the local or global scope. Global variables can be made local (pr..
-
[JS/입력값검증] 숫자 3자리마다 ,(콤마)찍기 / 숫자와 콤마를 제외한 문자 입력 제한 / 0으로 시작 못하게 제한 / keyup이벤트Frontend 2019. 4. 19. 23:10
오늘은 input박스에 숫자를 입력했을 때 여러가지 이벤트 주는 것을 구현해보려고 한다. 키보드를 입력하는 것과 동시에 이벤트가 발생해야하므로 keyup이벤트를 사용할 예정이다. 1. 숫자 3자리마다 ,(콤마)찍기 2. 숫자와 콤마를 제외한 나머지 문자를 입력할 수 없도록 막기 3. 0으로 시작하지 못하게 제한하기 먼저 숫자 3자리마다 콤마를 찍기 위해 아래와 같은 함수를 만들어보았다. function insertComma(num) { if(num.length