-
[프로그래머스] 없는 숫자 더하기 - JavaScript 📝Algorithm 2021. 11. 8. 15:54
[링크]
https://programmers.co.kr/learn/courses/30/lessons/86051
[문제설명 및 입출력 예]
[내가 제출한 코드 및 풀이]
🚫 비효율적 코드
function solution(numbers) { let allNum = [1,2,3,4,5,6,7,8,9,0] // 0-9까지 10자리 숫자 담은 배열 선언 let answer = 0; // return 할 값 담을 변수 for(let i=0; i<allNum.length; i++) { // 10자리 숫자의 길이(즉, 10번)만큼 반복 if(!numbers.includes(allNum[i])) { // allNum의 숫자가 numbers에 없을 경우 answer += allNum[i]; // answer에 담으면서 합산 } } return answer; // 결과값 return }
💯 개선한 코드
- 굳이 0-9까지 담는 변수를 만들 필요 없었는데... 0-9까지 이미 돌고 있었기 때문에 다시 i를 이용한 코드로 수정함
function solution(numbers) { let answer = 0; // return 할 값 담을 변수 for(let i=0; i<10; i++) { // 0-9 까지 10번 반복 (즉, 0,1,2,3,4,5,6,7,8,9) if(!numbers.includes(i)) { // numbers 에 i가 없을 경우 answer += i; // answer에 i값을 담으면서 합산 } } return answer; // 결과값 return }
💯 includes 미사용 코드 (Console.log)
let numbers1 = [1,2,3,4,6,7,8,0]; let numbers2 = [5,8,4,0,6,7,9]; function solution(numbers) { let sum = 0; let numSum = 0; for(let i=0; i<10; i++) { sum += i; } for(let j=0; j<numbers.length; j++) { numSum += numbers[j] } return sum - numSum; } console.log('numbers1: ' + solution(numbers1)); console.log('numbers2: ' + solution(numbers2));
[다른 사람의 코드]
💡 numbers의 숫자를 모두 더하고 0부터 9의 합계인 45에서 빼는 방법을 사용한 코드
- 이 방법은 생각 못했는데, 뭔가 새로운 관점으로 접근해서 신기
function solution(numbers) { var answer = 0; for(let i=0;i<10;i++){ answer+=i; } for(const number of numbers){ answer-=number; } return answer; }
💡 사이즈 10의 배열 선언 후 reduce 사용한 코드
- size 10의 배열 선언 후 인덱스 i가 numbers 에 있을 경우 false, 아닐 경우 true 저장하고 마지막에 true 값을 가진 인덱스만 return
function solution(numbers) { const arr = new Array(10); for(let i = 0; i < 10; i++){ arr[i] = numbers.indexOf(i) === -1 ? true : false; } return arr.reduce((ans, val, idx) => val ? ans + idx : ans, 0); }
'Algorithm' 카테고리의 다른 글
[프로그래머스] 행렬의 덧셈 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 핸드폰 번호 가리기 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 문자열을 정수로 바꾸기 - JavaScript 📝 (0) 2021.11.08 [프로그래머스] 두 정수 사이의 합 - JavaScript 📝 (0) 2021.11.08 [프로그래머스] 짝수와 홀수 - JavaScript 📝 (0) 2021.11.08