알고리즘/프로그래머스

[프로그래머스 Lv1] 75061번 : 음양 더하기 - JAVA [자바]

DevelopJJong 2022. 7. 5. 01:20

문제

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/76501


수도코드 작성

 

signs 가 true 일 때는 양수로 absolute를 다시 만들고 

signs 가 false 일 때는 음수로 absolute를 만들어서

마지막에 더 해주면 될 것 같았다.


작성한 코드

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        String[] signs0 = new String[signs.length];
        String[] num = new String[absolutes.length];
        for(int i=0; i<signs.length; i++) {
            if(signs[i] == true){
                signs0[i] = "+";
            }
            else {
                signs0[i] = "-";
            }
        }
        for(int i=0; i< absolutes.length; i++){
            num[i] = signs0[i].concat(Integer.toString(absolutes[i]));
            answer += Integer.parseInt(num[i]);
        }
        return answer;
    }
}

처음에는 signs를 굳이 String으로 변환해서 +,- 로 바꿔주는 작업을 하고 그리고 signs0 + absolutes 를 합쳐주는 작업을 했다. 그리고 answer 를 구해서 사실 너무 비효율적인 코드인 것 같았다.

그래서 조건연산자를 이용해서 효율적으로 바꿔보았다.

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

보완할 점 / 헷갈린 점

조건연산자에 대해서 알고는 있었지만 써본 적은 딱히 없었다. 이번에 사용하게 되서 공부가 더 된 것 같다.