이 프로그램에서는 배열에서 홀수 번 발생하는 숫자를 얻는 방법을 볼 것입니다. 다양한 접근 방식이 있습니다. 가장 쉬운 방법 중 하나는 ZOR 연산을 수행하는 것입니다. 숫자가 자신과 XOR되면 0이 됩니다. 따라서 숫자가 짝수 번 XOR되면 0이 되고 그렇지 않으면 숫자 자체가 됩니다.
이 솔루션에는 한 가지 문제가 있습니다. 둘 이상의 요소가 홀수번 발생하면 그 중 하나를 반환합니다.
알고리즘
getNumOccurredOdd(arr, n)
begin res := 0 for each element e from arr, do res := res XOR e done return res end
예시
#include <iostream> using namespace std; int getNumOccurredOdd(int arr[], int n) { int res = 0; for (int i = 0; i < n; i++) res = res ^ arr[i]; return res; } int main() { int arr[] = {3, 4, 6, 5, 6, 3, 5, 4, 6, 3, 5, 5, 3}; int n = sizeof(arr)/sizeof(arr[0]); cout << getNumOccurredOdd(arr, n) << " is present odd number of times"; }
출력
6 is present odd number of times