Javascript(68)
-
[JS] 이진 탐색 트리
1. 이진 탐색 트리란? 이진 탐색 트리란 이진트리를 사용하기 위해서 저장할 데이터의 크기에 따라 노드의 위치를 정의한 것을 말한다. 이진 탐색 트리의 특징은 다음과 같다. 모든 원소는 서로 다른 유일한 키를 갖는다. 왼쪽 서브트리에 있는 원소의 크기는 그 루트의 키보다 작다. 오른쪽 서브트리에 있는 원소의 키는 그 루트의 키보다 크다. 왼쪽, 오른쪽 서브트리도 이진 탐색 트리다. 이번 포스팅에서 다룰 것은 이진 탐색 트리에 대한 간략한 정의, 탐색, 삽입, 삭제 연산이다. 이진 트리의 순회에 대해서는 이전에 포스팅을 했으니 참고하길 바란다. 2. 탐색 연산 탐색은 항상 루트에서 시작된다. 따라서 먼저 키값과 루트 노드의 키값을 비교한다. 비교 결과는 다음의 세 가지 중 하나가 될 것이다. (키값 x =..
2020.06.12 -
[JS 33가지 개념] 1. 함수의 동기적 호출과 콜 스택의 관계성
콜 스택은 함수의 호출을 기록하는 자료구조다. 우리가 함수를 선언하고 호출하게되면 호출된 함수는 스택에 쌓였다가 실행된다. 여기서 스택이란 LIFO(Last In First OUT)구조를 말하는데, 첫 번째로 들어오면 마지막에 나가고, 마지막에 들어오면 첫 번째로 나간다는 뜻이다. 다음 코드를 보자. console.log("a"); console.log("b"); console.log("c"); 이 코드를 출력한다면? 어떤 출력 결과가 뜰까? 자바스크립트를 이용해 Hello world라는 메세지를 콘솔을 이용해서 출력해 본 사람이라면 "a", "b", "c" 순서로 출력이 뜰 것이라는 것은 알 것이다. 그런데 왜 이런 결과가 뜨는 것일까? 바로 콜 스택이라는 자료구조를 이용하기 때문이다. 그림으로 표현하..
2020.06.11 -
[JS] 프로그래머스 - 가장 큰 수(레벨 2)
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한사항 numbers의 길이는 1 이상 100,000 이하이다. numbers의 원소는 0이상 1,000 이하이다. 정답이 너무 클 수도 있으니 문자열로 바꾸어 return한다. 입출력 예 [6, 10, 2] "6210" [3, 30, 34..
2020.06.11 -
[JS] 자바스크립트의 자료형
1. 숫자형 정수, 부동 소수점과 같은 숫자 등의 수를 나타낼 때 사용한다. 곱셈(*), 나눗셈(/), 덧셈(+), 뺄셈(-) 등을 이용해서 연산이 가능하다. 일반적인 숫자 외에 Infinity, -Infinity, NaN과 같은 특수 숫자 값이 존재한다. const num = 3.5; // 3.5 /* 자바스크립트는 정수, 소수를 구분하는 형이 없다.*/ console.log(num/3); // 1.1666666666666667 console.log(parseInt(num/3)); // parseInt를 이용해서 1.1666666666666667에서 정수 부분 1을 가져오게 할 수 있다. /* 숫자형의 사칙연산 */ console.log("더하기:", 3 + 3.5); // 6.5 console.log..
2020.06.10 -
[JS] 이진트리와 순회
1. 트리 연결리스트, 스택, 큐는 자료들이 선의 형태로 쭉 나열되어 있는 구조를 가지고 있다. 이를 선형 자료구조라고 한다. 반대로 자료구조가 선의 형태로 나열되지 않는 구조를 비선형 자료구조라고 한다. 여기서 트리는 비선형 자료구조 중에서 자료들 간에 계층적인 구조를 이루고 있다. 가계도를 떠올리면 쉽다. [그림 1] 가계도를 보면 준식는 태성, 형준이라는 두 명의 자식이 있고 태성 또한, 민경, 지영이라는 두 명의 자식이 있다. 이렇듯 가계도에서 가족 구성원을 연결하는 선은 부모-자식 관계를 나타낸다는 것을 알 수 있다. 그리고 쭉 올라가면 준식이라는 조상을 만날 수 있다. 이제 가계도를 트리 구조로 바꾸면 다음과 같다. 구조적으로 딱히 가계도와 다르지 않다. 간단하게 용어설명을 하겠다. A, B,..
2020.06.09 -
[JS] 변수와 상수
1. 변수 프로그래밍 언어를 한 번이라도 배운 적이 있다면, 변수, 상수의 개념에 대해서 한 번씩 들어본 적이 있을 것이다. 이 두 개는 거의 모든 언어에서 약속된 것 같이 개념이 비슷하다. 하지만, 함수형 언어의 일종인 스칼라같은 언어의 경우, 모든 변수가 한 번 저장되면 상수처럼 영원히 값을 변경할 수 없다고 한다. 그러나 , 자바스크립트는 함수형 언어가 아니니 C, 자바와 같이 변수, 상수의 개념이 명확하다. 그렇다면 변수는 무엇일까? 변수는 값을 저장하는 저장소이다. 프로그래밍을 배운 사람들은 보통 변수를 값을 수시로 바꿔서 저장할 수 있는 것으로, 상수를 한 번 저장하면 그 값은 영원히 바꿀 수 없는 것으로 알고 있다. 당신이 알고 있는 그 개념이 맞다. 자바스크립트도 그 개념이 똑같이 적용된다..
2020.06.08