[프로그래머스] Level1. 음양 더하기

Benjamin·2023년 3월 12일
0

프로그래머스

목록 보기
42/58

내 풀이

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

나쁘지않은 코드라 생각되지만, 다른 풀이를 구경해봤다.

다른 풀이

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;
    }
}
  1. 일단 모든수가 양수이고 각 수가 모두 최대치일때를 고려해봐도 1,000 *1,000 이므로 int범위내에서 가능하다.

long타입으로 습관들이는건 좋지만, 연산을 위해 불필요한 변수 하나를 더 사용했다.

  1. 또한 if-else 문을 사용해서 코드 줄을 늘리는것보다, 삼항연산자를 이용할 수 있다.
    answer += absolutes[i] + (signs[i]? : 1 : -1);

0개의 댓글