[Algorithm] 이진 탐색(Binary Search)
·
알고리즘/개념
들어가며 개발자의 길을 걸은 이후 프로젝트 요구사항에 따른 기능 구현에만 초점을 맞추어 공부를 진행해왔었습니다. 그때그때 문제가 발생할 때마다 구글링을 통해 어떻게든 문제를 해결했습니다. 그러나 그마저도 다른 사람들이 해결한 방법을 적용하는 것에 급급할 따름이었습니다. 문제 해결력을 키우고 싶어 알고리즘을 공부해야 겠다고 느끼게 되었고, 이 포스팅이 바로 그 시작점입니다. 회사 생활을 하는 탓에 매일 포스팅을 올리지는 못하겠지만 앞으로 학습한 개념들을 하나씩 정리하며 포스팅할 계획입니다. 알고리즘은 개념 학습에만 그치면 겉핥기 학습 밖에 되지 않습니다. 직접 문제를 풀어보는 게 매우 중요하므로 백준 문제 풀이 또한 포스팅할 계획입니다. 여러 블로그 글을 참조하며 공부하고 정리한 내용이니 약간의 오류가 있..
JavaScript와 Iterator
·
프로그래밍 언어/JavaScript
ES2015에서 Iterable Protocol이 추가되었습니다. Iterable Protocol에는 2가지 형태가 존재하는데, iterable과 iterator가 있습니다. Iterable iterable은 객체의 멤버를 반복할 수 있는 객체입니다. iterable은 자바스크립트 객체의 요소들에 대해 반복되는 행동(예를 들어, for .. of 구문에서 어떤 값들이 루프를 돌고 있는가)을 정의할 수 있도록 해줍니다. JavaScript에서 객체가 iterable하기 위해서는, object에는 [@@iterator] 메서드가 구현되어 있어야 합니다. 따라서 임의로 우리가 객체를 만들고 iterable하게 만들고 싶다면, object 프로퍼티에 Symbol.iterator를 추가해야 합니다. 객체는 반드시..
Node와 Element
·
프로그래밍 언어/JavaScript
HTML / XML 문서는 브라우저 안에서 DOM 트리로 표현됩니다. 태그는 요소 노드가 되고 트리 구조를 형성합니다. 문자는 텍스트 노드가 됩니다. 이 외에 HTML 내의 모든 것은 DOM을 구성합니다. 심지어 주석까지도 말입니다. HTML 안의 모든 것들은 (심지어 그것은 주석이더라도) 노드이고, 이 노드들이 모이고 서로 연결되어 DOM을 구성하고 있습니다. 노드의 종류 노드 타입은 총 12가지인데, 실무에서 주로 다음 네 가지 노드를 다룹니다. DOM의 '진입점'이 되는 문서(document) 노드 HTML 태그에서 만들어지며, DOM 트리를 구성하는 블록인 요소 노드(element node) 텍스트를 포함하는 텍스트 노드(text node) 화면에 보이지는 않지만, 정보를 기록하고 자바스크립트를 ..
왜 forEach 메소드는 children 속성에 대해 동작하지 않을까?
·
시행착오
이벤트 핸들러 함수에서 어떠한 DOM 요소의 자식 요소들에 접근하기 위해서 .children 을 사용합니다. const parentElement = document.querySelector('.parent'); console.log(parentElement.children) parentElement.children.forEach(function (entry) { console.log(entry); }); 위에서 작성한 코드에서 parentElement.children 은 자식 DOM 요소들이 담긴 리스트를 반환하기 때문에, 당연히 배열의 forEach 메소드를 사용하여 각각의 요소에 접근하여 어떤 동작을 수행할 수 있을 것이라고 생각하였습니다. 하지만 다음과 같은 에러 메세지를 콘솔 창에 빨간 글씨로 출..
sort 함수를 이용한 정렬
·
프로그래밍 언어/JavaScript
arrayObj.sort(sortFunction) arrayObj는 임의의 Array 객체이며 sortFunction은 요소 순서를 결정하는 데 사용되는 함수이다. sort 함수를 이용하면 문자, 숫자, Object 정렬 등을 수행할 수 있다. 참고로 sort 함수는 원본 배열을 조작하여 정렬시킨다. 정렬된 새로운 배열을 새로 생성하지 않는다. 1. 문자 정렬 const arr = ["fff", "hhh", "aaa", "ccc"]; arr.sort(); console.log(arr); 일반적인 정렬 방식이며, 아스키코드 문자 순서로 정렬된다. 2. 숫자 정렬 위의 문자 정렬과 동일한 방법으로 숫자를 정렬하게 되면 아스키코드 순으로 정렬되므로 우리가 원하는 대로 숫자를 정렬되지 않는다. 그러므로, 숫자를..
[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, 3..