😎풀이

  1. 엘리스와 밥의 캔디 수 합계를 구함
  2. 엘리스가 건네는 캔디를 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
  3. 밥의 캔디 목록에서 엘리스가 줄 캔디 - 해당 공식이 성립하는 수량을 탐색
  4. 각각이 줘야할 캔디 수 반환
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]
    }
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글

Powered by GraphCDN, the GraphQL CDN