⚡문제정보
각 쌍의 값이 일치하게 짝지어준다음
그 쌍들을 곱한 값을 더해서 return 해주면 됩니다.
근데 만약 모든 쌍의 값을 일치하게 짝지어줄 수 없다면 -1을 반환해야합니다.
전 정렬을 통해서 가장 높은 값과 가장 낮은 값을 더해주는 방법으로 접근하며.
이 과정에서 두개의 포인터를 만들어주는 방법으로 해결했어요!
🔍나의 풀이
var dividePlayers = function(skill) {
skill.sort((a,b) => a-b)
let [left , right , equal] = [0, skill.length -1 , skill[0] + skill[skill.length-1]]
let answer = 0
while(left <= right) {
let pusher = skill[left] * skill[right]
let reducer = skill[left] + skill[right]
if(reducer == equal) answer += pusher
else return -1
left += 1
right -= 1
}
return answer
};
오름차순으로 정렬해준뒤 왼쪽 오른쪽 포인터와 쌍의 합이 같은지를 비교해줄 eqaul 변수를 만들어줬습니다.
while문을 통해 left가 right보다 커질때까지 반복하고
만약 equal과 reducer 변수의 합이 같다면 left,right를 곱한 값을 answer 변수에 더해주고
그렇지 않다면 -1을 리턴해줬습니다.
반응형
'leetcode' 카테고리의 다른 글
2341. Maximum Number of Pairs in Array (1) | 2023.02.03 |
---|---|
2442. Count Number of Distinct Integers After Reverse Operations Javascript (0) | 2023.01.21 |
413. Arithmetic Slices Javascript (0) | 2023.01.17 |
121 and 122. Best Time to Buy and Sell Stock II (0) | 2023.01.17 |
561. Array Partition Javascript (0) | 2023.01.16 |