아레나레이팅

solved.ac Grand Arena #1

양말 짝 맞추기

풀이 1

홀수개 쓰인 숫자가 있다면, 해당 숫자를 가지고 짝을 모두 만들 수 없고, 반드시 하나가 남게 됩니다.

코드 (C++)

#include <iostream> #include <vector> using namespace std; int main() { vector<int> cnt(10); for (int i = 0; i < 5; i++) { int Ai; cin >> Ai; cnt[Ai]++; } for (int i = 0; i < 10; i++) if (cnt[i] % 2 == 1) cout << i << endl; }

코드 (Python)

def main(): cnt = [0] * 10 for i in range(5): Ai = int(input()) cnt[Ai] += 1 for i in range(10): if cnt[i] % 2 == 1: print(i) if __name__ == '__main__': main()

풀이 2

XOR(비트간 배타적 논리합) 연산 \oplus 의 성질은 다음과 같습니다.

XOR의 성질에 의해, 같은 수를 두 번 XOR하면 해당 수가 사라지게 됩니다. 즉, 유일하게 쌍을 만들지 못하는 수만 찾기 위해서는 입력으로 주어지는 모든 수를 XOR하면 됩니다.

코드 (C++)

#include <iostream> using namespace std; int main() { int ans = 0; for (int i = 0; i < 5; i++) { int Ai; cin >> Ai; ans ^= Ai; } cout << ans << endl; }

코드 (Python)

def main(): ans = 0 for i in range(5): Ai = int(input()) ans ^= Ai print(ans) if __name__ == '__main__': main()