상세 컨텐츠

본문 제목

[Java] 음양 더하기

코딩뿌시기(연습)

by thisnorm 2025. 1. 21. 14:35

본문

문제 설명

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

 

 

제한 사항

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

 

 

 

 

입출력 예

absolutes
signs
result
[4, 7, 12] [ true, false, true ]
9
[1, 2, 3]
[ false , false, true ]
0

 


 

문제가 풀수록 제목만 보고는 알 수 없는 문제가 되어가는 것 같다.
입출력 예를 봐야만 문제가 완전히 이해가 된다 ㅋㅋㅋ
처음에는 signs가 true or false 일 때 + or -를 반환하는 메서드를 작성해야하나 했는데
그냥 조건문을 이용하면 된다는 것을 머지않아 깨달았다.
그렇게 작성한 코드를 아래에 첨부하겠습니다.
 
 
class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        
        if( 1 <= absolutes.length && absolutes.length <= 1000 && signs.length == absolutes.length) {      
            for( int i = 0; i < signs.length; i++ ) {
                if( 1 > absolutes[i] || absolutes[i] > 1000 ){
                    return -1;
                }
                if( signs[i] ) {
                    answer += absolutes[i];
                }
                else {
                    answer -= absolutes[i];
                }
            }
        }
        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;
    }
}

아이디어 자체는 동일하였다.

다만 나는 풀어쓴 코드를 삼항연산자를 통하여 간추렸다.

조건 ? 참일 때의 값 : 거짓일 때의 값

 

삼항연산자는 기존에 문제풀이를 시작하기 전부터 약했던 부분이라

따로 정리를 해놨는데도 아직 실전에서는 생각나지 않는다.

그리고 answer 안에 다 더하되 숫자와 부호를 곱해줌으로써 더 간편한 코드가 되었다.

관련글 더보기