https://programmers.co.kr/learn/courses/30/lessons/86051
function solution(numbers) {
let answer = 0;
// for (let i = 0; i < 10; i++) {
// !numbers.includes(i) ? answer += i : answer;
// }
let num = [];
makeNum(num);
checkNum(num, numbers);
answer = calcNum(num, answer);
return answer;
}
function calcNum(num, answer) {
let ans = answer;
num.forEach(el => {
el[1] == 0 ? ans+=el[0] : ans
});
return ans;
}
function checkNum(num, numbers) {
numbers.forEach(el => {
num.forEach(el2 => {
if (el2[0] == el) el2[1]++;
})
})
}
function makeNum(num) {
for (let i = 0; i < 10; i++) {
num.push([i,0]);
}
}
let numbers = [1, 2, 3, 4, 6, 7, 8, 0];
console.log(solution(numbers));
처음엔 위 코드처럼 0~9까지 몇개있는지까지의 정보를 같이 담은 배열을 추가했다.
[[0,0], [1,0], [2,0], ... , [9,0]]
그 다음 numbers를 돌면서 num배열에 횟수를 변경시키고, 다 돌고나서 0인 숫자를 더해서 답을 출력하였다.
다 풀고난 후 다른사람의 코드 중에 방문체크를 통해 푼 코드를 보고, 그냥 포함되있는지 안되있는지 확인하면 될 거같단 생각이 들었다.
그래서 아래 코드처럼 includes로 포함되있는지 확인후 안되있다면 anwer에 해당 숫자를 더하여 answer를 출력했다.
function solution(numbers) {
let answer = 0;
for (let i = 0; i < 10; i++) {
!numbers.includes(i) ? answer += i : answer;
}
return answer;
}