본문 바로가기

컴퓨터/코테

프로그래머스 - 테두리 회전하기

2차원 배열 다루는 문제인데,, 의도에 맞게 푼건진 모르겠다. 무슨 의도로 낸 문제일까...

딱히 어려울 거 없이 한큐에 달린 문제

def rotate(q, arr) : 
    y1, x1, y2, x2 = q
    y1, x1, y2, x2 = y1-1, x1-1, y2-1, x2-1
    
    tmp = arr[y1+1][x1]
    minimum = tmp
    for i in range(x1, x2+1) :
        tmp, arr[y1][i] = arr[y1][i], tmp
        minimum = minimum if minimum < tmp else tmp
    for i in range(y1+1, y2+1) : 
        tmp, arr[i][x2] = arr[i][x2], tmp
        minimum = minimum if minimum < tmp else tmp
    for i in range(x2-1, x1-1, -1) : 
        tmp, arr[y2][i] = arr[y2][i], tmp
        minimum = minimum if minimum < tmp else tmp
    for i in range(y2-1, y1-1, -1) : 
        tmp, arr[i][x1] = arr[i][x1], tmp
        minimum = minimum if minimum < tmp else tmp
    return minimum
        
def solution(rows, columns, queries):
    answer = []
    arr = [[ (r)* columns + c + 1 for c in range(columns)] for r in range(rows)]
    
    for q in queries : 
        answer.append(rotate(q, arr))
    
    return answer