jyamethyst21 님의 블로그

백준 28431번 - '양말 짝 맞추기' (PYTHON 풀이) 본문

CODING 💻

백준 28431번 - '양말 짝 맞추기' (PYTHON 풀이)

jyamethyst21 2026. 4. 12. 01:18

문제:

 

한 쌍의 양말을 만들기 위해 남는 나머지의 숫자를 구하는 문제이다.

 

풀이:

result = 0

for i in range(5):
    num = int(input())
    result ^= num

print(result)

필자는 해당 문제를 풀기 위해 XOR 연산을 활용하였다. XOR 연산은 같은 수라면 0이 되고 그게 아니면 그대로 값을 유지하게 한다. 예를 들어 3^3이면 0이 되고, 0^5면 5가 남는다.

XOR 계산을 위한 result 변수를 선언한 뒤, 반복문을 다섯번 돈다. 입력을 받은 다음 result와 XOR 연산을 수행한다. 처음 반복문을 돌고 입력값이 1 2 3 2 1 일 때, 계산은 다음과 같이 진행된다.

0 ^ 1 = 1 
1 ^ 2 = 3 
3 ^ 3 = 0
0 ^ 2 = 2
2 ^ 1 = 3

결국 짝이라면 반드시 해당 수가 두 번 존재하게 될거고, 두 번 존재하면 XOR 특성 상 같은 값은 0으로 만든다는 특징 때문에, 사라지게 되고 짝이 없는 값 한 개만 남게 된다. 결과적으로 마지막에 result에는 짝이 없는 수가 남게 되므로 이 수를 출력하면 된다.