320x100
문제 : https://programmers.co.kr/learn/courses/30/lessons/77485
1부터 차례대로 세팅된 rows x columns 크기의 배열(let, array)을 먼저 만든다.
이제 행렬을 직접회전하면서 최소값을 저장한다.
x1 < x2, y1 < y2 이므로 배열크기를 벗어날 걱정없이 시작 이전 변수(let, before)은 array[x1+1][y1]으로 세팅한다.
회전은 위 순서대로 회전시킨다.
먼저 행을 x1으로 고정시킨 뒤 탐색하는 배열에 before값을 넣고 갱신되기 이전값으로 before 변수를 갱신한다.
다음은 열을 y2로 고정시킨 뒤 탐색하면서 배열값을 갱신시킨다. 이 때, 중복해서 값을 갱신시키면 안되므로 (x1, y2)는 갱신대상에서 제거시켜야 한다. 앞으로도 중복되는 값은 갱신시키지 않게 주의한다.
다음은 행을 x2로 고정시킨 뒤 탐색, 그 다음은 열을 y1으로 고정시킨 뒤 탐색한다.
N = rows, M = columns 라 하면
배열을 처음에 만드는데 드는 시간 O(NM). 질문에 답하는데 드는 시간 O(|queries| * (N+M))을 더한 값이 시간복잡도.
320x100
'알고리즘 문제 > Programmerse' 카테고리의 다른 글
[Programmers] N으로 표현 (0) | 2021.06.08 |
---|---|
[Programmers] 다단계 칫솔 판매 (0) | 2021.06.01 |
[Programmers] 로또의 최고 순위와 최저 순위 (0) | 2021.05.31 |
[programmers][월간 코드 챌린지 시즌2] 2개 이하로 다른 비트 (0) | 2021.05.15 |
[programmers][월간 코드 챌린지 시즌2] 약수의 개수와 덧셈 (0) | 2021.05.15 |
댓글