[프로그래머스] 두 개 뽑아서 더하기 (JavaScript)
🤷 문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
🙄 나의 풀이
주절주절....ㅎ.... 어떻게든 기초지식으로 통과는 했다!
function solution(numbers) {
var answer = [];
let arr = [];
for (let i=0; i< numbers.length; i++){
for (let j=i+1; j<numbers.length; j++){
let sum = numbers[i]+numbers[j];
arr.push(sum);
}
}
for (let k=0; k<arr.length; k++){
if (answer.indexOf(arr[k]) === -1)
answer.push(arr[k])
}
answer.sort(function(a, b){ return a-b; });
return answer;
}
😮 다른 사람 풀이
Set을 사용한 Case
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)
}
내가 푼 풀이와 로직은 유사하지만 훨씬 짧은 코드
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.indexOf(numbers[i]+numbers[j])===-1){
answer.push(numbers[i]+numbers[j])
}
}
}
return answer.sort((a,b)=>a-b);
}
🤔 느낀점
-
Set 기능 알아두기 !
-
처음에
sort()
로 배열을 오름차순으로 정렬하려고 했는데 비교함수를 지정하지 않고 기본sort()
만 호출했을 때는 문자열 비교를 한다. 숫자 비교를 하려면 비교함수를 지정해야 한다. -
숫자 정렬
var score = [4, 11, 2, 10, 3, 1]; /* 오류 */ score.sort(); // 1, 10, 11, 2, 3, 4 // ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음 /* 정상 동작 */ score.sort(function(a, b) { // 오름차순 return a - b; //음수가 나오면 a가 b보다 작다 // 1, 2, 3, 4, 10, 11 }); score.sort(function(a, b) { // 내림차순 return b - a; // 11, 10, 4, 3, 2, 1 });
Author And Source
이 문제에 관하여([프로그래머스] 두 개 뽑아서 더하기 (JavaScript)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@j20park/프로그래머스-두-개-뽑아서-더하기-JavaScript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)