문제
풀이
1. 이중 for문을 돌려 요소의 처음 위치와 요소의 다음 위치들의 합을 모두 구해 answer 배열에 넣어준다.
2. 중복된 수를 제거한다.
3. 오름차순으로 정렬해 배열에 담는다.
여기서 제일 중요한 작업은 중복된 수를 제거하는 것이라고 생각하고 이 과정에서 좀 애를 먹었기도 했다.
중복된 수를 제거하는 방법에는 2가지가 있는데 이번에는 이 두 가지에 대해서 알아 보려고 한다!
1. filter와 indexOf를 이용해 중복된 수 제거하기
return answer.filter((x,idx)=> answer.indexOf(x) === idx)
- 위의 전체 테이블의 배열을 answer
1 2 2 3 4 3
- 배열 안의 요소를 x
- 배연 안 요소의 인덱스를 idx 라고 칭하겠다.
여기서 filter를 통해 다음과 같은 기준에 적용하는 것들만 가져온다.
answer.indexOf(x) === idx를 보면
(0번째 요소의 인덱스) 1 === (요소 1의 인덱스) 1
(1번째 요소의 ) 2 === (요소 2의 인덱스) 2
(2번째 요소의 인덱스) 2 === (요소 2의 인덱스) 1 (같지 않다)
따라서 위 코드는 중복되지 않는 것들만 필터링해서 가져온다는 사실을 알 수 있다!
2. Set을 이용해 중복된 수 제거하기
let arr = [...new Set(answer)]
Set을 이용하면 보다 간편하게 중복된 수를 제거할 수 있는 것 같다.
결과
function solution(numbers) { var answer = []; for(let i=0; i<numbers.length; i++){ for(let j=i+1; j<numbers.length; j++){ answer.push(numbers[i] + numbers[j]); } } return answer.filter((x,idx)=> answer.indexOf(x) === idx).sort((a,b)=> a-b); }
function solution(numbers) { var answer = []; for(let i=0; i<numbers.length; i++){ for(let j=i+1; j<numbers.length; j++){ answer.push(numbers[i] + numbers[j]); } } let arr = [...new Set(answer)] return arr.sort((a,b)=> a-b); }
'코딩 테스트' 카테고리의 다른 글
[ 프로그래머스 ] JS - 문자열 다루기 기본 (0) | 2024.12.13 |
---|---|
[ 프로그래머스 ] JS - 나머지가 1이 되는 수 찾기 (0) | 2024.07.20 |
[ 프로그래머스 ] MYSQL - 경기도에 위치한 식품창고 목록 출력하기 (0) | 2024.07.20 |
[ 프로그래머스 ] 파이썬 - 배열 만들기 (0) | 2024.06.30 |
[ 프로그래머스 ] 문자열 뒤집기 (0) | 2024.06.02 |