티스토리 뷰
function solution(numbers) {
let arr = []
for (let i = 0; i < 10; i++) {
arr[i] = i;
}
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < numbers.length; j++) {
if(arr[i] == numbers[j]){
arr[i] = 0;
}
}
}
let newarr = arr.reduce((a,b)=>a+b,0)
return newarr;
}
console.log(solution([1,2,3,4,6,7,8,0]));
문제 풀이 의도
없는 숫자를 더하는 것이기 때문에 새로운 0~9까지의 비교 배열 arr을 만들고
numbers 배열안에서 서로 비교해야 하기 때문에 이중 for문을 사용하여 arr안에 있는 요소 한개씩 꺼내와
numbers배열 안에 있는요소들과 하나라도 맞는게 있다면 0으로 바꿔 주었습니다.
이렇게 되면 같은 수가 있다고 하면 0이 되기 때문에 결과적으로 존재하는 수는 0이 되고 numbers에 없는 수는 남게 됩니다.
그렇게 arr을 순회하며 모든 수를 더해주면 원하는 출력값이 나오게 됩니다.
배워야 할 점
function solution(numbers) {
return 9(9+1)/2 - numbers.reduce((cur, acc) => cur + acc, 0);
}
위와 같은 문제가 주어진다고 했을때
숫자 10개가 있을때는 고정값이기 때문에 9(9+1)/2를 하게 된다면 총합이 나오게 됩니다.
n으로 주어진다고 해도 n(n+1)/2로 할수 있기 때문에 확장성도 좋아진다고 할수 있습니다.
그런다음 주어진 배열을 모두 더해서 총합에 주어진 배열의 누적값을 빼준다고하면 나머지 값의 총합을 얻을수가 있습니다.
느낀점
굳이 하나씩 구하는게 아닌 총합을 구하는 것이기 때문에 문제를 잘읽고 파악해야한다는걸 다시금 깨달았습니다.
'개발일지 > 문제 풀이' 카테고리의 다른 글
[프로그래머스] 기사단원의 무기 (1) | 2024.02.26 |
---|---|
가운데 글자 가져오기(substr, substring) (0) | 2024.01.19 |
프로그래머스 핸드폰 번호 가리기 (0) | 2024.01.15 |
x만큼 간격이 있는 n개의 숫자 (0) | 2024.01.10 |
프로그래머스 문자열추출 문제 풀이.. (1) | 2024.01.07 |