[프로그래머스_77485] 행렬 테두리 회전하기 Python 풀이

출처: 프로그래머스

문제Permalink

image image image image

풀이Permalink

rotate이라는 함수를 따로 만들어주었습니다.

rotate은 주어진 전역변수 matrix를 주어진 범위 내의 테두리에 위치한 수만 한 칸씩 돌려 값을 저장해줍니다.
또한 돌려지는 값들 중 가장 작은 수인 min_num을 찾아 return 해줍니다.

해당 query 마다 rotate 함수를 호출해 return 받은 값을 answer에 append 해준 뒤 return 해줍니다.

코드Permalink

def rotate(x1, y1, x2, y2):
    global matrix
    x = x1-1
    y = y1-1
    prev = matrix[x][y]
    min_num = prev
    # 오른쪽
    for i in range(y1, y2):
        y = i
        prev, matrix[x][y]  = matrix[x][y], prev
        min_num = min(prev, min_num)
    # 아래쪽
    for j in range(x1, x2):
        x = j
        prev, matrix[x][y]  = matrix[x][y], prev
        min_num = min(prev, min_num)
    # 왼쪽
    for k in range(y2-2, y1-2, -1):
        y = k
        prev, matrix[x][y]  = matrix[x][y], prev
        min_num = min(prev, min_num)
    # 위쪽
    for l in range(x2-2, x1-2, -1):
        x = l
        prev, matrix[x][y]  = matrix[x][y], prev
        min_num = min(prev, min_num)
    return min_num
def solution(rows, columns, queries):
    global matrix
    answer = []
    matrix = [[(i-1)*columns+j for j in range(1, columns+1)] for i in range(1, rows+1)]
    for x1, y1, x2, y2 in queries:
        answer.append(rotate(x1, y1, x2, y2))
    return answer

Leave a comment