어디까지 갈 수 있을까?
[구현] 프로그래머스 행렬 테두리 회전하기 본문
문제링크 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