기록

프로그래머스_행렬 테두리 회전하기 본문

코딩테스트/python

프로그래머스_행렬 테두리 회전하기

youngyin 2021. 5. 16. 21:02

문제

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

풀이

1. 시계방향으로 회전

2. 가장 작은 값을 저장

코드

def solution(rows, columns, queries):
    matrix = [[r*columns+c+1 for c in range(columns)] for r in range(rows)]
    result = list()

    # 회전하기
    for r1, c1, r2, c2 in queries :
        result.append(10000)
        item = matrix[r1-1][c1-1]

        for j in range(c1, c2) :
            matrix[r1-1][j], item = item, matrix[r1-1][j] # 값 교환하기
            result[-1] = min(result[-1], item) # 최솟값 얻기

        for i in range(r1, r2) :
            matrix[i][j], item = item, matrix[i][j] # 값 교환하기
            result[-1] = min(result[-1], item) # 최솟값 얻기

        for j in range(c2-2, c1-2, -1) :
            matrix[i][j], item = item, matrix[i][j] # 값 교환하기
            result[-1] = min(result[-1], item) # 최솟값 얻기

        for i in range(r2-2, r1-2, -1) :
            matrix[i][j], item = item, matrix[i][j] # 값 교환하기
            result[-1] = min(result[-1], item) # 최솟값 얻기

    return result

'코딩테스트 > python' 카테고리의 다른 글

프로그래머스_괄호 회전하기  (0) 2021.05.18
프로그래머스_쿼드압축 후 개수 세기  (0) 2021.05.18
백준_9328_열쇠  (0) 2021.02.11
백준_17404_RGB거리 2  (0) 2021.02.05
백준_1149_RGB거리  (0) 2021.02.05
Comments