어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
public class SumAbsolute {
public static void main(String[] args) {
SumAbsolute sumAbsolute = new SumAbsolute();
int[] absolutes = {1,2,3};
boolean[] signs = {false,false,true};
int solution = sumAbsolute.solution(absolutes, signs);
System.out.println("solution = " + solution);
}
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for(int i=0; i<absolutes.length; i++){
int su = absolutes[i];
if(!signs[i]){
su = su*-1;
}
answer += su;
}
return answer;
}
}
너무 쉬운 문제라 금방 풀었는데... 생각해보면 lamda를 사용했으면 더 간결하고 가독성도 좋은 코드였을텐데... 너무 아쉽다.
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for(int i=0; i<absolutes.length; i++){
answer += signs[i]? absolutes[i] : absolutes[i] * -1;
}
return answer;
}
solution 부분만 교체해서 사용하면 이렇게 적을 수 있다. 훨씬 더 짧고 가독성도 좋은 코드로 나왔다!
람다식을 기억하자