반응형
오늘의 학습 키워드
bitwise-xor operation
알고리즘 문제
- LeetCode Medium 2433. Find The Original Array of Prefix Xor
- https://leetcode.com/problems/find-the-original-array-of-prefix-xor/description/
공부한 내용
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;
}
}
반응형