티스토리 뷰

문제 링크입니다 : 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

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함