[TIL] 24.01.01

sssujijjl·2024년 1월 1일

[TIL]

목록 보기
8/51

[문제]

  • 1주차 : 반복문, 조건문 연습하기

어떤 정수들이 있습니다.
정수들의 절댓값을 차례대로 담은 정수 배열 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;
}

중간에 틀렸던 부분도 많지만 고치고 고쳐서 문제를 풀었다!

다 풀고 다른 사람들 풀이도 보면서 모르는 부분 공부했다.

- 다른 사람 풀이 1

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구성 가능하지만, 
배열 자체에 대한 정보를 알려주는거 같은데..

- 다른 사람 풀이 2

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문을 안쓰고 간결하게!

- 다른 사람 풀이 3

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번을 풀었다는거에 만족한다 !
그래도 나도 코드를 간결하게 보기 쉽도록 짜도록 더 열심히 공부해야겠다.

0개의 댓글