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 문을 써야 하지만 그럼에도 코드가 굉장히 짧아집니다. 이런 식으로 언어만의 특징과 강점을 활용하면 좀 더 쉽게 구현할 수 있습니다.

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