문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
앨리스와 밥은 사탕의 총 개수를 다르게 갖고 있다. 두 개의 정수 배열 aliceSizes와 bobSizes가 주어진다. aliceSizes[i]는 앨리스가 가지고 있는 i번째 사탕 상자의 사탕 개수이고, bobSizes[j]는 밥이 가지고 있는 j번째 사탕 상자의 사탕 개수이다.
두 사람은 친구 사이이고, 각자 사탕 한 상자씩 교환을 하여 두 사람이 가진 사탕의 총 개수가 같아지도록 하고 싶다. 한 사람이 가진 사탕의 총 개수는 각자 가지고 있는 사탕 상자 두개에 들어있는 사탕의 개수를 모두 더한 값이다.
정수 배열 answer를 반환해라. answer[0]은 앨리스가 교환해야 하는 상자 안의 사탕 개수이고, answer[1]은 밥이 교환해야하는 상자 안의 사탕 개수이다. answer가 여러 개인 경우, 그 중 하나를 반환할 수 있다. 적어도 하나의 answer는 존재한다.
#1
Input: aliceSizes = [1, 1], bobSizes = [2, 2]
Output: [1, 2]
#2
Input: aliceSizes = [1, 2], bobSizes = [2, 3]
Output: [1, 2]
#3
Input: aliceSizes = [2], bobSizes = [1, 3]
Output: [2, 3]
class Solution {
public int[] fairCandySwap(int[] aliceSizes, int[] bobSizes) {
int dif = (IntStream.of(aliceSizes).sum() - IntStream.of(bobSizes).sum()) / 2;
HashSet<Integer> set = new HashSet<>();
for(int aliceSize : aliceSizes){
set.add(aliceSize);
}
for(int bobSize : bobSizes){
if(set.contains(bobSize + dif)){
return new int[]{bobSize + dif, bobSize};
}
}
return new int[0];
}
}