본문 바로가기

Study/Codility

[JAVA] Codility Lesson 2(2) - Arrays : OddOccurrencesInArray

app.codility.com/programmers/lessons/2-arrays/odd_occurrences_in_array/

 

 

Tasks


주어진 배열 A에서 쌍을 이루지 못하는 요소 찾기
 배열의 각 요소는 짝을 이루지 않은 하나의 요소를 제외하고 
 동일한 값을 가진 다른 요소와 쌍을 이룰 수 있다
 ex) 
 --------------------------------------
 int[] A = {9, 3, 9, 3, 9, 7, 9};
 쌍을 이루지 못한 7 반환
 --------------------------------------

 

 

Solution


public static int solution(int[] A) {
	int answer = 0;
    
    for ( int i = 0; i < A.length; i++) {
    	int temp = 1;
        
        for ( int j = 0; j < A.length; j++) {
        	if ( i != j && A[i] == A[j] ) {
            	temp++;
                break;
            }
        }
        
        if ( temp % 2 != 0 ) {
        	answer = A[i];
            break;
        }
    }
    
    return answer;
}

 

TIMEOUT ERROR 발생... 

이중 for문 때문에 나온 것이 아닌가 추정...

이중 for문 제외하고 다시 생각

 

 

public static int solution(int[] A) {
	int answer = 0;
    
    for ( int i : A ) 
    	answer = answer ^ i;
        
    return answer;
}

 

 

 

+...


JAVA 비트연산자 

XOR 연산 (^)

두 수의 자리수가 다른 경우 1로 변환

 

비트연산자 종류

-------------------------------------------------------------------

AND 연산 (&)

두 수의 각자리수에 대해 둘다 1일경우 1로 변환

-------------------------------------------------------------------

OR 연산 (|)

두 수의 각자리수가 하나만 1이면 1로 변환

-------------------------------------------------------------------

XOR 연산 (^)

두 수의 자리수가 다른 경우 1로 변환

-------------------------------------------------------------------

NOT 연산 (~)

각 자리수를 반대로 변환

-------------------------------------------------------------------