더북(TheBook)

변수는 일단 값이 한 번 변경되면 이전 값을 기억하지 않습니다. 이렇게 값이 사라졌다면 나머지 작업에서도 똑같이 값이 사라질 것입니다. 그렇다면 사라지는 값을 기억했다가 마지막에 다시 할당하는 과정이 필수적으로 요구됩니다. 이런 식으로 본래 해야 하는 작업에 다른 작업이 많이 추가되면 이 과정에서 발생하는 문제가 없는지까지 체크해야 하므로 실수하기 쉽습니다.

분명히 회전하라고 해서 회전했더니 문제가 더 커지는 상황이 됐네요. 이렇게 순수하게 보이는 대로만 문제를 풀면 생각치도 못한 변수가 발생해 추가 비용이 들이거나 고민거리가 늘어날 수 있습니다. 번뜩이는 아이디어가 필요할 때입니다. 생각을 바꿔 앞에서 살펴본 시계 회전 과정을 반대로 실행하면 어떨까요?

▲ 그림 3-8 반대로 생각하기

기존 방식대로라면 ‘왼쪽 위 → 오른쪽 위 → 오른쪽 아래 → 왼쪽 아래’ 순으로 배열의 값을 밀어가며 구현해야 하지만, 반대로 ‘왼쪽 아래(①) → 오른쪽 아래(②) → 오른쪽 위(③) → 왼쪽 위(④)’ 순서로 방식을 바꾸면 맨 처음 숫자 8만 사라지기 때문에 해당 값만 잘 기억해두었다가 마지막에 들어갈 위치로 할당하기만(⑤) 하면 됩니다. 추가 과정이 단 1번만 생겼습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.