더북(TheBook)

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

이번에도 똑같이 시계 방향 회전을 ‘반대로’ 구현하되, 파이썬의 슬라이싱 기능을 사용하겠습니다.

row1, row2 = board[a][b:d], board[c][b + 1:d + 1]
_min = min(row1 + row2)

for i in range(c, a, -1):
    board[i][d] = board[i - 1][d]
    if board[i][d] < _min: _min = board[i][d]

for i in range(a, c):
    board[i][b] = board[i + 1][b]
    if board[i][b] < _min: _min = board[i][b]

board[a][b + 1:d + 1], board[c][b:d] = row1, row2

모서리의 가로 데이터를 리스트 슬라이싱으로 받아 마지막에 그대로 값을 할당하여 문제를 해결하는데, 세로 데이터는 슬라이싱할 수 없으므로 for 문을 써야 하지만 그럼에도 코드가 굉장히 짧아집니다. 이런 식으로 언어만의 특징과 강점을 활용하면 좀 더 쉽게 구현할 수 있습니다.

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