공부
알고리즘 공부를 하며 JS를 거의 처음 공부하기 시작했을 때 배운 XOR에 대한 문제가 나왔는데 써본 적도 없고 문제로도 처음 접해서 문제를 봤을 때 어떻게 풀어야 하는지 기억이 나지 않았다. 그래서 다시 찾아보고 공부를 하면서 XOR의 중요한 성질과 XOR를 사용하면 temp 없이 두 숫자의 값을 교환할 수 있다는 것을 알게 되었다.
첫 번째 a ^ b ^ c = a ^ c ^ b
XOR 연산은 순서를 바꿔도 같은 결과가 나온다.
두 번째 a ^ a = O
자기 자신과 XOR 연산을 하면 O이 된다.
세 번째 a ^ O = a
O과 XOR 연산을 하면 자기 자신이 나온다.
보통 두 변수의 값을 교환하는 건 아래와 같이 사용한다.
temp = a
a = b
b = temp
하지만 XOR의 성질을 이용하면 아래와 같이 temp 없이도 교환이 가능하다.
a = a ^ b
b = b ^ a
a = a ^ b
첫 번째 연산의 결과로 a에는 a^b가 들어가고 두 번째 연산의 결과로 b에 b^a^b가 들어가는데 이는 b^b^a = O^a = a가 된다.
이 방법을 사용하면 추가 메모리 없이 두 변수를 바꿀 수 있다.
splice의 잊고 있던 사용 방법이 하나 다시 알게 되었다. 보통 splice를 사용할 때는 아래 예시와 같이 두개의 인자를 사용한다.
ex) ans.splice(0, 1)
첫 번째 인자는 시작 지점 두 번째 인자는 갯수이다.
그런데 분명히 코드를 보던 중 splice를 사용하는데 인자가 3개가 있는 것을 보고 무엇인지 기억이 안나서 검색을 해서 다시 알게 되었다.
세 번째 인자는 첫 번째 인자의 위치에 추가할 값이다. 그리고 기존 요소는 삭제되지 않고 삽입된 요소 뒤로 밀려난다.
기존 요소가 삭제되지 않는다는 점에서 유용하게 쓰일 것 같아서 꼭 기억하고 있어야겠다.
운동
취업
기타