카테고리 없음
[ 프로그래머스 ] 행렬 테두리 회전하기.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]]))