바위타는 두루미
16.1 숫자 교환 본문
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
'Study > Algorithm' 카테고리의 다른 글
16.11 다이빙 보드 (0) | 2019.08.14 |
---|---|
16.10 살아있는 사람 (0) | 2019.08.14 |
[leetcode]300. Longest Increasing Subsequence (0) | 2019.08.11 |
[leetcode]322. Coin Change (0) | 2019.08.11 |
[leetcode]62. Unique Paths (0) | 2019.08.11 |
Comments