320x100
https://school.programmers.co.kr/learn/courses/30/lessons/77485
queries마다 루프를 돌면서
왼쪽 모서리부터 밀기로 생각했다면 왼쪽 위 값이 밀려 사라지기 때문에 마지막에 갱신할 수가 없으니 왼쪽 위 값을 temp에 저장한다.
그리고 왼쪽 / 아래 / 오른쪽 / 위 순서대로 밀고, 밀면서 만난 값들 중 최솟값을 실시간으로 저장한다.
잘 풀었는데 board 리스트 만드는 걸 columns * j로 안하고 row * j로 해버리는 탓에 계속 못풀고 있었다. ㅠ
def solution(rows, columns, queries):
answer = []
board = [[columns * j + i + 1 for i in range(columns)] for j in range(rows)]
for query in queries:
top = query[0] - 1 # top
left = query[1] - 1 # left
bottom = query[2] - 1 # bottom
right = query[3] - 1 # right
temp = board[top][left] # 왼쪽 위
minimum = temp # 매번 밀면서 최솟값 check
for a in range(bottom - top): # 왼쪽 모서리 올리기
board[top + a][left] = board[top + a + 1][left]
minimum = min(minimum,board[top + a + 1][left])
for b in range(right - left): # 아래 모서리 오른쪽 밀기
board[bottom][left + b] = board[bottom][left + b + 1]
minimum = min(minimum,board[bottom][left + b + 1])
for c in range(bottom - top): # 오른쪽 모서리 내리기
board[bottom - c][right] = board[bottom - c - 1][right]
minimum = min(minimum, board[bottom - c - 1][right])
for d in range(right - left): # 위 모서리 왼쪽 밀기
board[top][right - d] = board[top][right - d - 1]
minimum = min(minimum, board[top][right - d - 1])
board[top][left + 1] = temp
answer.append(minimum)
return answer
'코딩테스트' 카테고리의 다른 글
[파이썬] 같은 숫자는 싫어 [CODING TEST #24] (0) | 2022.07.29 |
---|---|
[파이썬] 캐시 - 2018 KAKAO BLIND RECRUITMENT [CODING TEST #23] (0) | 2022.07.27 |
[파이썬] 타겟 넘버 [CODING TEST #21] (0) | 2022.07.27 |
[파이썬] 거리두기 확인하기 - 2021 카카오 채용연계형 인턴십 [CODING TEST #20] (0) | 2022.07.26 |
[파이썬] 프렌즈4블록 - 2018 KAKAO BLIND RECRUITMENT [CODING TEST #19] (0) | 2022.07.26 |
댓글