
😎풀이
- 엘리스와 밥의 캔디 수 합계를 구함
- 엘리스가 건네는 캔디를
x
, 밥이 건네는 캔디를 y
로 가정
2-1. 엘리스 총합 - x + y = 밥의 총합 - y + x
2-2. 엘리스 총합 - 밥의 총합 = 2(x - y)
2-3. x - y = (엘리스 총합 - 밥 총합) / 2
2-4. -y = -x + (엘리스 총합 - 밥 총합) / 2
2-5. y = x + (엘리스 총합 - 밥 총합) / 2
- 밥의 캔디 목록에서 엘리스가 줄 캔디 - 해당 공식이 성립하는 수량을 탐색
- 각각이 줘야할 캔디 수 반환
function fairCandySwap(aliceSizes: number[], bobSizes: number[]): number[] {
let aliceCandies = 0
let bobCandies = 0
const bobCandySet = new Set<number>(bobSizes)
for(const candy of aliceSizes) aliceCandies += candy
for(const candy of bobSizes) bobCandies += candy
const gap = (aliceCandies - bobCandies) / 2
for(const candy of aliceSizes) {
if(bobCandySet.has(candy - gap)) return [candy, candy - gap]
}
};