알고리즘/프로그래머스
프로그래머스 - 행렬 테투리 회전하기
시나모온
2022. 2. 20. 03:44
문제 링크입니다 : 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
구현 문제
def solution(rows, columns, queries):
answer = []
def rotate(ay, ax, by, bx):
sy, sx = min(ay, by), min(ax, bx)
ey, ex = max(ay, by), max(ax, bx)
min_num = float('inf')
cy, cx = sy, sx
prev = -1
for i in range(sx, ex):
min_num = min(min_num, board[cy][cx])
board[cy][cx], prev = prev, board[cy][cx]
cx += 1
for i in range(sy, ey):
min_num = min(min_num, board[cy][cx])
board[cy][cx], prev = prev, board[cy][cx]
cy += 1
for i in range(ex, sx, -1):
min_num = min(min_num, board[cy][cx])
board[cy][cx], prev = prev, board[cy][cx]
cx -= 1
for i in range(ey, sy, -1):
min_num = min(min_num, board[cy][cx])
board[cy][cx], prev = prev, board[cy][cx]
cy -= 1
board[cy][cx] = prev
min_num = min(min_num, board[cy][cx])
return min_num
n, m = rows, columns
board = []
num = 0
for i in range(n):
temp_lst = []
for j in range(m):
num += 1
temp_lst.append(num)
board.append(temp_lst)
for query in queries:
min_num = rotate(query[0] - 1, query[1] - 1, query[2] - 1, query[3] - 1)
answer.append(min_num)
return answer
개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~