문제https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이 문제를 풀이하는 흐름은 나올 수 있는 조합을 구한뒤 조합별 데이터가 유니크한지 검증하고, 그 다음 미니멀한지 체크하면 된다. 조합의 경우 재귀적으로 조합을 구할 수 있게 풀이한다.function makeCombination(num, arr) { let result = []; if (num === 1) { return arr.map(a => [a]) } arr.forEach((f..
set 객체
SetSet객체는 중복되지 않는 유일한 값들의 집합니다. 배열과 유사하지만 동일한 값을 포함할 수 없으며, 요소 순서의 의미가 없고, 인덱스로 요소에 접근할 수 없다. 이런 Set 객체의 특성은 수학적 집합의 특성과 일치한다. Set 객체의 생성Set 객체는 Set 생성자 함수를 이용해 생성한다.const set = new Set();console.log(set); // Set(0) {} Set 생성자 함수는 이터러블을 인수로 받아 Set 객체를 생성하며 이터러블의 중복된 값은 Set 객체에 요소로 저장되지 않는다.const set1 = new Set([1, 2, 3, 3]);console.log(set1); // Set(3) {1, 2, 3}const set2 = new Set('hello');cons..
문제https://www.acmicpc.net/problem/1972 풀이이 문제는 주어진 각 문자열을 순회하며 현위치의 문자와 정해진 거리만큼 떨어져있는 문자를 합친 문자열의 중복 확인한 문제이다. 중복 확인은 Set 객체를 이용했으며, Set 객체 사용 연습을 위해 사용했다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' ').map(Number))const [n] = input.shift();let map = input.slice();let an..
문제 설명https://www.acmicpc.net/problem/13414문제 풀이 방법이번 문제는 중복 처리 알고리즘 문제이다. 원래는 객체 리터럴을 이용해 인덱스를 저장해 풀이를 진행했지만, 케이스가 길어지면 시간 초과 에러가 발생할 수 있다 생각했다. 그래서 Set 객체를 이용해 다시 풀어봤다. Set은 먼저 나온 요소만 저장하기 때문에 원본 요소의 뒤에 나온 중복 요소를 순서대로 처리할 수 있다.정답 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n')const [N, L] = in..