Dev: 개발/Algorithm
한 쌍의 수를 이동 없이 바꾸는 함수를 작성하라. (임시변수는 사용할 수 없다.)
KR_Goodnews
2016. 9. 11. 13:25
키 포인트는 ‘두 수의 차이’이다.
0 < b < a 일 경우, 시각적으로 표현하면 다음과 같다.
a-b를 diff라고 생각하면 알고리즘은 다음과 같다.
ㄱ. a = diff
ㄴ. b = b + diff // 이 시점에서 b는 a의 원래값이 된다.
ㄷ. a = b - diff // a는 b의 원래값이 된다.
알고나면 참 쉬운 문제이다. 이를 Swift 코드로 표현하면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 | func swap(var a: Int, var b: Int) -> (Int, Int){ a = a - b b = a + b a = b - a print("a: \(a)") print("b: \(b)") return (a,b) } | cs |
실행 결과는 다음과 같다. 양수는 물론 음수에도 적용되고, 파라미터의 자료형을 바꿔준다면 소수에도 잘 적용된다.