알고리즘, 코딩테스트

[프로그래머스/ 코딩테스트 월간코드챌린지 시즌2] 음양 더하기

jy3574 2024. 11. 5. 12:39

Q. 음양 더하기

 

A.

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        int[] answerArray = new int[absolutes.length];
        
        for(int i=0; i< absolutes.length; i++){
            answerArray[i] = absolutes[i] * (signs[i] ? 1 : -1);
        }
        for(int j : answerArray){
            answer += j;
        }
        return answer;
    }
}

 

생각해보니까 for문을 두번 안쓰고도 풀 수 있었다....?

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        
//두 배열의 길이가 같다고 했으니까
//i가 0부터 두 배열의 길이까지 1씩 증가하면서 absolutes의 i 값과 signs의 i 값을 곱한다.
//곱하는 이유는? signs가 부호이기 때문에!
//삼항 연산자 사용 (조건) ? 참결과 : 거짓결과
//signs[i] ? 1 : -1   -> signs[i]가 참일때 = 양수일때 1을 곱하고, 거짓일때 = 음수일때 -1을 곱한다.
        for(int i=0; i< absolutes.length; i++){
            answer += absolutes[i] * (signs[i] ? 1 : -1);
        }
        return answer;
    }
}