코딩테스트/Programmers (프로그래머스)
[프로그래머스] 두 개 뽑아서 더하기 - Javascript (Lv.1)
지윤공원🌳
2021. 4. 9. 10:10
728x90
📖 문제설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는
모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
✔️ 제한조건
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
numbers | result |
[2, 1, 3, 4, 1] | [2, 3, 4, 5, 6, 7] |
[5, 0, 2, 7] | [2, 5, 7, 9, 12] |
💻 나의 코드
function solution(numbers) {
var answer = [];
for(let i=0; i<numbers.length-1; i++){
for(let j=i+1; j<numbers.length; j++){
if(!answer.includes(numbers[i] + numbers[j])){
answer.push(numbers[i] + numbers[j]);
}
}
}
answer.sort((a, b) => a - b);
return answer;
}
🎤 코드 설명
- 이중 반복문을 사용하여 한 수를 먼저 정하고 그 수보다 뒤에 있는 수와 더한다.
- 더한 값이 answer 배열에 없으면 push를 통해 넣어준다.
- sort((a, b) => a, b) 함수를 통해 정렬을 해서 return한다. + 콜백함수가 없는 sort()를 사용하지 않은 이유는 Javscript의 sort의 특이한 정렬 방법 때문이다. (하단의 배운 것에서 확인가능)
📜 채점 결과
정확성: 100.0
합계: 100.0 / 100.0
💬 배운 것
- 배열.includes(요소)는 배열 내에 요소가 있는지 확인해준다.
- Javascript의 sort()함수는 원소를 문자열로 만든 뒤에, UTF-16 코드 유닛 값을 기준으로 정렬한다. 그렇지 때문에 숫자에 대해 올바른 정렬이 나오지 않는다.
- sort()함수로 오름차순 정렬을 하려면 배열.sort((a, b) => a, b)와 같이 작성하면 된다.
- a는 뒤에 있는 숫자를 의미, b는 앞에 있는 숫자를 의미한다.
- b가 a보다 클 때만 a-b의 결과로 음수가 나온다.
- 결과적으로 뒤에 있는 값이 더 클때 변경이 일어난다.
코딩테스트 연습 - 두 개 뽑아서 더하기
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한
programmers.co.kr
728x90