-
[프로그래머스] 없는 숫자 더하기 - javascript기타/코딩테스트 2022. 6. 22. 21:54
문제
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다.
numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
나의 풀이
function solution(_numbers) { // 0~9 까지 더한숫자 = 45 return 45 - _numbers.reduce((preVal, curVal) => preVal + curVal, 0); }
배열에 없는 수를 모두 더한다고 했을 때 reduce를 사용해서 계산해 보아야지 라는 생각이 들었다.
그런데 그를 위해서는 없는 숫자를 배열로 만들어야했다.
그래서 0~9라는 숫자를 배열에 넣어놓고 numbers를 for문으로 돌리면서 숫자를 찾아 slice하는 방법을 하려고 했다.
그래서 0~9 숫자를 배열에 넣었고, 그 배열을 들여다보니
문제에서 요구하는 것이 없는 숫자의 합을 구하는거라면
0~9를 더한 값에서 주어진 배열의 합을 빼면 되는게 아닌가? 라는 생각이 번뜩하고 떠올라서
위와 같은 수식으로 문제를 풀게 되었다.
실행 테스트
const numbers = [5, 8, 4, 0, 6, 7, 9]; console.log(solutions(numbers)); // output => 6
로직 추가
문제를 풀면서. 아니 정확히는 0부터 9를 직접 더해보면서 0 ~ 9가 아니라 0 ~ n면 언제 다 더하지?
그리고 그렇다면 이 코드는 재사용할 수 없는 코드다. 라는 생각이 들었고, 추가적으로 코드를 개선해보았다.
필요하다면 n을 매개변수 값으로 받아볼 수도 있겠다.
function solution(_numbers) { const n = 9; const total = (n * (n + 1) / 2); return total - _numbers.reduce((preVal, curVal) => preVal + curVal, 0); }
수식은 아래 글에서 참고했다.
[알고리즘] 1 ~ n까지 합을 구하는 원리
1 ~ n까지 합을 구하는 원리 관련글: 1부터 n까지의 합 구하기 전에 1 ~ n 까지 합 구하기 문제에 관해서 글을 올렸지만, 내용을 좀 더 보충하고자 합니다. 그럼 1에서 n까지의 합을 구하는 문제에 대
adgw.tistory.com
'기타 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 - javascript (0) 2022.06.26 [프로그래머스] [1차] 비밀지도 - javascript (0) 2022.06.21 [프로그래머스] 로또의 최고 순위와 최저 순위 - javascript (0) 2022.06.21 [프로그래머스] 키패드 누르기 - javascript (0) 2022.06.16 [프로그래머스] 숫자 문자열과 영단어 - javascript (0) 2022.06.14