어디까지 갈 수 있을까?

[구현] 프로그래머스 행렬 테두리 회전하기 본문

알고리즘

[구현] 프로그래머스 행렬 테두리 회전하기

_Min 2021. 5. 2. 17:28

문제링크 programmers.co.kr/learn/courses/30/lessons/77485

 

 

 

[답코드]

def solution(rows, columns, queries):
    answer = []
    graph = [[] for _ in range(rows)]
    value = 1
    for i in range(rows):
        for j in range(columns):
            graph[i].append(value)
            value += 1

    for x1, y1, x2, y2 in queries:
        x1, y1, x2, y2 = x1-1, y1-1, x2-1, y2-1
        tmp = graph[x1][y1]
        min_v = tmp
        
        for x in range(x1, x2):
            graph[x][y1] = graph[x + 1][y1]
            min_v = min(min_v, graph[x + 1][y1])
            
        for y in range(y1, y2):
            graph[x2][y] = graph[x2][y+1]
            min_v = min(min_v, graph[x2][y+1])
            
        for x in range(x2, x1, -1):
            graph[x][y2] = graph[x-1][y2]
            min_v = min(min_v, graph[x-1][y2])
            
        for y in range(y2, y1, -1):
            graph[x1][y] = graph[x1][y-1]
            min_v = min(min_v, graph[x1][y-1])
            
        graph[x1][y1+1]=tmp
        answer.append(min_v)
        
    return answer

 

 

[느낀점]

for y in range(5, 1, -1) #5, 4, 3, 2
for y in range(1, 5) #1, 2, 3, 4

두 for 문이 왠지 계속 헷갈렸는데 이번에 확실히 정립됐다.

둘 다 하나 모자라게 나온다고 생각하면 편하다

728x90

'알고리즘' 카테고리의 다른 글

코테 풀 때 생각해야 할 것  (0) 2021.04.28
시간복잡도 O(logN) 빅오표기법  (0) 2021.02.16
백준 10817번(세 수), 3가지 풀이법  (0) 2020.03.04
Comments