과거의 swap
let a = 1, b = 2;
function swap() {
const temp = a;
a = b;
b = temp
}
console.log(a, b)
swap()
console.log(a, b)
- '
a = b; b = a;
하면 되는 거 아님?' 이렇게 생각했던 나는 temp
의 존재를 부정했다.
- js는 한줄 씩 실행되기 때문에 내 생각처럼 진행하면 아래 처럼 대참사가 일어난다.
let a = 1, b = 2;
a = b;
b = a;
console.log(a, b)
- 온 세상이 yee다.
temp는 a의 값을 잠시 저장해서 a에 다른 값이 들어가도 기존 a를 저장하는 역할을 해줬다.
- 하지만 내가 작성한 코드는 2개 이상의 swap이 일어나 함수 보기가 조금 찝찝했다.
if(min > max) {
const temp = min;
const inputTemp = inputMin;
const chickenTemp = chickenMin;
const noiJeolTemp = noiJeolMin;
min = max;
max = temp;
inputMin = inputMax;
inputMax = inputTemp;
chickenMin = chickenMax;
chickenMax = chickenTemp;
noiJeolMin = noiJeolMax;
noiJeolMax = noiJeolTemp;
}
- 하나 바꾸려면 적어도 3줄이 필요하고, 하나하나 변수도 생성해줘야 한다.
- 100개를 바꿔야하면 300줄을 작성해야 하는데 노가다판이 따로 없다.(지금 생각해보니 함수를 만들어두면 되네요. 이런 게 인사이트?)
- 하지만 우리는
성장하고🤦♂️
기록하고💁♂️
꿈꾸는🤸♂️
개발자니까 비구조할당
을 사용해서 swap을 진행한다.
비구조할당 swap
if(min > max) {
[min, max] = [max, min];
[inputMin, inputMax] = [inputMax, inputMin];
[chickenMin, chickenMax] = [chickenMax, chickenMin];
[noiJeolMin, noiJeolMax] = [noiJeolMax, noiJeolMin];
}
- 개당 3줄짜리 코드를 1줄로 줄이고,
temp
라는 변수를 생성하지도 않았다. 어릴 적 temp
를 부정하던 나는 미래 몇 수를 내다 본 게 아닐ㄲ
- 이런 swap 방법을 배운 적은 없지만 비구조 할당
하나를 배우면 열에 써먹을 줄 아는 이런 모습이 진정한 게이발자가 아닐까?
하는 생각이 든다.
- 물론 위 방법은 사수님이 찾았다. 당신 없이 못 살아~~