[Python] 행렬 테두리 회전하기 - Lv.2

Saemi Min·2023년 3월 17일
0

Programmers Algorithm

목록 보기
27/29
post-thumbnail

문제

해당 문제 링크

정답

def solution(rows, columns, queries):
    answer = []
    
    n=[]
    m=[]
    for i in range(1, (rows*columns)+1):
        n.append(i)
        if i%columns==0:
            m.append(n)
            n=[]
            
    ro, co= 0, 0      
    for i in range(len(queries)):
        a=queries[i][0]
        b=queries[i][1]
        c=queries[i][2]
        d=queries[i][3]

        ro=c-a
        co=d-b
        
        tmp=m[a-1][b-1]
        mini=min(tmp, rows*columns)

        for j in range(ro):
            m[a-1][b-1]=m[a][b-1]
            mini=min(mini, m[a][b-1])
            a+=1
        
        for j in range(co):
            m[a-1][b-1]=m[a-1][b]
            mini=min(mini, m[a-1][b])
            b+=1

        for j in range(ro):
            m[a-1][b-1]=m[a-2][b-1]
            mini=min(mini, m[a-2][b-1])
            a-=1

        for j in range(co-1):
            m[a-1][b-1] = m[a-1][b-2]
            mini=min(mini, m[a-1][b-2])
            b-=1

        m[a-1][b-1]=tmp

        answer.append(mini)

    return answer

풀이

시계방향으로 회전하기 때문에
8의 숫자를 갖고 있는 칸을 일단 빈 것으로 치고 미리 값을 저장해놓는다.
코드 상에서는 tmp 변수에 8의 값을 넣었다.
그리고, 비어있는 부분을 시계방향으로 채우기 때문에 14값이 위로 올라오고 하나씩 시계방향으로 움직이게 한다.
마지막에는 저장해놓은 tmp값을 넣어주면 된다.

profile
I believe in myself.

0개의 댓글