728x90
문제 및 제한사항
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
**제한사항**
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
풀이 방법
arr = [2, 1, 3, 4, 1]일 때 서로 다른 인덱스에 있는 두 수를 뽑아야 한다.서로 다른 인덱스에서 더한 수를 만들려면 이중 for문을 돌려준다.
대신 하나는 0부터 시작해서 끝에서 -1까지, 다음은 1부터 시작해서 끝까지로 같은 요소여도 인덱스의 차이를 둔다.뭔 말이냐면 먼저 2, 1, 3, 4 를 뽑았을 때, 다음은 1, 3, 4만 뽑는데 같은 1, 3, 4여도 먼저 뽑은 것에서는 인덱스 1, 2, 3 인 반면 나중에 뽑은 거세서는 인덱스 0, 1, 2로 다르다는 뜻이다.
이렇게 고른 것을 더하고 빈 배열에 push한 후 sort한다.테스트 케이스를 보면 중복되는 것을 하나의 값으로만 넣는데, 이처럼 중복된 값을 제거하기 위해 Set을 써줬다.처음에는 정렬한 후 앞 인덱스와 뒤 인덱스가 같을 경우 제외하는 것으로 또 for문을 돌렸는데, 이것보단 Set이 더 직관적이었다.다만 Set은 아직 어떻게 쓰는 건지 잘 모르겠다. 그냥 중복을 허용하지 않는 배열 형태라고만 얼핏 봤어서... 너무 너무 유용하고 자주 나오다 보니 꼭 배워야겠다.
코드
function solution(numbers) {
let answer = [];
let realanswer = [];
for (let i = 0; i < numbers.length - 1; i++) {
for (let j = i + 1; j < numbers.length; j++) {
let ele = numbers[i] + numbers[j];
answer.push(ele);
}
}
answer.sort((a, b) => a - b);
return [...new Set(answer)]
}
728x90
'⚙️ 코딩테스트' 카테고리의 다른 글
[JavaScript] 프로그래머스 코딩테스트 레벨 1 : 푸드 파이트 대회 (0) | 2023.05.09 |
---|---|
[JavaScript] 프로그래머스 코딩테스트 레벨 1 : 콜라 문제 (0) | 2023.05.09 |
[JavaScript] 프로그래머스 코딩테스트 레벨 1 : K번째 수 (0) | 2023.05.08 |
[JavaScript] 프로그래머스 코딩테스트 레벨 1 : 숫자 문자열과 영단어 (0) | 2023.05.08 |
[JavaScript] 프로그래머스 코딩테스트 레벨 1 : 문자열 내 마음대로 정렬하기 (0) | 2023.05.08 |