Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[프로그래머스] 음양 더하기 본문

코테준비

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

Seung__ 2021. 12. 5. 18:37

1. 문제


어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 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

입출력 예 설명

입출력 예 #1

  • signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
  • 따라서 세 수의 합인 9를 return 해야 합니다.

입출력 예 #2

  • signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
  • 따라서 세 수의 합인 0을 return 해야 합니다.

 

 

2.문제 정리


  • 보자마자 든 생각은.. 어? 내적이다ㅋㅋㅋㅋ
  • true,false만 1, -1로 바꿔줄 수 있으면된다.
  • map을 사용해서 treu : 1, false:-1 로 매칭해두고 사용하자.

 

3. 코드 


import java.util.HashMap;

class Solution {
     public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        HashMap<Boolean, Integer> translator = new HashMap<>();
        translator.put(true, 1);
        translator.put(false, -1);

        for (int i=0; i<absolutes.length; i++){
            answer += absolutes[i] * translator.get(signs[i]);
        }
        return answer;
    }
}

 

 

4. 개선 : 삼항연산자


굳이 Map을 사용해서 바꿔야하나...?

삼항연사자 쓰면 굳이 map에서 찾아오는 수고를 덜어도 됨.

class Solution {
       public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;

        for (int i=0; i<absolutes.length; i++){
            answer += absolutes[i] * ((signs[i])? 1: -1);
        }
        return answer;
    }
}
  • 크흠..훨씬 빠르다...ㅋㅋㅋㅋㅋㅋ
  • 당연히 메모리에서 값을 찾아오는 것보다 바로 처리해버리는게 빠름 ㅋㅋㅋ

 

5. GitHub : 211205 Add Plus Minus


 

GitHub - bsh6463/coding_test

Contribute to bsh6463/coding_test development by creating an account on GitHub.

github.com

 

Comments