devlog_owen
[프로그래머스] 두 개 뽑아서 더하기 본문
728x90
문제
배열 안에 있는 모든 숫자들을 두개씩 더한 경우의 수를 구하는 문제였다. 중복된 값이 없어야 하고 마지막에는 오름차순으로 배열을 정렬해야 한다.
나의 풀이
function solution(numbers) {
var caseNum = new Set();
for(let i = 0; i<numbers.length; i++){
for(let j = 0; j<numbers.length; j++){
if(i !== j){
caseNum.add(numbers[i] + numbers[j])
}
}
}
let sortedNum = Array.from(caseNum).sort((a,b) => a-b)
return sortedNum;
}
저번에 영어 끝말잇기 문제에서 썼던 set을 사용했다. 비슷한 문제일거라 생각했는데 사실 set빼고는 좀 다른 문제긴 했다.
new Set으로 중복된 값을 허용하지 않는 유사객체배열을 만든다. 그다음 for문 중첩과 if문을 통해서 같은 번호의 인덱스가 아니라면 더해서 caseNum에 넘기는 코드를 짰다.
원래는 마지막에 Array.from없이 냅다 caseNum.sort~이렇게 썼는데 유사객체배열은 그런식으로 쓸수 없다고 한다.
Array.from()은 유사 배열 객체나 반복 가능한 객체를 배열로 변환하는 메서드다.
다른 사람 풀이
function solution(numbers) {
const temp = []
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
temp.push(numbers[i] + numbers[j])
}
}
const answer = [...new Set(temp)]
return answer.sort((a, b) => a - b)
}
[...new Set(temp)]을 쓰면 중복을 제거함과 동시에 배열로 전환할 수 있다.
회고
set에 대해 좀더 배울 수 있었고 스프레드 연산자를 잘 사용할 수 있어야할것같다.
728x90
'algorithm > (js)프로그래머스' 카테고리의 다른 글
[프로그래머스] K번째 수 (0) | 2023.11.17 |
---|---|
[프로그래머스] 귤 고르기 (0) | 2023.11.16 |
[프로그래머스] 영어 끝말잇기 (0) | 2023.11.14 |
[프로그래머스] N개의 최소공배수 (1) | 2023.11.13 |
[프로그래머스] 푸드 파이터 대회 (1) | 2023.11.13 |