728x90
문제
코드
function solution(numbers) {
var answer = [];
for(let i = 0; i < numbers.length; i++)
{
for(let j = i + 1; j < numbers.length; j++)
{
if(answer.indexOf(numbers[i] + numbers[j]) == -1)
{
answer.push(numbers[i] + numbers[j]);
}
}
}
answer.sort((a, b ) => a - b);
return answer;
}
풀이
우선 문제에 대한 이해를 해야한다. 우리는 모든 경우의 수의 덧셈을 우선 진행해야하기 때문에, 선택 정렬로 해결 하였다. 모든 덧셈을 하되, 겹치는 부분이 있으면 정답에 중복으로 들어가게 하면 안된다. 그래서 indexOf() 함수를 사용하였다. indexOf의 경우 배열안에 중복되는 수가 있으면 위치 값을 반환하고 없다면 -1을 반환한다. 나는 없으면 -1을 반환하는 것을 이용하여서 중복되는 수가 없을 시에만 answer에 push하게하고 모든 배열이 일을 마쳤다면 answer.sort()를 ((a,b) => a -b) 즉 a부터 b까지 순서대로 정렬을 하게끔 정리하였다.
다른사람의 풀이
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)
}
모든 수를 임시로 만든 변수인 temp에 넣고, spread operator 인 ...을 이용하여서 new Set(temp)를 사용하여 answer 배열을 만들었다. Set의 경우 중복을 제거하고 배열을 만드는 함수이다. 코드는 new Set(배열)이 기본이다! 확실히 몰랐던 Set을 배운기분이다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 명예의 전당(1) (0) | 2024.06.13 |
---|---|
[프로그래머스/JS] 콜라 문제 (0) | 2024.06.11 |
[프로그래머스/JS] 문자열 내 마음대로 정렬하기 (0) | 2024.06.03 |
[프로그래머스/JS] 시저 암호 (0) | 2024.05.30 |
[프로그래머스/JS] 최소직사각형 (0) | 2024.05.29 |