
fronts[i], 뒷면 backs[i]에 숫자가 적혀 있다.0을 반환한다."지금 앞면에 없는 숫자"를 찾는 문제가 아니다. 뒤집어서 앞면에서 전부 치울 수 있는 숫자를 찾는 문제다.
[x, 5] 카드: 뒤집어서 x를 뒤로 보내면 된다. 치울 수 있다.[x, x] 카드: 어떻게 뒤집어도 x가 앞면에 남는다. 치울 수 없다.👉 앞뒤가 같은 카드의 숫자만 후보에서 빠지고, 나머지는 전부 후보다.
cantFlip에 모은다.cantFlip에 없는 숫자의 최솟값을 구한다.0을 반환한다.function flipgame(fronts: number[], backs: number[]): number {
const cantFlip = new Set<number>();
for (let i = 0; i < fronts.length; i++) {
if (fronts[i] === backs[i]) cantFlip.add(fronts[i]);
}
let min = Infinity;
for (const num of [...fronts, ...backs]) {
if (!cantFlip.has(num)) min = Math.min(min, num);
}
return min === Infinity ? 0 : min;
};
[x, x] 카드가 앞에서 이미 고른 x를 무효로 만들지 못한다. 금지 목록을 먼저 다 만든 뒤에 판정해야 한다.Infinity를 그대로 반환했다. 문제는 0을 요구한다.