문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
설명 더 보기
문제 풀이
function solution(numbers) {
const answer = [];
// 반복문 1. 배열 numbers의 원소 수만큼 i를 반복
for (let i = 0; i < numbers.length; i++) {
// 반복문 2. i가 반복될 때 j는 i와의 중복을 피하는 방향으로 반복
for (let j = i + 1; j < numbers.length; j++) {
// i번째 수와 j번째 수의 합을 answer에 추가
answer.push(numbers[i] + numbers[j]);
}
}
// 반복문의 결과를 오름차순으로 정렬
answer.sort((a, b) => a - b);
// 중복되는 값 제거 및 최종 답안 제출
let uniqueAnswer = [...new Set(answer)];
return uniqueAnswer;
}
하나의 정수 배열 numbers에서 서로 다른 두 개의 수를 뽑아 더하기 위해, 반복문을 중첩할 때 두 수의 인덱스가 겹치지 않게끔 j의 초기화문을 i + 1로 설정하였다. 그렇게 더해서 만든 모든 수가 배열 answer에 담기면, 그 수들을 오름차순으로 정렬하기 위해 sort() 메서드를 사용하였고, 중복되는 값이 발생했을 경우를 대비해 Set 객체를 활용해 새로운 배열 uniqueAnswer에 중복되는 값 없이 담아주었다.
"이때, 1) 중복되는 값을 먼저 제거한 뒤에 2) 오름차순으로 정렬했다면 보다 효율적인 코드가 될 수 있었을 것!"이라는 피드백
'ETC > 코딩테스트 연습' 카테고리의 다른 글
[프로그래머스] 최대공약수와 최소공배수 (JavaScript) (0) | 2021.07.30 |
---|---|
[프로그래머스] 수박수박수박수박수박수? (JavaScript) (0) | 2021.07.30 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (JavaScript) (0) | 2021.07.23 |
[프로그래머스] 같은 숫자는 싫어 (JavaScript) (0) | 2021.07.23 |
[프로그래머스] 가운데 글자 가져오기 (JavaScript) (0) | 2021.07.22 |