본문 바로가기

전체 글

(52)
실행 컨텍스트(Execution context) 실행 컨텍스트 정리 중 일단 끄적이기 실행컨텍스트는 scope, hoisting, this, function, closure 등의 동작원리를 담고있는 실행 컨텍스트(Execution Context)는 scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리이다. 실행 컨텍스트를 바로 이해하지 못하면 코드 독해가 어려워지며 디버깅도 매우 곤란해 질 것이다. 실행 컨텍스트란? 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념인데, 이해하기 쉽게 말하자면 실행 가능한 코드가 실행되기 위해 필요한 환경으로 말할 수 있습니다. 이것도 역시 코드를 먼저 보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function ..
호이스팅(Hoisting) 호이스팅에 대한 정리 중... 일단 끄적이기 실행컨텍스트도 정리해야함. 호이스팅보다 먼저오게해야지 호이스팅이란? Hoisting 의 사전적 정의는 끌어올리기, 들어올려 나르기이다. 먼저 코드를 보자. 1 2 3 console.log(a); var a = 100; console.log(a); cs 위 코드는 자바스크립트에서 문제없이 동작한다. 그 이유는 이 포스트의 주제인 호이스팅때문이다. 자바스크립트에서의 호이스팅은 var 선언문이나 혹은 function 선언문 등 모든 선언문이 해당 Scope 의 최상단으로 끌어올려진 것처럼 동작하는 특성을 일컫는다. 즉, 자바스크립트에서의 모든 선언문은 선언되기 이전에 참조가 가능하다. 이러한 동작을 하는 이유는 변수 선언부터 이해해야한다. 변수 선언은 총 3단계로 ..
이분탐색 > 징검다리 https://www.welcomekakao.com/learn/courses/30/lessons/43236 이 문제도 아직 나한텐 어려운 것 같다.. 또 다른사람의 풀이를 보고나서야 답을 구할 수 있었음 ㅜㅜ 문제를 푸는 로직은 아래와 같다. 1. 이분탐색 문제에 맞게 구하려는 값의 최솟값과 최댓값을 정해야 한다. 구하려는 값은 n개만큼의 바위를 제거한 뒤에 남는 바위들 간의 거리의 최솟값중에 최댓값을 구하는 것이다. 즉, 바위간의 거리를 기준으로 삼아야하는 문제이다. 2. 바위간의 거리 중 최솟값은 1이며, 최댓값은 주어진 변수인 distance 로 설정하였다. 3. 중간값인 mid 를 구한다음에 바위의 위치가 담긴 배열을 순회하며 구한 mid 값보다 이전 바위의 거리가 작으면 제거하고, 같거나 크다면..
이분탐색 > 입국심사 https://www.welcomekakao.com/learn/courses/30/lessons/43238# 이 문제는 결국엔 다른사람의 답을 보고서 이해하여 짠 코드이고, 문제를 푸는 로직은 아래와 같다. 1. 이분 탐색을 하기위한 최솟값과 최댓값을 구해야한다. 문제에 보면 입국심사를 기다리는 인원은 1명이상, 심사관이 소모하는 시간은 1분이상이므로 최솟값은 1이다. 최댓값은 가장 오래걸리는 심사대에서 n명이 모두 심사를 받는 경우이다. 2. 특정 시간에서 몇명이 심사를 받을 수 있는 지 계산하면 된다. 이를 최솟값부터 최대값까지 그대로 계산한다면 O(N)의 시간이 걸리지만, 이분 탐색을 실시하면 O(logN) 에 정답을 찾을 수 있다. 3. 이분 탐색을 실시하면서 3-1. mid 값의 시간일 때, 몇..
스택/큐 - 주식가격 https://www.welcomekakao.com/learn/courses/30/lessons/42584 사실 문제이해가 제일 오래걸렸다... 1초, 2초 시점은 이해가 되지만 3초 시점이 왜 1이지..? 국어능력도 필요한 문제인 것 같다. 어쨌든 위 문제의 풀이방법은 아래와 같다. 1. 2중 for 문 중 첫번째 for 문은 처음부터 끝까지 주식의 가격을 순회한다. 2. 두번째 for 문에서 다음 날 가격 끝까지 주식의 가격을 순회한다. 3. 두번째 for 문에서 가격하락이 발생한 날을 찾는다. 만약 가격이 하락했다면 두 주식의 index 차이를 계산하여 정답에 push 하고, 가격하락이 되었다는 flag 를 true 로 설정해준다. 4. 3번 case 에 해당되지 않는다면(주식이 하락하지 않았다면)..
스택/큐 - 기능개발 https://www.welcomekakao.com/learn/courses/30/lessons/42586 문제를 푸는 로직은 아래와 같다. 1. 각 기능의 완료기간을 계산하고 queue 에 넣는다. (11~20 line) 이때 주의해야할 점은 딱 100이 되는 순간이 완료기간이므로 나머지 값 유/무 여부를 따져야한다. (15~18 line) 2. queue 를 순회하기 이전에 가장 맨앞의 작업이 완료되는 기간을 미리 저장해둔다. (22 line) 3. 이제 queue 순회하면서 작업 완료기간을 비교한다. 만약, 이전 작업보다 완료기간이 작으면 작업의 갯수를 증가시키고 (31 line) 이전 작업보다 완료기간이 큰 작업이 발견되면 작업 완료기간을 갱신하며 작업의 갯수도 1로 갱신한다. (26 ~29 li..
스택/큐 - 탑 https://www.welcomekakao.com/learn/courses/30/lessons/42588 위 문제를 풀기 위해 아래 로직을 구현하였다. 그런데, 해당 문제의 범주가 스택/탑인데.. 내가 푼 방법은 사실 억지로 스택을 쓴 것 뿐이지 2중 for 문을 사용한 것과는 다를 것이 없다. 다른 사람의 코드를 아직 보진않았지만, 스택을 어떻게 써야 하는 문제인지 파악해보고 싶다. 1. 탑 index 와 탑의 높이를 stack 에 저장한다. 2. 저장 된 stack 을 pop 하면서 자신보다 앞에 있는 탑과 높이를 비교하며, 자신보다 높은 탑을 발견할 시 answer 에 push 3. answer 에는 정답이 거꾸로 들어가있으므로 reverse 연산을 수행 1 2 3 4 5 6 7 8 9 10 11..
스택/큐 - 다리를 지나는 트럭 https://www.welcomekakao.com/learn/courses/30/lessons/42583 위 문제를 풀기위해 특별한 로직은 없는 것 같고, 아래에 코드풀이와 염두해두어야 할 점들을 적어놓았다. 1. 다리를 건너는 트럭을 계산하기 전에 다리를 지나는 트럭을 계산하여야한다. (예제 경과시간 3초를 보고 알 수 있듯이 다리를 지난 트럭을 먼저 계산한 후에, 다리를 건너는 트럭을 계산해야 한다.) 2. 다리를 오른 후 다리를 지날 때까지 시간의 흐름을 어떻게 계산해야하는 지 고민을 했었는 데, 27 line 의 계산을 떠올렸다. 3. 다리를 건너는 트럭을 구할 땐, 현재무게, 올라 탈 트럭의 무게와 다리가 견딜 수 있는 무게를 잘 연산하면 된다 (36 line ). 그리고 2번째 비교인 다리의..