카테고리 없음
음양 더하기(Lv.1)[map()과 forEach()]
하얀성
2023. 1. 6. 14:44
<문제 설명>
제한사항
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
<제출답안>
function solution(absolutes, signs) {
for(let i=0; i<signs.length; i++){
if(signs[i]==false){
absolutes[i]= absolutes[i]*-1
}
}
return absolutes.reduce((a,c) => a+c)
}
위에 코드가 내깐 짠 코드.
대부분이 for문이나 forEach()를 통해 반복문을 돌면서 코드를 짯다.
하지만 누군가들은 아래치럼 reduce와 signs의 true,false 적용만으로 저렇게 풀어냈다.
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
forEach문을 통한 코드
function solution(absolutes, signs) {
let answer = 0;
absolutes.forEach((v, i) => {
if (signs[i]) {
answer += v;
} else {
answer -= v;
}
})
return answer;
}
<보충>
실습을 통해 익혀보겠습니다.
👍 for( )은 인덱스 0부터 시작해서 배열의 길이만큼 순회하면서 배열의 각 원소들을 출력합니다.
const animals = ["lion", "tiger"];
for (let i=0; i<animals.length; i++) {
console.log(animals[i]);
}
// [콘솔 출력 결과]
// lion
// tiger
👍 forEach( )은 배열을 순회하면서 배열의 각 원소들을 출력합니다.
const animals = ["lion", "tiger"];
animals.forEach(animal => {
console.log(animal);
});
// [콘솔 출력 결과]
// lion
// tiger
👍 map( )은 배열을 순회하면서 배열의 각 원소들을 출력합니다. 특이한 점은 forEach( )와 달리 실행결과를 모은 새 배열을 리턴한다는 것입니다. 아래는 별도의 return이 없기때문에 순회했던 개수만큼의 undefined 원소가 있습니다.
const animals = ["lion", "tiger"];
rr = animals.map(animal => {
console.log(animal);
});
console.log(rr); // [undefined, undefined]
// [콘솔 출력 결과]
// lion
// tiger
// [undefined, undefined]