티스토리 뷰
문제 링크입니다 : 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
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 파괴되지 않는 건물 (0) | 2022.02.27 |
---|---|
프로그래머스 - 헤비 유저가 소유한 장소 (0) | 2022.02.20 |
프로그래머스 - 로또의 최고 순위와 최저 순위 (0) | 2022.02.20 |
프로그래머스 - 사라지는 발판 (0) | 2022.02.16 |
프로그래머스 - 고양이와 개는 몇 마리 있을까 (0) | 2021.04.03 |
댓글