더북(TheBook)

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

역시 3번 과정에서 동일하게 행렬을 회전하면서 최솟값을 찾아내는 간단한 문제입니다. _min이 최솟값을 찾는 부분에 해당합니다.

answer.append(_min)

그리고 마지막으로 나온 최솟값을 answer 배열에 추가하면 됩니다.

 

전체 코드

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

def solution(rows, columns, queries):
    answer = []
    board = [[columns * j + (i + 1) for i in range(columns)] for j in range(rows)]
    for query in queries:
        a, b, c, d = query[0] - 1, query[1] - 1, query[2] - 1, query[3] - 1
        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

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