프로그래머스/LV2
[프로그래머스 Lv2,python] - 행렬 테두리 회전하기
chyam_eun
2025. 3. 19. 10:44
https://school.programmers.co.kr/learn/courses/30/lessons/77485
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def init(rows,columns): # 처음 행렬 초기화
matrix = []
for i in range(rows):
tmp=[]
for j in range(1,columns+1):
tmp.append(i*columns + j)
matrix.append(tmp)
return matrix
def solution(rows, columns, queries):
res = []
matrix = init(rows, columns)
for i in queries:
x1,y1,x2,y2=i[0]-1,i[1]-1,i[2]-1,i[3]-1
prev_value = matrix[x1][y1] # 회전 전 왼쪽 위 값 저장
min_num = prev_value # 최솟값
for i in range(y1+1, y2+1): # 오른쪽으로
matrix[x1][i], prev_value = prev_value, matrix[x1][i]
min_num = min(min_num, prev_value)
for i in range(x1+1, x2+1): # 아래로
matrix[i][y2], prev_value = prev_value, matrix[i][y2]
min_num = min(min_num, prev_value)
for i in range(y2-1, y1-1, -1): # 왼쪽으로
matrix[x2][i], prev_value = prev_value, matrix[x2][i]
min_num = min(min_num, prev_value)
for i in range(x2-1, x1-1, -1): # 위쪽으로
matrix[i][y1], prev_value = prev_value, matrix[i][y1]
min_num = min(min_num, prev_value)
res.append(min_num) # 최솟값 저장하기
return res