codility - OddOccurrencesInArray 문제풀이 java

Sorbet·2021년 3월 17일
0

코테

목록 보기
6/35

해설

  • 이 문제는 예를들어 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();
        //System.out.println( s.solution(9) + "is equal 2?");
    }



    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;
}
profile
Sorbet is good...!

0개의 댓글