개발자 두명이 자리를 바꾸는데 필요한 의자 갯수는?

보통 개발자의 자리이동은 세개의 의자가 있어야지만 가능하다. 빈의자 = 개발자1 개발자1 = 개발자2 개발자1 = 빈의자 그런데 XOR를 이용하면 두개의 의자 만으로도 이동이 가능하다. 개발자1 ^= 개발자2 개발자2 ^= 개발자1 개발자1 ^= 개발자2 GPT의 답변이다. 나는 이런 방법이 있을거라 생각도 못했었다. 그러던중 현대의 컴파일러에선 XOR가 메모리를 사용하지 않지만 병렬처리에서의 문제로 성능이 떨어진다는 이야기를 들었다. 항상 자세한 설명과 함께 도움주시는 pr0gr4m 님. 느려지는게 맞다고 하셔서 궁금해서 돌려봤다. import timeit # temp 사용 def swap_temp(): a = 5 b = 10 temp = a a = b b = temp return a, b # XOR 사용 def swap_xor(): a = 5 b = 10 a ^= b b ^= a a ^= b return a, b # 성능 테스트 temp_time = timeit.timeit("swap_temp()", setup="from __main__ import swap_temp", number=1000000) xor_time = timeit.timeit("swap_xor()", setup="from __main__ import swap_xor", number=1000000) print(f"Using temp: {temp_time} seconds") print(f"Using XOR: {xor_time} seconds") 코드를 여러번 실행해 봤고 결론을 얻었다. ...

August 8, 2023 · 2 min · 📁 기타 · 🏷️ XOR