Coding Test/프로그래머스 Lv.0

음양 더하기 (for문, 삼항연산자or if문, 배열의 더하고 빼기)

sangwoo_rhie 2023. 5. 27. 14:57

 

 

signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
따라서 세 수의 합인 9를 return 해야 합니다.

 

 

제한사항

1. absolutes의 길이는 1 이상 1,000 이하입니다.
2. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
3. signs의 길이는 absolutes의 길이와 같습니다.
4. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.

 

사실 제한사항은 안중요함.

 

이번 문제는 for문과 elseif을 사용해보기.

정수 배열이랬으므로 absolutes는 [ 1 , 2 , 3 , 4 ] 이런식.

 

✔️어떤 문제가 있었는지

function soultion(absolutes, signs) {
    var answer = 0;
    for (var i = 0; i < absolutes.length; i++) {
        if (signs[i] === true) {
            answer = answer + absolutes[i];
        } else if (signs[i] === false) {
            answer = answer - absolutes[i];
        }
    }
    return answer;
}

매개변수를 정수배열과 불리언배열인 absolutes , signs 로 각각 설정.

var answer = 0; 설정 이유는 숫자이므로 0부터 시작.

for문으로 i는 0부터, 정수배열의 길이(absolutes.length)보다 적으면 1씩추가.

만약 양수면 (signs[i] === true) 추가

음수면 (signs[i] === false) 빼기

✔️내가 시도해본 것들

위의 식은 틀렸음.


✔️어떻게 해결 했는지

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;
}

for문과 삼항연산자를 사용.



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;
}

 

for문은 그대로 씀

signs[i] ? answer += absolutes[i] : answer -= absolutes[i]

부호가true일 경우 더하고 false일 경우 뺌.


✔️새롭게 알게된 것