카테고리 없음

[ 프로그래머스 ] 행렬 테두리 회전하기.py

뚜비두빱 2021. 6. 14. 23:36

https://programmers.co.kr/learn/courses/30/lessons/77485

 

코딩테스트 연습 - 행렬 테두리 회전하기

6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3]

programmers.co.kr

 

풀이 : 문제가 하라는대로 리스트를 만든 후에 순서대로 회전 시키고, 출력하였다.

index가 헷갈리는 부분이 많아서 시간이 오래걸렸다.

 

 

def up(x1, x2, y1, _map) :
    arr = []
    for i in range(x2 - x1) :
        _map[x1 - 1 + i][y1-1] = _map[x1 + i][y1-1]
        arr.append(_map[x1 + i][y1-1])
    return min(arr)

def down(x1, x2, y2, _map) :
    arr = []
    for i in range(x2 - x1) :
        _map[x2  - i - 1][y2-1] = _map[x2 - i -2][y2-1]
        arr.append(_map[x2 - i -2][y2-1])
    return min(arr)

def left(x2, y1, y2, _map) :
    arr = []
    for i in range(y2 - y1) :
        _map[x2-1][y1 -1 + i] = _map[x2-1][y1 + i]
        arr.append(_map[x2-1][y1 + i])
    return min(arr)

def right(x1, y1, y2, _map, tmp) :
    arr = []
    for i in range(y2 - y1) :
        _map[x1-1][y2 -1 -i] = tmp[y2 - y1 - i - 1]
        arr.append(tmp[y2 - y1 - i - 1])
    return min(arr)

def rotation(x1, y1, x2, y2, _map) :
    arr = []
    tmp = _map[x1 - 1][y1-1:y2]
    arr.append(up(x1, x2, y1, _map))
    arr.append(left(x2, y1, y2, _map))
    arr.append(down(x1, x2, y2, _map))
    arr.append(right(x1, y1, y2, _map, tmp))
    return min(arr)
    
def solution(rows, columns, queries):
    answer = []
    _map = []
    for i in range (rows) :
        _map.append([j + (columns *  i ) for j in range (1,columns + 1)])
    for i in queries :
        answer.append(rotation(i[0], i[1], i[2], i[3], _map))
    return answer


##print(solution(6, 6, 	[[2,2,5,4],[3,3,6,6],[5,1,6,3]]))
##print(solution(3, 3, [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]]))
##print(solution(100, 97, [[1,1,100,97]]))