왼쪽 열부터 차례대로 완성한다. 열을 완성할 때는 두 목표 수 와 를 함께 살펴보고, 이미 완성한 열은 건드리지 않는다.
각 수의 현재 위치를 저장하고 교환할 때마다 갱신한다. 교환 목록을 저장한 뒤 그 길이와 목록을 출력하면 된다. 시간 복잡도와 교환 목록을 포함한 공간 복잡도는 모두 이다.
증명
열을 처리하기 전에 두 목표 수는 모두 열 이후에 있다. 알고리즘은 이 영역 안에서만 교환하며, 두 목표 수를 서로 다른 행에 둔 뒤 왼쪽으로 옮기므로 한 수를 옮기는 동안 다른 목표 수가 밀려나지 않는다. 따라서 이전 열들을 유지하면서 열을 올바르게 완성한다.
남은 열의 수를 이라 하자. 두 목표 수는 각각 가로로 최대 번 이동하고, 어느 경우든 세로 교환은 최대 한 번이다. 따라서 총 교환 횟수는
이하이므로 만점 조건을 만족한다.