어떤 정수들이 있습니다.
정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와
정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다.
실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
이번에는 내가 풀어보려고 공부했던 것과 검색을 같이 하면서 열심히 풀었다!
function solution(absolutes,signs) {
let result = 0 ;
for (let i=0; i<absolutes.length; i++) {
if (signs[i] === true) {
result += absolutes[i];
} else {
result -= absolutes[i];
}
}
return result;
}
중간에 틀렸던 부분도 많지만 고치고 고쳐서 문제를 풀었다!
다 풀고 다른 사람들 풀이도 보면서 모르는 부분 공부했다.
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
// reduce : 배열의 각 요소에 대하여 주어진 콜백 함수를 실행하면서 하나의 값으로 축소 (초기값 = 0 으로 시작)
// accumulator(acc) = 누적된 값
// currentValue(val) = 현재 'absolutes' 배열의 요소
// currentIndex(i) = 현재 처리 중인 배열 요소의 인덱스
// array = reduce를 호출한 배열 자체 -> 활용하지 않아도 reduce구성 가능하지만,
배열 자체에 대한 정보를 알려주는거 같은데..
function solution(absolutes, signs) {
let answer = 0;
for (let i = 0; i < absolutes.length; i++) {
signs[i] ? answer += absolutes[i] : answer -= absolutes[i]
}
return answer;
}
// 삼항연산자를 사용하여 if문을 안쓰고 간결하게!
function solution(absolutes, signs) {
let answer = 0;
absolutes.forEach((v, i) => {
if (signs[i]) {
answer += v;
} else {
answer -= v;
}
})
return answer;
}
// forEach문을 사용하여 배열의 요소가 각 한 번씩 실행되도록
// v = 현재 배열 요소의 값
// i = 현재 배열 요소의 인덱스
다른 사람들처럼 코드를 간결하게 하지는 못했지만,
1주차 문제 1번은 풀지 못했지만 2번을 풀었다는거에 만족한다 !
그래도 나도 코드를 간결하게 보기 쉽도록 짜도록 더 열심히 공부해야겠다.