C++/기타
[C++] 추가적인 변수 선언 없이 값 교환하기 (swap)
Chan Lee
2023. 12. 19. 23:56
프로그래밍을 하다 보면 2개의 변수에 대해서 서로의 값을 교환해야 하는 경우가 있습니다.
swap 함수를 쓰면 편하지만, 직접 효과를 구현해야 할 때도 (혹시?) 있을 것 입니다.
가령 a = 40, b = 30일 때 a = 30, b = 40으로 만드는 것입니다.
저만 그런지 모르곘지만, 항상 보조 변수를 선언해서 이 방법을 해결했었습니다.
int n 같은 변수에 a 나 b 중 하나를 저장해 놓고, 순차적으로 바꾸는 것이죠.
int a {40};
int b {30};
int n {};
n = a;
a = b;
b = n;
cout << a << endl; // 30
cout << b << endl; // 40
이런 식으로요.
아마 익숙하실 것 같습니다.
그런데 쓸데 없는 변수를 만들지 않고 가능한 기발한 방법을 찾아서 기록해둡니다.
int n1{30};
int n2{40};
n1 = n1 + n2; // n1 = 30 + 40 = 70
n2 = n1 - n2; // n2 = 70 - 40 = 30
n1 = n1 - n2; // n1 = 70 - 30 = 40
cout << n1 << endl; // 40
cout << n2 << endl; // 30
이렇게 하면 의미없는 변수를 선언하지 않고 해결이 됐습니다.
사실 아주 간단한 아이디어인데 이런게 쉽게 생각나지 않네요..
이런게 바로바로 떠오른다면 참 좋을 것 같습니다.