Lv. 1 - 없는 숫자 더하기 풀이과정
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers
가 매개변수로 주어집니다. numbers
에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
numbers
의 길이 ≤ 9- 0 ≤
numbers
의 모든 원소 ≤ 9 -
numbers
의 모든 원소는 서로 다릅니다.
- 0 ≤
입출력 예
numbers | result |
---|---|
[1,2,3,4,6,7,8,0] | 14 |
[5,8,4,0,6,7,9] | 6 |
입출력 예 설명
3-1) 입출력 예 #1
- 5, 9가
numbers
에 없으므로, 5 + 9 = 14를 return 해야 합니다.
3-2) 입출력 예 #2
- 1, 2, 3이
numbers
에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
문제 풀이
const solution = numbers => {
let num = 0;
for(let i = 0; i <= 9; i++) {
if(!numbers.includes(i)) num += i;
}
return num;
}
console.log(solution([1,2,3,4,6,7,8,0]));
함수 선언
- 화살표 함수를 사용하여
numbers
를 매개변수로 받는다.
풀이
-
numbers
로 전달받은 값 중 없는 숫자를 담아줄 변수num
을 선언함 -
for
문을 사용하여 제한사항의 길이(9)만큼 순회함 -
includes
를 사용하여if
문으로 없는 숫자를 num에 할당함
결과 반환
-
numbers = [1,2,3,4,6,7,8,0]
대입하면 5,9가 없으므로 14를 리턴함 -
numbers = [5,8,4,0,6,7,9]
대입하면 1,2,3가 없으므로 6를 리턴함
실행
-
solution([1,2,3,4,6,7,8,0])
실행하면 5+9 = 14 출력 -
solution([5,8,4,0,6,7,9])
실행하면 1+2+3 = 6 출력
다른 사람의 풀이 참고
reduce
메서드를 사용하여 총합 45(0~9) - 매개변수로 전달받은 값을 모두 더해준 값을 해준 한 줄 풀이과정이 가장 눈에 돋보였다. 정말 코드는 어떻게 생각하느냐에 따라 쉽게,어렵게 풀 수 있는 것 같아 정말 매력적이다.. 나와 비슷하게 푼 풀이 과정은 그래도 460명이나 되어서 그래도 만족..!
// [356명] 총합 - reduce를 사용해 모두 더해준 값 풀이과정
function solution(numbers) {
return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
// [460명] for문을 사용한 풀이과정
function solution(numbers) {
let answer = 0;
for(let i = 0; i <= 9; i++) {
if(!numbers.includes(i)) answer += i;
}
return answer;
}
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges