해설
- 이 문제는 예를들어 101개짜리 배열이 있다고 하면
- 100개의 원소는 각 2개씩 중복된 50개의 쌍과 1개의 나홀로 숫자가 있다
- 마치 50쌍의 커플과 한명의 쏠로가 있을때, 솔로를 찾아 색출해내는 문제입니다.
접근법
- set 자료구조에다가
- 원소가 이미 존재한다면 삭제하고
- 존재하지 않는다면 추가하고
- 위 두가지 행동을 처음부터 끝까지 n 번 순회하면 홀수번(여기선 1번) 나온 원소를 찾아낼 수 있습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
class Solution {
public static void main(String[] args) {
Solution s = new Solution();
}
public int solution(int[] A) {
int answer = -1;
HashSet<Integer> hs = new HashSet<>();
int size = A.length;
for(int i=0 ; i<size ; i++) {
if( hs.contains(A[i]) ){
hs.remove(A[i]);
}
else {
hs.add(A[i]);
}
}
ArrayList<Integer> al = new ArrayList<>(hs);
answer = al.get(0);
return answer;
}
}
int result = 0;
for(int a : A) {
result ^= a;
}