[JavaScript][Programmers] 없는 숫자 더하기

조준형·2021년 9월 13일
0

Algorithm

목록 보기
138/142
post-thumbnail

🔎 없는 숫자 더하기

❓ 문제링크

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;
}
profile
깃허브 : github.com/JuneHyung

0개의 댓글