분류 전체보기

알고리즘

[프로그래머스] 타겟 넘버 JavaScript

문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 유형 DFS/BFS 문제 풀이 이번 문제는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 주어지고 배열 내의 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 리턴하는 문제이다. 해당 문제는 recursive DFS를 구현하여 해결할 수 있다. 0번 인덱스부터 dfs 함수를 호출하여 마지막 인덱스까지 모든 숫자를 더한 값을 계산하고 계산한 결과가 타겟 넘버인지를 확인한다. 마지막 인덱스까지 확인 후 재귀를 빠져나와 숫자가 음수인 경우를 탐색한다. 코드 function so..

알고리즘

[LeetCode] 841 Keys and Rooms JavaScript

문제 링크 Keys and Rooms - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 그래프, DFS/ BFS 문제 풀이 이번 문제는 0 ~ (n - 1)번 방 n개와 각 방에는 번호가 적힌 키가 있다. 키에 적힌 번호는 해당 키로 열 수 있는 방의 번호이다. 0번 방에서부터 모든 방을 열 수 있으면 true를 반환하고, 그렇지 않으면 false를 반환한다. 해당 문제는 그래프 문제로 생각하여 DFS나 BFS를 이용해 그래프를 순회하여 해결 할 수 ..

알고리즘

[LeetCode] 543 Diameter of Binary Tree JavaScript

문제 링크 Diameter of Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 트리, 백트래킹 문제 풀이 이번 문제는 트리의 지름을 구하는 문제이다. 여기서 지름(diameter)는 트리의 어떤 두 노드 사이의 가장 긴 경로의 길이를 말한다. 해당 문제는 백트래킹을 적용하여 각 노드를 post-order 순회한다. 이를 통해 각 노드의 left depth와 right depth를 구한다. 저장된 지름보다 left depth와 ..

JavaScript/모던 자바스크립트 Deep Dive

27. 이터러블 (Iterable), 스프레드 문법, 구조 분해 할당

이터러블 이터러블 프로토콜을 준수한 객체 즉, Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속받은 객체 ✅ 이터러블 프로토콜 (Iterable Protocol) ES6 이전의 순회 가능한 데이터 컬렉션(배열, 문자열, 유사 배열 객체, DOM 컬렉션 등)은 통일된 규약 없이 나름의 구조를 가지고 for 문, for...in문, forEach 메서드 등 다양한 방법으로 순회할 수 있었다. ES6에서는 순회 가능한 데이터 컬렉션을 이터레이션 프로토콜을 준수하는 이터러블로 통일해 for..of문, 스프레드 문법, 배열 디스트럭처링 할당의 대상으로 사용하도록 일원화했다. Symbol.iterator 메서드를 직접 구현하지 않거나 상속받지 않은 일반 객체는..

JavaScript/모던 자바스크립트 Deep Dive

26. 표준 빌트인 객체 - String

표준 빌트인 객체인 String은 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다. String 생성자 함수 String 객체는 생성자 함수 객체이므로 new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다. String 메서드 String 객체는 원본 String 래퍼 객체를 직접 변경하는 메서드는 존재하지 않는다. 즉, String 객체의 메서드는 언제나 새로운 문자열을 반환한다. 문자열은 변경 불가능(Immutable)한 원시 값이기 때문에 String 래퍼 객체도 읽기 전용 객체로 제공된다. String 래퍼 객체는 읽기 전용 객체다. 즉, writable 프로퍼티 어트리뷰트 값이 false다. String.prototype.indexOf 메서드를 호출한 문자열에서..

JavaScript/모던 자바스크립트 Deep Dive

25. 표준 빌트인 객체 - Date

Date Date는 빌트인 객체이면서 생성자 함수이다. UTC: 국제 표준시 KST: 한국 표준시, UTC에 9시간을 더한 시간으로 UTC보다 9시간 빠르다. UTC 00:00 AM = KST 09:00 AM 현재 날짜와 시간은 자바스크립트 코드가 실행된 시스템의 시계에 의해 결정된다. Date 생성자 함수 Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다. (내부적) 정수값은 1970년 1월 1일 00:00:00(UTC)을 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초를 나타낸다. (콘솔) 날짜와 시간 정보를 출력한다. /* 86400000ms는 1day를 의미한다. 1s = 1,000ms 1m = 60s * 1,000ms = 60,000ms ..

JavaScript/모던 자바스크립트 Deep Dive

24. 표준 빌트인 객체 - Math

Math는 생성자 함수가 아니다. 따라서 정적 프로퍼티와 정적 메서드만 제공한다. Math.PI 원주율 PI 값을 반환한다. Math.abs 인수로 전달된 숫자의 절대값을 반환한다. Math.round 인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환한다. Math.ceil 인수로 전달된 숫자의 소수점 이하를 올림한 정수를 반환한다. Math.floor 인수로 전달된 숫자의 소수점 이하를 내림한 정수를 반환한다. Math.sqrt 인수로 전달된 숫자의 제곱근을 반환한다. Math.random 임의의 난수(랜덤 숫자)를 반환한다. 반환한 난수는 0에서 1미만의 실수다. Math.pow 첫번째 인수를 밑으로, 두번째 인수를 지수로 거듭제곱한 결과를 반환한다. Math.pow 메서드 대신 ES7에 도입..

JavaScript/모던 자바스크립트 Deep Dive

23. 표준 빌트인 객체 - Number

Number는 표준 내장 객체 중 하나로, 원시 타입인 숫자를 다룰 때 유용한 프로퍼티와 메서드를 제공한다. Number 생성자 함수 Number 표준 빌트인 객체는 생성자 함수 객체이다. new 연산자와 함께 호출해 Number 인스턴스를 생성할 수 있다. Number 생성자 함수에 인수를 전달하여 new 연산자와 함께 호출하면 [[NumberData]](=[[PrimitiveValue)라는 접근할 수 없는 내부 슬롯에 인수로 전달된 숫자를 할당한 Number 래퍼 객체를 생성한다. 인수를 전달하지 않고 호출하면 내부 슬롯에 0이 할당된다. 인수로 숫자가 아닌 값을 전달하면 숫자로 강제 변환 후 할당한다. Number 메서드 Number.isFinite 인수로 전달된 숫자값이 정상적인 유한수(Infin..

sandwe
'분류 전체보기' 카테고리의 글 목록 (3 Page)