📝24.01.17
🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/76501
문제 설명
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
C#과 C++ 모두 동일한 방법으로 풀었다.
using System;
public class Solution {
public int solution(int[] absolutes, bool[] signs) {
int answer = 0;
for(int i = 0; i < absolutes.Length; i++) {
answer += signs[i] ? absolutes[i] : absolutes[i] * -1;
}
return answer;
}
}
오늘도 어김없이 Linq
를 활용한 풀이가 등장했다.
using System;
using System.Linq;
public class Solution {
public int solution(int[] absolutes, bool[] signs) {
return absolutes.Select((t, idx) => signs[idx]? t : -t).Sum();
}
}
그런데 (t, idx)
가 어떻게 t : -t로 치환되는지 모르겠다!!! 그래서 chat-gpt에게 해석을 부탁했다.
즉, absolutes
배열 안의 숫자들을 하나씩 뽑고(t
) 해당 숫자들의 인덱스(idx
)를 사용해 signs
의 true / false를 판별하여 계산한 것이다.
-더이상 미룰 수 없다 Linq 공부-
은 내 풀이보다 나은 풀이가 없었다.