프로그래머스 없는 숫자 더하기 JS

이명진·2022년 1월 20일
0

코드카타

목록 보기
5/69

없는 숫자 더하기 0~9 사이의 숫자가 랜덤의 위치로 랜덤 배열로 주어진다
배열 중에서 없는 숫자들의 합을 리턴해야 하는 문제
처음으로 0~9 모두를 담은 배열을 정해두고 받은 배열과 비교하여 없는 숫자를 더하면 되겠지 라고 생각하고 코드를 작성하였다. 코드를 작성하다가 0~9의 배열은 필요없고
0부터 9까지 그냥 순회 하는 방법으로 수정하게 되었다 .

아래 코드가 내가푼 코드이다

function solution(numbers) {
let answer = numbers.sort((a,b)=>a-b)
answer = new Set(answer)
let result=0;
for(let i =0; i<10; i++){
if(answer.has(i)){
answer.delete(i)
}else{
result += i
}
}
return result;
}

new Set 함수에 대해서 공부 했기에 적용해보았다.
has , delete , add 등등을 쓸수 있어서 그래도 쉽게 접근할수 있었다.
length를 알기 위해서는 size 로 접근해야 한다.

결과는 성공 괜찮게 풀었겠지 하고 다른 사람의 풀이를 구경하러 갔을때
머리가 띵해졌다. 역시 사람들 중에 머리가 비상한 사람들이 많이 있구나 라고 생각하였다
best 다른사람의 풀이
function solution(numbers) { return 45 - numbers.reduce((cur, acc) => cur + acc, 0); }
내 코드 보다 훨씬더 간결하게 한줄로 끝냈다
그렇다! 0~9까지의 수중 없는 값을 더하면 되니 그냥 0~9까지 더하고 그중에서 받은 배열의 수를 더하고 빼면 한번에 계산이 된다. !!!

다른 풀이들은 includes 함수를 사용해서 풀었다.
new Set을 공부하고 풀어서 그런지 나는 저런 로직이 나왔지만 몰랐다면
includes 를 사용했을것 같다.

그래도 다른 방법으로 접근했다는 점에 만족한다.

오늘은 includes에 대해서 공부를 해본다.

includes()

new Set의 has 와 같다. 배열에서 값이 포함되어 있는가를 측정한다.
두번째 인자로 fromIndex를 받는데 검색을 시작할 위치를 정할수 있다. 기본값으로 비워두면 0으로 인식한다. 만약 조건의 배열 길이보다 큰수를 입력하였을때는 false를 배출한다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글