0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
입출력 예
numbersresult
[1,2,3,4,6,7,8,0] | 14 |
[5,8,4,0,6,7,9] | 6 |
문제풀이
function solution(numbers) {
var answer = 0;
for(let i = 0; i < 10; i++) {
if(!numbers.includes(i)) answer += i
}
return answer;
}
코드해석
for(let i = 0; i < 10; i++) {
if(!numbers.include(i)) answer += i
}
1. 반복문을 통해 i를 0부터 9까지 반복하면서 include를 사용하여 numbers배열의 요소에 포함되는지 판단 후 아닐 시에 answer에 값을 더한다.
모범답안
function solution(numbers) {
return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
보자마자 머리를 쎄게 맞은 느낌이였다. 이런식으로 풀 수 있구나라는걸 느꼈다. 창의적이고 간결한 코드가 이런게 아닐까 생각이든다. 0부터 9까지 전체 합에서 numbers 배열의 합을 빼면 되는 문제였다..
* reduce()
arr.reduce(callback(accumulator, currentValue, index, array), initialValue)
arr
- 순회하고자 하는 배열
accumulator
- 누적되는 값
- callback 함수의 반환값을 누적
- initialValue를 설정한 경우 callback의 최초 호출시 initialValue로 값으로 초기화
- initialValue가 없을 경우 arr의 0번째 인덱스 값으로 초기화
currentValue
- 현재 배열의 요소
index(생략 가능)
- 현재 배열 요소의 index
array(생략 가능)
- reduce 함수를 호출한 배열
initialValue(생략 가능)
- callback의 최초 호출시 accumulator 초기값
출처: https://developer-talk.tistory.com/146 [평범한 직장인의 공부 정리:티스토리]
'코딩 테스트' 카테고리의 다른 글
프로그래머스 level2 - 구명 보트 (0) | 2024.12.13 |
---|---|
프로그래머스 level2 - 큰 수 만들기 (1) | 2024.12.12 |
프로그래머스 level1 - 크레인 인형뽑기 게임(JS) (0) | 2022.07.16 |
프로그래머스 level1 - 숫자 문자열과 영단어(JS) (1) | 2022.07.11 |
프로그래머스 level1 - 키패드 누르기(JS) (0) | 2022.07.11 |