알고리즘/프로그래머스
[Programmers] Lv.1 두 개 뽑아서 더하기 _JavaScript
3o14
2023. 5. 7. 13:14
728x90
반응형
프로그래머스 Lv1. 두 개 뽑아서 더하기 문제 풀이
🧶 문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers의 길이는 2 이상 100 이하입니다.
입출력 예
numbers | result |
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
🧶 접근 방식
단순하게 생각해서 이중 for문으로 만들었습니다. 중복 제거는 includes를 사용했고 같은 인덱스 요소 끼리 더하지 않도록 if문으로 예외처리 해주었습니다. 오름차순 정렬은 sort를 이용했습니다.
🧶 내 풀이
function solution(numbers) {
var answer = [];
for(let i in numbers) {
for( let j in numbers) {
if( i !== j) { // 반복자 i와 j가 같은 인덱스일 경우 제외
// 두 요소를 더한 값이 answer 배열에 없을 경우에만 push
answer.includes(numbers[i] + numbers[j]) ? null : answer.push(numbers[i] + numbers[j]);
}
}
}
// sort 오름차순 정렬
return answer.sort((a, b) => a - b);
}
이렇게 비교적 간단하게 풀었는데 어떤 분은 Set을 이용해서 중복 제거를 했더군요! 이번 기회에 Set을 다시 공부해봐야겠습니당
🧶 다른 풀이
아래 코드가 Set을 이용한 중복제거 코드입니다.
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])
}
}
// Set
const answer = [...new Set(temp)]
return answer.sort((a, b) => a - b)
}
Set은 집합과 같아서 자동으로 중복되는 요소는 하나의 요소로 표기됩니다.
🧶 후기
얼마만에 풀어보는 알고리즘인지.. 😧 이제 알고리즘 스터디도 시작했겠다 꾸준히 열심히 하겠습니다
LIST