728x90
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/77485
📌 문제 접근 방법
- 입력으로 들어온 행과 열의 크기에 따라 2차원 리스트를 생성한다.
- 리스트에 시계방향으로 '오른쪽->아래->왼쪽->위'의 방향을 저장한다.
- queries를 하나씩 순회하며 회전을 시키고, 회전할 때마다 최소값을 갱신한다.
- 1회 회전이 끝날 때마다 저장된 최소값을 answer에 저장한다.
📌 코드
def solution(rows, columns, queries):
numbers = [[columns*r + (c+1) for c in range(columns)] for r in range(rows)]
dxy = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 오 아 왼 위
answer = []
for x1, y1, x2, y2 in queries:
way = 0
x = x1 - 1
y = y1 - 1
curr = numbers[x][y]
min_num = curr
while way < 4:
nx, ny = x+dxy[way][0], y+dxy[way][1]
if x1-1 <= nx <= x2-1 and y1-1 <= ny <= y2-1:
curr, numbers[nx][ny] = numbers[nx][ny], curr
min_num = min(min_num, curr)
x, y = nx, ny
else:
way += 1
answer.append(min_num)
return answer
728x90
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[PG/Python] 다단계 칫솔 판매 (0) | 2021.12.17 |
---|---|
[PG/Python] 배달 (0) | 2021.12.16 |
[PG/Python] 튜플 (0) | 2021.12.16 |
[PG/Python] 가장 먼 노드 (0) | 2021.12.09 |
[PG/Python] 기능개발 (0) | 2021.12.09 |
댓글