더북(TheBook)

2. 회전해야 할 위치들의 값을 받아옵니다.

이 또한 쉽습니다. 주어진 좌표에서 1을 빼야 배열의 실제 위치에 접근할 수 있다는 점만 기억한다면 아무런 문제가 없습니다. 회전하는 부분을 코드로 만들 수도 있지만 내용이 길기 때문에 함수로 분리하겠습니다.

result = []
for x1, y1, x2, y2 in queries:
    result.append(rotate(x1 - 1, y1 - 1, x2 - 1, y2 - 1, matrix))

이제 시계 방향으로 회전시키는 rotate() 함수를 만들어야 합니다.

3. 행렬을 시계 방향으로 회전시킵니다.

‘시계 방향으로 회전하는 과정’은 단순히 생각을 정리하는 것만으로는 문제를 풀기 어렵습니다. 배열을 통째로 회전하는 거라면 모를까, 테두리만 돌린다고 하니 갑자기 어떻게 값을 다뤄야 할지 망설이게 되죠. 시계 방향으로 밀라고 언급되었으니 말 그대로 시계 방향으로 밀 수 있지만, 굉장히 번거로운 과정을 거쳐야 합니다.

그렇다면 어떻게 접근하는 것이 좋을까요? 그 답을 찾으려면 먼저 왜 번거로운 과정을 거쳐야 하는지 알아야 합니다. 이해하기 쉽게 컨베이어 벨트를 예로 설명하겠습니다.

▲ 그림 3-5 컨베이어 벨트

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