
😎풀이
nums를 오름차 순 정렬 후 순회
1-1. k 회까지 음수를 양수로 변환
1-2. 모든 수를 합산
0이 존재한다면 k 수를 초기화 할 수 있음 (짝수 k번이던, 홀수 k번이던 상관 없이 처리 가능)
- 홀수의
k번이 남았다면, 양수 중 가장 작은 수를 합계에서 제거
- 합계 반환
function largestSumAfterKNegations(nums: number[], k: number): number {
let sum = 0
let remainK = k
const sortedNums = nums.toSorted((a, b) => a - b)
for(let i = 0; i < nums.length; i++) {
if(sortedNums[i] < 0 && remainK) {
sortedNums[i] = -sortedNums[i]
remainK--
}
sum += sortedNums[i]
}
if(sortedNums.includes(0)) remainK = 0
if((remainK & 1) === 1) {
let minNum = Infinity
for(const num of sortedNums) {
if(num >= 0) minNum = Math.min(minNum, num)
}
sum -= minNum * 2
}
return sum
};