문제 링크
풀이
- 구현 문제
1. 배열 생성
2. 범위에서 가장 왼쪽 위에 속하는 숫자 저장 후
1) 왼쪽 세로줄 위쪽으로 한 칸씩 이동
2) 위쪽 가로줄 오른쪽으로 한 칸씩 이동
3) 오른쪽 가로줄 아래쪽으로 한 칸씩 이동
4) 아래쪽 가로줄 왼쪽으로 한 칸씩 이동
5) 가장 왼쪽 위에 속하는 숫자 오른쪽으로 한 칸이동
+ 이동할 때마다 이동한 숫자와 최솟값 비교하여 갱신
3. 최솟값 answer 배열에 추가
def solution(rows, columns, queries):
answer = []
data = [ [0] * columns for _ in range(rows)]
num = 1
# 배열 생성
for a in range(rows):
for b in range(columns):
data[a][b] = num
num += 1
for x1, y1, x2, y2 in queries:
# 가장 왼쪽 위에 속하는 숫자
tmp = data[x1-1][y1-1]
# 최솟값 저장할 변수
min_num = tmp
# 왼쪽 세로 줄 이동
for i in range(x1-1, x2-1):
t = data[i+1][y1-1]
data[i][y1-1] = t
print(t)
min_num = min(min_num,t)
# 위쪽 가로 줄 이동
for i in range(y1-1, y2-1):
t = data[x2-1][i+1]
data[x2-1][i] = t
min_num = min(min_num,t)
# 오른쪽 가로 줄 이동
for i in range(x2-1,x1-1,-1):
t = data[i-1][y2-1]
data[i][y2-1] = t
min_num = min(min_num,t)
# 아래쪽 가로 줄 이동
for i in range(y2-1, y1-1,-1):
t = data[x1-1][i-1]
data[x1-1][i] = t
min_num = min(min_num,t)
# 가장 왼쪽 위 숫자 오른쪽으로 한칸 이동
data[x1-1][y1] = tmp
# 최솟값 저장
answer.append(min_num)
return answer
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level2] 전력망을 둘로 나누기 - python (0) | 2022.03.25 |
---|---|
[프로그래머스][level2] H-index - python (0) | 2022.03.25 |
[백준 2263번] 트리의 순회 - python (0) | 2022.03.18 |
[백준 11779번] 최소비용 구하기 2 - python (0) | 2022.03.18 |
[백준 1918번] 후위 표기식 - python (0) | 2022.03.18 |