문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
| [1,2,3,4,6,7,8,0] | 14 |
| [5,8,4,0,6,7,9] | 6 |
입출력 예 #1
- 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2
- 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
---
엄청 간단한 문제였다.
간단한 방법이 생각나기 전에 시도하려던 방법은 2가지가 있었다.
1. [1,2,3,4,5,6,7,8,9] 배열을 선언하고 배열 vs 배열 비교 하기
2. for 문 돌려서 배열에서 1 ~ 9 사이에 없는 수 리턴해서 합 구하기
둘중에 뭐로 풀어볼까 생각하다가 간단한 방법이 생각났다.
1 ~ 9 합은 45로 항상 같으니까, 제시된 배열의 합을 구한 다음, 45 - numbers 배열 계산을 하면 될 듯 했다.
코드로 구현하면 아래와 같다.
const solution = (numbers) => {
let newSum = numbers.reduce((a,b) => {
return a + b
})
return ( 45 - newSum)
}
* 다른 사람 코드 *
이 경우는 총 합이 45로 고정되어 있어서 가능한 방법이었다. 만약 배열이 매우 길어서 합을 알기 어려워 질 수도 있는 경우를 생각하면? 다른 방법으로도 풀어볼 수 있다. includes 함수를 for 문과 함께 사용하는 방법이다.
const solution = (numbers) => {
let ans = 0;
for(let i = 0; i <= 9; i++) {
if (!numbers.includes(i))
ans += i;
}
return ans
}
'알고리즘' 카테고리의 다른 글
| [프로그래머스][JS] Lv.1 약수의 개수와 덧셈 (0) | 2022.11.03 |
|---|---|
| [프로그래머스][JS] Lv.2 최댓값과 최솟값 (0) | 2022.10.20 |
| [프로그래머스][JS] Lv.1 나누어 떨어지는 숫자 배열 (1) | 2022.09.23 |
| [프로그래머스][JS] Lv.1 음양 더하기 (0) | 2022.09.22 |
| [프로그래머스][JS] Lv.1 두 정수 사이의 합 (1) | 2022.09.21 |