더북(TheBook)

4. 3번 과정에서 최솟값을 찾습니다.

회전한 배열 값에서 최솟값을 찾는 방법은 매우 간단합니다. 회전하기 위해 찾는 모든 값 중에서 가장 작은 값을 찾으면 됩니다. 여기에서는 배열을 회전할 때 최솟값도 같이 확인하도록 구현했습니다. 앞의 코드에서 min_value가 이에 해당합니다.

이렇게 문제의 정답 코드가 완성되었습니다. 전체 코드는 다음과 같습니다.

 

전체 코드

3장/행렬_테두리_회전하기.py

def rotate(x1, y1, x2, y2, matrix):
    first = matrix[x1][y1]
    min_value = first
      
    #왼쪽
    for k in range(x1, x2):
        matrix[k][y1] = matrix[k + 1][y1]
        min_value = min(min_value, matrix[k + 1][y1])
    #아래
    for k in range(y1, y2):
        matrix[x2][k] = matrix[x2][k + 1]
        min_value = min(min_value, matrix[x2][k + 1])
    #오른쪽
    for k in range(x2, x1, -1):
        matrix[k][y2] = matrix[k - 1][y2]
        min_value = min(min_value, matrix[k - 1][y2])
    #위
    for k in range(y2, y1 + 1, -1):
        matrix[x1][k] = matrix[x1][k - 1]
        min_value = min(min_value, matrix[x1][k - 1])
      
    matrix[x1][y1 + 1] = first
    return min_value

def solution(rows, columns, queries):
    matrix = [[(i) * columns + (j + 1) for j in range(columns)] for i in range(rows)]
    result = []
    for x1, y1, x2, y2 in queries:
        result.append(rotate(x1 - 1, y1 - 1, x2 - 1, y2 - 1, matrix))
      
    return result

지난 번 문제와 다르게 중간에 막혔던 부분은 없었나요? 3번 조건을 해결했다면 나머지는 정말 지시하는 대로 구현하면 됩니다.

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