[링크]
https://programmers.co.kr/learn/courses/30/lessons/86051
코딩테스트 연습 - 없는 숫자 더하기
0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한
programmers.co.kr
[문제설명 및 입출력 예]
[내가 제출한 코드 및 풀이]
🚫 비효율적 코드
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 |