java 배우기/알고리즘 문제

알고리즘) 음양 더하기

checkuu 2024. 7. 26. 09:17

 

코드

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0; 
        for (int i = 0; i < signs.length; i++){
            if(signs[i]){
                answer += absolutes[i];
            }else{
                answer -= absolutes[i];
            }
        }
        return answer;
    }
}

signs 의 값이 true 면 + false 면 -를 이용했다. for 문을 통해 signs의 배열을 돌리면서 if문을 통해 true면 absolutes의 항이 answer에 바로 더해지고 그렇지 않다면 빠지게 식을 세웠다.

 

나는 absolutes와 signs의 배열을 각각 다빼서 매치 시켜서 더하는 방향으로 생각했다.

한참 생각하다가 구글링을 통해 위와 같이 간단하게 표현 하는것을 배웠다.

문제를 조금더 간편하게 풀 수 있는 방법을 생각하는 연습을 해야겠다.

 

다른사람풀이

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

위와 매커니즘은 같으나 삼항연산자를 이용해 식을 조금더 깔끔하게 보이게 짰다.