문제
A non-empty array A consisting of N integers is given. The array contains an odd number of elements, and each element of the array can be paired with another element that has the same value, except for one element that is left unpaired.
For example, in array A such that:
A[0] = 9 A[1] = 3 A[2] = 9
A[3] = 3 A[4] = 9 A[5] = 7
A[6] = 9
the elements at indexes 0 and 2 have value 9,
the elements at indexes 1 and 3 have value 3,
the elements at indexes 4 and 6 have value 9,
the element at index 5 has value 7 and is unpaired.
Write a function:
function solution(A);
that, given an array A consisting of N integers fulfilling the above conditions, returns the value of the unpaired element.
For example, given array A such that:
A[0] = 9 A[1] = 3 A[2] = 9
A[3] = 3 A[4] = 9 A[5] = 7
A[6] = 9
the function should return 7, as explained in the example above.
Write an efficient algorithm for the following assumptions:
N is an odd integer within the range [1..1,000,000];
each element of array A is an integer within the range [1..1,000,000,000];
all but one of the values in A occur an even number of times.
N개의 정수로 구성된 비어 있지 않은 배열 A가 제공됩니다.
배열에는 홀수개의 요소가 포함되어 있으며, 배열의 각 요소는 짝을 이루지 않은 상태로 남아 있는 한 요소를 제외하고 동일한 값을 가진 다른 요소와 짝을 이룰 수 있습니다.
A[0] = 9 A[1] = 3 A[2] = 9
A[3] = 3 A[4] = 9 A[5] = 7
A[6] = 9
여기서 짝을 이루지 않는 A[5]의 값인 7을 반환하면 된다.
문제 풀이
function solution(A) {
const obj = {}; //객체 활용
for (let i = 0, arrLen = A.length; i < arrLen; i++) {
const value = A[i]; // 배열 A를 돌며 객체 obj에 해당 원소 (A[idx]) 가 들어있는지 확인
if (obj[value] === undefined) {
obj[value] = value;
} else {
delete obj[value]; // 원소가 들어있으면 udelete, 아니라면 객체에 key값 넣어줌
}
}
const oddValue = Object.values(obj)[0];
return oddValue;
} // 객체에는 단 하나의 키와 값 ({Key: Value}) 만 남게 되는데, 값을 배열로 변환하여 맨 첫 번째 요소를 반환
참고 출처: https://pewww.tistory.com/15