Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Jul 25, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/21099

🧭 풀이 시간

90분

👀 체감 난이도

✏️ 문제 설명

수열에서 원소 네 개를 골라 XOR한 값이 0이 될 수 있는지 판별하기

🔍 풀이 방법

  • 비둘기집 원리

원소 네 개를 a, b, c, d라고 하면, a^b^c^d = 0이어야 한다.
이항하면 a^b = c^d여야 한다.

즉, 두 수의 xor이 같은 경우가 두 개 이상 존재해야 한다는 이야기다.
두 수의 xor로 가능한 경우는 단순하게 생각했을 땐 N^2개 정도 나오겠지만, xor의 성질 때문에 실제로는 131072개 뿐이다.

그래서 N >= 1000을 넘어가면, 두 수의 xor값이 겹치는 경우가 항상 존재하게 된다.
-> 그냥 Yes 출력하고 리턴

N < 1000인 경우만 O(N^2)으로 두 수 xor을 모두 구해 2개 이상 존재하는지 확인한다.

⏳ 회고

N을 저런 식으로 줄이는 건 처음 본다...

@oncsr oncsr self-assigned this Jul 25, 2025
@oncsr oncsr added the hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 label Jul 25, 2025
@ShinHeeEul ShinHeeEul merged commit dac9a40 into main Jul 25, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants