스와핑

반응형
반응형

 

스와핑이라는게 도대체 뭘까?

swap 뭘 바꾼다는 말일까?

다양한 프로그래밍언어에서 스와핑 방식을 지원한다고 한다. 하지만 c나 자바같은 언어는 이 방식을 지원되지 않는다. 그렇다고 스와핑을 하지 못하는것은 아니다.

왜냐하면 스와핑이라는게 그리 어렵지만은 않기 때문이다.

이 두개의 상자에는 물감이 들어있다고 가정하자. 물감은 서로 잘 섞이기 때문에 함부로 옮겨담을 수 는 없다. 이 물감은 특이하게 나중에 들어온 물감이 더 강력하다. 즉, 주황색 상자에 파란물감을 부으면 파란색이된다.

그런데 상자 두개안에 들어있는 물감의 위치를 바꾸고 싶어졌다. (단, 위치는 바꾸지 못한다.)

라는 문제가 존재한다고 하자. 그러면 어떤 방법을 사용해야 물감을 잘 옮길 수 있을까?

바로 비어있는 상자를 준비해서 하나의 색깔을 그곳에 담아 사용하면 될것 같다.

비어있는 상자에 주황색 물감을 부음
주황색 상자에 파란 물감을 부음
원래 비어있던 상자(지금은 주황색)에 있는 물감을 파란상자에 부음

 

물론 비어있는 상자가 더 이상 비어있지 않게 되었지만 필요 없으므로 버리면 된다.

이게 바로 스와핑이다.

프로그래밍 상에서도 이처럼 동작한다.

나중애 들어온 값이 먼저 들어온 값보다 우선순위가 더 높기? 때문에 스와핑 방식을 사용하면 두개의 값을 바꿀 수 있다.

 

반응형

'알고리즘 > 코테 알고리즘 정리 노트' 카테고리의 다른 글

다이나믹 프로그래밍 (1)  (0) 2020.09.20
자바 조합(combination) 정리  (0) 2020.09.17
선택 정렬  (0) 2020.09.10
dfs/bfs 정리(3)  (0) 2020.09.07
dfs/bfs 정리(2)  (0) 2020.09.04

댓글

Designed by JB FACTORY