카테고리 없음

음양 더하기(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]

출처: https://whales.tistory.com/m/115