Study/Algorithm

16.1 숫자 교환

DoRoMii 2019. 8. 14. 10:34
728x90

문제 

임시 변수를 사용하지 않고 숫자를 교환하는 함수를 작성하라.

 

해법

이 문제는 두 수중 하나의 수에 그 둘의 '차이'를 가지고 있도록 하면 해결할 수 있는 문제이다.

숫자 a, b가 있다면 a = a-b 를 통해 a가 차이를 가지고 있도록 하고, b = a  +b  를 통해 a가 된다.

그리고 다시 a = b -a를 통해 a 는 b가 된다.

a = 9 b = 4라고 할때

a = a- b ( a = 9 - 4 =5)

b = a+b (b = 5+4 =9) 

a = b-a ( a = 9-5 =4)

 

비트로도 같은 연산이 가능하다. 이러면 정수 이외의 자료형에서도 동작한다는 이점이 있다.

a  = a^b

b = a^b

a = a^b