본문 바로가기

⏳ 알고리즘/JavaScript 알고리즘

프로그래머스 - LV1. 두 개 뽑아서 더하기

문제

https://programmers.co.kr/learn/courses/30/lessons/68644?language=javascript 

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

 

코드

function solution(numbers) {
    var answer = [];

    for (var i=0; i < numbers.length; i++) {
        for (var j=i+1; j < numbers.length; j++) {
            answer.push(numbers[i]+numbers[j])
        }
    }
    
    var set = new Set(answer); // Set로 배열중복제거
    var uniqueArr = [...set];
    
    uniqueArr.sort(function(a, b) { // 오름차순
        return a - b;
	});
    return uniqueArr;
}

 

다른 코드

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)
}

 

 

[배운 점]

  • 배열 중복 제거 - Set 이용 
#1. 
const set = new Set(answer); 
const uniqueArr = [...set];

#2. 더 간단
const answer = [...new Set(temp)] 

 

  • 배열 정렬
// 오름차순
#1. 
Arr.sort(function(a, b) { 
	return a - b;
});

#2.
Arr.sort((a, b) => a - b)

// 내림차순
#1.  
Arr.sort(function(a, b) { 
	return a + b;
});
return Arr
#2.
Arr.sort((a, b) => a + b)