문제
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers
가 매개변수로 주어집니다. numbers
에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤
numbers
의 길이 ≤ 9- 0 ≤
numbers
의 모든 원소 ≤ 9 numbers
의 모든 원소는 서로 다릅니다.
- 0 ≤
나의 풀이
function solution(numbers) {
// 0~9 중 없는 숫자 더한 값 반환
let list = [0,1,2,3,4,5,6,7,8,9]
// list에서 numbers의 값 하나씩 지우기
for (let i = 0; i < numbers.length; i++) {
list.splice(list.indexOf(numbers[i]), 1)
}
// 요소 전체 더하기
return list.reduce((sum,e) => sum += e, 0);
}
- 정확도 테스트 결과
다른 풀이
가장 모범적인 풀이
function solution(numbers) { let answer = 0; for(let i = 0; i <= 9; i++) { if(!numbers.includes(i)) answer += i; } return answer; }
1부터 9까지의 배열을 만들어서 numbers와 대조하는 것이 아니라
for문을 이용해서 정수를 대조한 후, 없다면 하나씩 더해준다.
가장 깔끔하고 모범적인 풀이같다.
창의적인 풀이
function solution(numbers) { return 45 - numbers.reduce((cur, acc) => cur + acc, 0); }
보고 깜짝 놀란 풀이ㅋㅋ
numbers에 중복 숫자가 없기 때문에 합계를 빼주면 원하는 답이 나온다.
'Coding test' 카테고리의 다른 글
[프로그래머스] K번째 수 (Level 1) (0) | 2022.04.19 |
---|---|
[프로그래머스] 소수 만들기 (Level 1) (0) | 2022.04.18 |
[프로그래머스] 숫자 문자열과 영단어 (Level 1) (0) | 2022.04.18 |
[프로그래머스] 2016년 (Level 1) (0) | 2022.04.16 |
[프로그래머스] x만큼의 간격이 있는 n개의 숫자 (Level 1) (0) | 2022.04.16 |