목록분류 전체보기 (67)
가치투자자
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FSWlj/btr7gzI5ICA/ES3suat2HxyiGzIcRK6v3k/img.jpg)
var, let, const 변수를 선언할 때 사용하는 키워드에는 var와 let, const가 있다. 2015년 ES6가 등장하기 이전에는 var 키워드로 변수를 선언해왔는데, let과 const라는 키워드가 새로 등장했다. 이러한 키워드들로 선언된 변수들이 어떻게 다른지 살펴보고자 한다. * 기술면접 질문은 맨 아래에 적혀 있습니다 1-1. 변수 생성 과정 변수는 총 3단계를 거쳐 생성된다. 선언 단계 (declaration phase) : 변수를 (실행 컨텍스트의) 변수 객체에 등록한다. 즉, 변수가 등록(선언)된 것이다 초기화 단계 (initialization phase) : 변수에 값을 넣기 위한 공간을 메모리에 확보한다. 이 단계에서 변수는 undefined로 초기화된다. 할당 단계 (assi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5Va3L/btr7gQCZKvO/mqC5a4TYBJAJk1Q0y7h7i0/img.webp)
호이스팅 (Hoisting) 공식문서를 살펴보면, 호이스팅(hoisting)은 '인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것'을 의미한다고 나와있다. 역시 공식 문서의 용어들은 초보자가 공부하기에 쉽지 않다. 좀 더 쉬운 말로 호이스팅에 대해 설명해보고자 한다. * 기술면접 질문은 맨 아래에 적혀 있습니다 1. 호이스팅이란? 호이스팅은 변수가 선언된 시점보다 먼저 실행되는 현상이다. 좀더 쉽게 설명해보자면, 변수가 어디에 적혀있든지(선언된 시점) 상관없이 맨 위로 끌어와 먼저 실행하는 것을 말한다. 여기서 var, let, const, function, function*, class 키워드를 사용해 선언된 모든 식별자(변수, 함수, 클래스 등)는 호이스팅된다. 아래의 예제를 통해..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lY6Tz/btr8axJNyr5/TUWZUK8CKDdf6qTICiFEf1/img.png)
백준 1427번 : 소트인사이드 🔗 문제 링크 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 💬 문제 정렬 알고리즘 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다. 1번째 줄에 정수 N이 주어진다. 이 정수의 각 자리수를 내림차순으로 정렬한다. 💡 입력값 받아오기 JavaScript로 풀 경우, 입력값(input)을 어떻게 받아와야 할 지가 중요하다. 이 문제에서는 1번째 줄에 정수 N만 주어진다. 정수 N을 받아오기만 하면 된다. 입력값을 받아오는 것과 관련해 더 자세한 내용은 아래 링크를 참고 바란다. https://v..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bc38x2/btr8f0rn3Lg/RkRwkRoYCvyaJkx6Yxkkb0/img.png)
백준 1181번 : 단어 정렬 🔗 문제 링크 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 💬 문제 정렬 알고리즘 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다. 1번째 줄에 정렬해야 하는 문자열의 개수 N이 주어진다. 2번째 줄부터 총 N개의 문자열이 주어지며, 이를 배열 arr로 받아준다. 길이가 짧은 것 순으로 정렬하고, 길이가 같을 겨우에는 사전 순으로 정렬한다. 중복된 단어가 있을 경우, 하나만 남겨준다. 💡 입력값 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/esvLFS/btr8hmHGb9q/MI51aIheeB2MCN8jphU6b0/img.png)
백준 2751번 : 수 정렬하기2 🔗 문제 링크 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 💬 문제 정렬 알고리즘 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다. 1번째 줄에 정렬해야 하는 수의 개수 N이 주어진다. 2번째 줄부터 총 N개의 수가 주어지며, 이를 배열 arr로 받아준다. 배열 arr를 오름차순으로 정렬하여 출력해준다. 💡 입력값 받아오기 JavaScript로 풀 경우, 입력값(input)을 어떻게 받아와야 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EUp0N/btr6stwBSz9/hgkuSKu2ynPfGo6IkU9ii0/img.png)
퀵 정렬 (Quick Sort) 1. 퀵 정렬이란? 퀵 정렬(quick sort) 역시 병합 정렬과 마찬가지로 어떤 문제를 2개의 작은 문제로 분리해 각각을 해결하는 분할 정복 알고리즘 중 하나다. 1-1) 차이점 병합 정렬 - 분할 단계에서는 분할만 하고 병합 단계에서 정렬을 한다 퀵 정렬 - 분할 단계에서 정렬이 이루어지며, 병합 시에는 병합만 한다. 퀵 정렬 알고리즘은 다음 개념들을 바탕으로 진행된다. 분할 (Divde) : 입력된 배열을 기준점(pivot)을 기준으로 비균등하게 분할한다. 정복 (Conquer) : 분할된 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면(리스트의 길이가 1이 아니면) 순환 호출을 이용하여 다시 분할한다. 결합 (Combine) : 정렬된 부분 배열들을..