코딩 테스트/Level 2
행렬 테두리 회전하기
컴닥
2021. 5. 1. 06:15
반응형
행렬 테두리 회전하기
2021 Dev-Matching: 웹 백엔드 개발자(상반기)
226명 완료
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):
matrix = [[row * columns + column + 1 for column in range(columns)] for row in range(rows)]
answer = []
for x1, y1, x2, y2 in queries:
x = x1 - 1
y = y1 - 1
prev_num = matrix[x + 1][y]
min_value = float('inf')
for y in range(y1 - 1, y2):
prev_num, min_value = exchange(matrix, x, y, prev_num, min_value)
for x in range(x1, x2):
prev_num, min_value = exchange(matrix, x, y, prev_num, min_value)
for y in range(y2 - 2, y1 - 2, -1):
prev_num, min_value = exchange(matrix, x, y, prev_num, min_value)
for x in range(x2 - 2, x1 - 1, -1):
prev_num, min_value = exchange(matrix, x, y, prev_num, min_value)
answer.append(min_value)
return answer
def exchange(matrix, x, y, prev_num, min_value):
temp = matrix[x][y]
matrix[x][y] = prev_num
prev_num = temp
if matrix[x][y] < min_value:
min_value = matrix[x][y]
return prev_num, min_value
반응형