티스토리 뷰

개발일지/문제 풀이

없는 숫자 더하기

StartCoriny 2024. 1. 18. 10:07

function solution(numbers) {
    let arr = []
    for (let i = 0; i < 10; i++) {
        arr[i] = i;
    }
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < numbers.length; j++) {
            if(arr[i] == numbers[j]){
                arr[i] = 0;
            }
        }
    }
    let newarr = arr.reduce((a,b)=>a+b,0)
    return newarr;
}
console.log(solution([1,2,3,4,6,7,8,0]));

 

문제 풀이 의도


없는 숫자를 더하는 것이기 때문에 새로운 0~9까지의 비교 배열 arr을 만들고

numbers 배열안에서 서로 비교해야 하기 때문에 이중 for문을 사용하여 arr안에 있는 요소 한개씩 꺼내와

numbers배열 안에 있는요소들과 하나라도 맞는게 있다면 0으로 바꿔 주었습니다.

이렇게 되면 같은 수가 있다고 하면 0이 되기 때문에 결과적으로 존재하는 수는 0이 되고 numbers에 없는 수는 남게 됩니다.

그렇게 arr을 순회하며 모든 수를 더해주면 원하는 출력값이 나오게 됩니다.

 

 

배워야 할 점


function solution(numbers) {
    return 9(9+1)/2 - numbers.reduce((cur, acc) => cur + acc, 0);
}

위와 같은 문제가 주어진다고 했을때

숫자 10개가 있을때는 고정값이기 때문에 9(9+1)/2를 하게 된다면 총합이 나오게 됩니다.

n으로 주어진다고 해도 n(n+1)/2로 할수 있기 때문에 확장성도 좋아진다고 할수 있습니다.

그런다음 주어진 배열을 모두 더해서 총합에 주어진 배열의 누적값을 빼준다고하면 나머지 값의 총합을 얻을수가 있습니다.

 

 

 

 

느낀점


굳이 하나씩 구하는게 아닌 총합을 구하는 것이기 때문에 문제를 잘읽고 파악해야한다는걸 다시금 깨달았습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함