반응형

오늘의 학습 키워드

bitwise-xor operation


알고리즘 문제


공부한 내용

XOR 비트 연산

  • XOR 비트 연산자: ^
  • 비트 단위로 XOR 연산을 한다. (2진수)
  • 두 비트가 서로 다르면 1, 서로 같으면 0을 반환한다.

오늘의 회고

  • xor 비트연산을 실제 코드에서 사용해보지 않았는데 이번 기회에 ^ 연산자에 대해 알아볼 수 있었다.
  • 비트 연산을 해보면 a ^ b = c 형식으로 계산이 나오는데 테스트 케이스로 모든 배열 연산을 해보니 a ^ c = b 패턴이 보였다.
  •  테스트 케이스에서 [5, 2, 0, 3, 1] 로 xor 연산을 통해 [5, 7, 2, 3, 2] 결과를 반환해야 한다고 했다.
    • 5 xor ? = 2에서 ?가 인덱스 1번에 들어가야 한다.
    • 비트연산을 위해 2진수로 바꾸면 101 xor ? = 010
    • 결국 ? 는 111로 10진수로 바꾸면 7이 된다. 
    • 근데 5 xor 2 를 해보니 101 xor 010 = 111로 7이 반환되었다.
  • 이렇게 xor 연산을 직접 해보면서 피연산자와 결과를 바꿔서 연산해도 xor 연산은 바뀌지 않았다.

문제 풀이

class Solution {
    public int[] findArray(int[] pref) {
        int[] result = new int[pref.length];
        result[0] = pref[0];
        for (int i = 1; i < pref.length; i++) {
            result[i] = pref[i-1]^pref[i];

        }

        return result;
    } 
}

 

반응형

+ Recent posts