가수면

[Javascript] 음양 더하기 본문

CS/코딩 테스트

[Javascript] 음양 더하기

니비앙 2022. 11. 19. 12:54

문제 설명

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

 

제한사항
  • absolutes의 길이는 1 이상 1,000 이하입니다.
  • absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
  • signs의 길이는 absolutes의 길이와 같습니다.
  • signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
 
입출력 예
[4,7,12] [true,false,true] 9
[1,2,3] [false,false,true] 0

 


 

forEach 사용한 코드

function solution(absolutes, signs) {
    let answer = 0;
    absolutes.forEach((value, index) => {
        if (signs[index]) {
            answer += value;
        } else {
            answer -= value;
        }
    })
    return answer;
}

 

 삼항 연산자 방법

function solution(absolutes, signs) {
    var answer = 0;
    for(let i = 0; i < absolutes.length; i++) {
        answer += absolutes[i] * (signs[i] ? 1 : -1);
    }

    return answer;
}

 

.reduce() 메소드에 삼항 연산자까지 이용한 방법

function solution(absolutes, signs) {

  return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}

 


 

.reduce()

 

기본 형태

const 배열 = [1, 2, 3, 4];

const a = 배열.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue);

accumulator => 누적 계산된 값

currentValue => 현재 값

initialValue => 초기 값 (함수의 시작 값)

 

적용

const 배열 = [1, 2, 3, 4];

const a = 배열.reduce((acc, cur) => acc + cur, 0);

console.log(a);

10

 

응용

배열 목록의 19세 이상만 뽑아 새로운 배열 만들기

# 배열 목록
let user = [
  { name: 'Mike', age: 30},  
  { name: 'Tome', age: 10},
  { name: 'Jane', age: 27},
  { name: 'Sue', age: 26},
  { name: 'Harry', age: 42},  
  { name: 'Steve', age: 60},
]

# 기본 형태
let result = user.reduce((acc, cur) => {
# 만약 현재 값의 나이가 19세 이상이라면
	if (cur.age > 19) {
# 배열에 푸쉬한다. 현재 이름을
    acc.push(cur.name);
  }
# 그 결과를 배열로 리턴한다.
  return acc
# 초기 값은 []빈 배열이다.
}, [])

console.log(result)

 

Comments