ES6에 도입된 스프레드 문법 ... 은 하나로 뭉쳐있는 여러 값들의 집합을 펼처서 개별적인 값들의 목록으로 만든다. 스프레드 문법은 Array, String, Map, Set, DOM 컬렉션, arguments와 같이 for...of 문으로 순회할 수 있는 이터러블에 한정된다.// ...[1, 2, 3]은 [1, 2, 3]을 개별 요소로 분리한다(→ 1, 2, 3)console.log(...[1, 2, 3]); // 1 2 3// 문자열은 이터러블이다.console.log(...'Hello'); // H e l l o// Map과 Set은 이터러블이다.console.log(...new Map([['a', '1'], ['b', '2']])); // [ 'a', '1' ] [ 'b', '2' ]consol..
분류 전체보기
문제https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이해당 문제는 BFS 알고리즘을 이용해 그래프탐색을 진행하는 문제로써 인접한 모든 노드의 탐색 및 거리 측정을 진행해야 한다. 코드function solution(n, edge) { const visited = Array.from({ length: n + 1 }, () => false); const level = Array.from({ length: n + 1 }, () => 0); con..
문제https://school.programmers.co.kr/learn/courses/30/lessons/161988# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이 문제를 보고 펄스 수열이라는 말이 눈에 거슬렸다. -1과 1을 번갈아가며 곱셈되는 동작을.... 펄스 동작이 1부터 곱해지냐 아니면 -1부터 곱해지냐는 정해져 있는 것이다. 첫번째 풀이는 전부 1 혹은 -1 씩 번갈아 가며 요소들에 곱해준 배열을 구한 뒤 누적합을 구했었지만, 이렇게 풀이한 경우 부분 수열의 합을 구할 수 없기에 통과하지 못했다.function solution(sequ..
이터레이션 프로토콜ES6에 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬랙션을 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다. ES6 이전의 순회 가능한 배열, 문자열, 유사 배열 객체, DOM 컬랙션 등은 통일된 규약 없이 나름의 구조를 갖고 for 문, for...in 문, forEach 메서등 등 다양한 방법으로 순회할 수 있었다. 하지만 ES6에서는 순회 가능한 데이터 컬랙션을 이터레이션 프로토콜을 준수하는 이터러블로 통일해 for...of문, 스프레드 문법, 배열 디스트럭처링 할당(분해 할당)의 대상으로 사용할 수 있도록 일원화했다. 이터러블이터러블 프로토콜을 준수한 객체를 이터러블이라 하며 Symbol.iterator를 프로퍼티 키로 사용한 메서드를 구현하거나, 프..
문제https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이 문제는 이분탐색으로 풀이해야한다. 건너야 하는 돌들을 탐색해야 하나 생각했지만, 사실 건널 수 있는 인원수를 이분탐색 해야한다. 인원수는 최소 1명, 최대 2억명이다. 이유는 바위의 내구성을 나타내는 숫자의 범위는 1 ~ 2억이기 때문이다. 최소값이 최대값 보다 적을 때까지 탐색을 진행한다. 이분탐색을 진행하며 중간값을 각 바위의 숫자에 빼준다. 뺀 결과값이 0이하이면 중간값의 인원수만큼..
문제https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제는 원래는 투포인터 알고리즘을 이용해 풀려했지만 도저히 방법이 생각나지 않아 참고를 좀 해봤다.풀이 1우선 Map 객체를 이용한 투포인터 접근법을 이용한 풀이다. Map 객체는 중복처리가 가능하며 각 보석이 나온 최종 인덱스를 저장하며 사용한다.map.delete(gems[i]);map.set(gems[i], i); delete를 하는 이유는 이미 있는 보석의 경우 같은 보석 중 나중에 나..