언어
변수 스왑
AlgoPoolJa
2021. 1. 13. 15:27
두 변수를 바꾸는 가장 널리 알려진 방법은 임시 변수를 놓고 이를 활용하는 방법이다.
temp = a
a = b
b= temp
이 방식은 거의 모든 언어에서 활용할 수 있는 기본적인 방식이지만 파이썬은 임시 변수 없이 변수를 스왑할 수 있다.
[Python]
a : int = 3
b : int = 5
a, b = b, a
다중 할당이라고 불리는 이방식은 파이썬에서 지원하는 매우 강력한 기능이다.
그렇다면 가독성과 더불어 코드의 양까지 줄일 수 있지만 속도 면에서는 어떨까? 맥북에서 실험결과 2개의 방식은 속도차이가 거의 없다는 것을 알 수 있었다.
그렇다면 다른 언어들은 어떨까?
[C++]
int a = 3;
int b = 5;
std::swap(a,b);
리턴값 없이 a와 b의 값을 바꿔주는 swap 함수가 있다.
[Java]
int temp = 0;
int a = 1;
int b = 2;
temp = a
a = b
b = temp
Java는 이런 함수가 없어서 임시 변수를 써줘야 한다.
임시변수 없이 공간 복잡도를 필요로 하지 않는 풀이(단, 변수가 숫자형일때 한정):
ex) x = 13, y =5
x += y # x = 18, y = 5
y = x-y # y = 13
x -= y # x = 5