ALGORITHM/Kakao

[Python] 행렬 테두리 회전하기

김쿸후 2022. 3. 22. 14:57

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/77485?language=python3 

 

코딩테스트 연습 - 행렬 테두리 회전하기

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

 

2. 풀이

  • 쉬워보여서 도전했는데 생각보다 귀찮은 문제였음..
  • 어디서 어디로 대입을 해야하는지를 꼼꼼하게 체크하자
  • 가로 세로 헷갈리지 않도록 명확한 기준을 잡는 것이 중요

 

 

3. 코드

def circle(x1,x2,y1,y2):
    min_num = board[x1][x2]
    temp1, temp2, temp3 = 0, 0, 0

    temp1 = board[x1][x2]
    for i in range(x1, y1):
        if board[i+1][x2] < min_num:
            min_num = board[i+1][x2]
        board[i][x2] = board[i+1][x2] 

    temp2 = board[x1][y2]
    for i in range(y2-1, x2-1, -1):
        if board[x1][i] < min_num:
            min_num = board[x1][i]
        board[x1][i+1] = board[x1][i]
    board[x1][x2 + 1] = temp1

    temp3 = board[y1][y2]
    for i in range(y1-1, x1-1, -1):
        if board[i][y2] < min_num:
            min_num = board[i][y2]
        board[i+1][y2] = board[i][y2]
    board[x1+1][y2] = temp2
        
    for i in range(x2, y2):
        if board[y1][i] < min_num:
            min_num = board[y1][i]
        board[y1][i] = board[y1][i+1]
    board[y1][y2 - 1] = temp3
    
    if min(temp1,temp2,temp3) < min_num:
        min_num = min(temp1,temp2,temp3)
    return min_num
    
def solution(rows, columns, queries):
    answer = []
    
    global board
    index = 1
    board = []
    
    for i in range(rows):
        element = []
        for j in range(columns):
            element.append(index)
            index = index +1
        board.append(element)

    for i in queries:
        x1,x2,y1,y2 = i[0],i[1],i[2],i[3]
        answer.append(circle(x1-1,x2-1,y1-1,y2-1))
        
    return answer

'ALGORITHM > Kakao' 카테고리의 다른 글

[Python] 다단계 칫솔 판매  (0) 2022.03.24
[Python] 사라지는 발판  (0) 2022.03.24
[Python] 파괴되지 않은 건물  (0) 2022.03.16
[Python] 신고 결과 받기  (0) 2022.03.16
[Python] 양과 늑대  (0) 2022.03.14