가수면
[Javascript] 음양 더하기 본문
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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)
'CS > 코딩 테스트' 카테고리의 다른 글
[Javascript] 핸드폰 번호 가리기 (0) | 2022.11.19 |
---|---|
[Javascript] 평균 구하기 (0) | 2022.11.19 |
[Javascript] 없는 숫자 더하기 (0) | 2022.11.19 |
[Javascript] 문자열을 정수로 바꾸기 (0) | 2022.11.19 |
[Javascript] 두 정수 사이의 합 (0) | 2022.11.19 |
Comments