-
#AIL_23.12.01 // Programmers_없는 숫자 더하기AIL( Algorithm I Learned) 2023. 12. 1. 10:38
## AIL_ 없는 숫자 더하기
***문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
***제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
***입출력 예
numbers result [1, 2, 3, 4, 6, 7, 8, 0] 14 [5, 8, 4, 0, 6, 7, 9] 6
***입출력 예 설명
입출력 예 #1_5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2_1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
## solution.JavaScript
1. 문제의 접근 방식
주어진 문제는 0부터 9까지의 숫자 중 일부가 빠진 배열이 주어질 때, 빠진 숫자들의 합을 구하는 것입니다.
2. 문제풀이
function solution(numbers) { var answer = 0; for(let i= 0; i <= 9; i++) if(!numbers.includes(i)){ answer += i; } return answer; } /* 테스트 1 입력값 〉 [1, 2, 3, 4, 6, 7, 8, 0] 기댓값 〉 14 실행 결과 〉 테스트를 통과하였습니다. 테스트 2 입력값 〉 [5, 8, 4, 0, 6, 7, 9] 기댓값 〉 6 실행 결과 〉 테스트를 통과하였습니다. */
1. `answer` 변수를 초기화하고, 0으로 설정합니다. 이 변수는 빠진 숫자들의 합을 누적할 변수입니다.
2. 0부터 9까지의 숫자를 확인하는 for 반복문을 사용합니다.
3. `numbers.includes(i)`를 통해 배열 `numbers`에 현재 숫자 i가 포함되어 있는지 확인합니다.
4. 만약 해당 숫자 i가 배열 `numbers`에 없다면, 빠진 숫자이므로 `answer`에 현재 숫자 `i`를 더합니다.
5. 반복문이 끝난 후, 최종적으로 계산된 `answer`를 반환합니다.
3. 다른사람의 문제풀이 및 접근방식 분석
function solution(numbers) { return 45 - numbers.reduce((cur, acc) => cur + acc, 0); }
위 코드는 주어진 배열 `numbers`에 빠진 숫자들의 합을 간단하게 계산하는 방법을 사용합니다. 여기서 아이디어는 0부터 9까지의 숫자의 합이 45 이용하여 빠진 숫자들의 합을 계산하고 반환합니다.
1. `numbers.reduce((cur, acc) => cur + acc, 0): reduce` 함수를 사용하여 배열 `numbers`의 각 요소를 누적하고, 초기값으로 0을 설정합니다. 이를 통해 배열의 모든 숫자의 합을 계산합니다.
2. `45 - ...` 0부터 9까지의 숫자의 합은 45이므로, 45에서 배열의 숫자 합을 뺍니다. 이렇게 하면 0부터 9까지의 숫자 중 빠진 숫자들의 합이 계산됩니다.
# includes() 메서드란?
includes()는 JavaScript의 배열(Array) 메서드 중 하나로, 배열에 특정 요소가 포함되어 있는지 여부를 확인하는 역할을 합니다. 이 메서드는 불리언 값을 반환하며, 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
# includes() 사용법
array.includes(element[, fromIndex])
** rray: 확인할 배열
** element: 배열에 포함되어 있는지 확인할 요소
** fromIndex (선택적): 검색을 시작할 인덱스. 생략하면 배열의 처음부터 검색합니다.
# includes() 예시
const numbers = [1, 2, 3, 4, 5]; console.log(numbers.includes(3)); // true console.log(numbers.includes(6)); // false
# includes() 장단점
**장점
*간편성
요소의 포함 여부를 간단하게 확인할 수 있습니다.
*가독성
코드를 간결하게 작성할 수 있어 가독성이 높아집니다.
**단점
* 참조형 데이터에서만 사용 가능
includes()는 배열의 요소를 값으로 비교하므로, 참조형 데이터(객체, 배열 등)의 경우 참조값이 일치해야 합니다.
# includes() 주의사항
* 정확한 일치
includes()는 일치하는 값을 찾을 때 일치(===)를 사용하므로, 값과 타입이 모두 일치해야 합니다.
* 참조형 데이터 주의
참조형 데이터(객체, 배열 등)의 경우 참조값이 일치해야 정상적으로 동작합니다.
* IE 지원
Internet Explorer에서는 제한적으로 지원되므로 사용 시 주의가 필요합니다.
includes()는 간단하고 직관적인 방법으로 배열에서 특정 요소의 존재 여부를 확인할 때 효과적으로 사용됩니다. 그러나 값의 일치 여부와 참조형 데이터의 처리에 주의해야 합니다.
'AIL( Algorithm I Learned)' 카테고리의 다른 글
#AIL_23.12.05 // Programmers_제일 작은 수 제거하기 (0) 2023.12.06 #AIL_23.12.02 // Programmers_피보나치 수 (0) 2023.12.02 #AIL_23.11.30 // Programmers_음양 더하기 (0) 2023.11.30 #AIL_23.11.29 // Programmers_나누어 떨어지는 숫자 배열 (1) 2023.11.29 #AIL_23.11.28 // Programmers_콜라츠 추측 (1) 2023.11.28