
๐กsolutions )
๐ฌ ์ ํด์ง ํ๋ ฌ ๋ฒ์์ ๋งจ ์๋จ ์ค๋ฅธ์ชฝ(a, b)์์ ๋ถํฐ ์์ํด์ → ↓ ← ↑ ์์ผ๋ก ํ๋ ฌ ํ ๋๋ฆฌ๋ฅผ ํ์ ํ๋ค.
๐ฌ ์ด์ ๊ฐ์ before์ ์ ์ฅํด๋๊ณ ์ธ๋ฑ์ค๋ฅผ ์ด๋ํ๋ฉฐ ํ๋ ฌ ํ ๋๋ฆฌ ์์ ๊ฐ๋ค์ ๋ฐ๊ฟ์ค๋ค.
๐ฌ ์ด๋ ์ด๋ํ ๋๋ง๋ค min()ํจ์๋ฅผ ์ด์ฉํด์ ํ๋ ฌ ํ ๋๋ฆฌ์ ํด๋นํ๋ ๊ฐ๋ค ์ค ์ต์๊ฐ์ ํ๋ณํ๋ค.
๐จ๐ปcode )
def solution(rows, columns, queries):
arr = [[0]*columns for _ in range(rows)]
num = 1
answer = []
for i in range(rows):
for j in range(columns):
arr[i][j] = num
num += 1
for a,b,c,d in queries:
before = arr[a-1][b-1]
min_value = 10000
for j in range(b, d):
min_value = min(before, min_value)
before, arr[a-1][j] = arr[a-1][j], before
for i in range(a, c):
min_value = min(before, min_value)
before, arr[i][d-1] = arr[i][d-1], before
for j in range(d-2, b-2, -1):
min_value = min(before, min_value)
before, arr[c-1][j] = arr[c-1][j], before
for i in range(c-2, a-2, -1):
min_value = min(before, min_value)
before, arr[i][b-1] = arr[i][b-1], before
answer.append(min_value)
return answer
๐description )
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ํ๋ ฌ ํ ๋๋ฆฌ ํ์ ํ๊ธฐ
6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3]
programmers.co.kr
๋ฌธ์ ์ค๋ช
rows x columns ํฌ๊ธฐ์ธ ํ๋ ฌ์ด ์์ต๋๋ค. ํ๋ ฌ์๋ 1๋ถํฐ rows x columns๊น์ง์ ์ซ์๊ฐ ํ ์ค์ฉ ์์๋๋ก ์ ํ์์ต๋๋ค. ์ด ํ๋ ฌ์์ ์ง์ฌ๊ฐํ ๋ชจ์์ ๋ฒ์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ ํํด, ํ ๋๋ฆฌ ๋ถ๋ถ์ ์๋ ์ซ์๋ค์ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ ค ํฉ๋๋ค. ๊ฐ ํ์ ์ (x1, y1, x2, y2)์ธ ์ ์ 4๊ฐ๋ก ํํํ๋ฉฐ, ๊ทธ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- x1 ํ y1 ์ด๋ถํฐ x2 ํ y2 ์ด๊น์ง์ ์์ญ์ ํด๋นํ๋ ์ง์ฌ๊ฐํ์์ ํ ๋๋ฆฌ์ ์๋ ์ซ์๋ค์ ํ ์นธ์ฉ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํฉ๋๋ค.
๋ค์์ 6 x 6 ํฌ๊ธฐ ํ๋ ฌ์ ์์์ ๋๋ค.

์ด ํ๋ ฌ์ (2, 2, 5, 4) ํ์ ์ ์ ์ฉํ๋ฉด, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 2ํ 2์ด๋ถํฐ 5ํ 4์ด๊น์ง ์์ญ์ ํ ๋๋ฆฌ๊ฐ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํฉ๋๋ค. ์ด๋, ์ค์์ 15์ 21์ด ์๋ ์์ญ์ ํ์ ํ์ง ์๋ ๊ฒ์ ์ฃผ์ํ์ธ์.

ํ๋ ฌ์ ์ธ๋ก ๊ธธ์ด(ํ ๊ฐ์) rows, ๊ฐ๋ก ๊ธธ์ด(์ด ๊ฐ์) columns, ๊ทธ๋ฆฌ๊ณ ํ์ ๋ค์ ๋ชฉ๋ก queries๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ ํ์ ๋ค์ ๋ฐฐ์ด์ ์ ์ฉํ ๋ค, ๊ทธ ํ์ ์ ์ํด ์์น๊ฐ ๋ฐ๋ ์ซ์๋ค ์ค ๊ฐ์ฅ ์์ ์ซ์๋ค์ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- rows๋ 2 ์ด์ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- columns๋ 2 ์ด์ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์ฒ์์ ํ๋ ฌ์๋ ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ์ซ์๊ฐ 1๋ถํฐ ํ๋์ฉ ์ฆ๊ฐํ๋ฉด์ ์ ํ์์ต๋๋ค.
- ์ฆ, ์๋ฌด ํ์ ๋ ํ์ง ์์์ ๋, i ํ j ์ด์ ์๋ ์ซ์๋ ((i-1) x columns + j)์ ๋๋ค.
- queries์ ํ์ ๊ฐ์(ํ์ ์ ๊ฐ์)๋ 1 ์ด์ 10,000 ์ดํ์ ๋๋ค.
- queries์ ๊ฐ ํ์ 4๊ฐ์ ์ ์ [x1, y1, x2, y2]์
๋๋ค.
- x1 ํ y1 ์ด๋ถํฐ x2 ํ y2 ์ด๊น์ง ์์ญ์ ํ ๋๋ฆฌ๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค๋ ๋ป์ ๋๋ค.
- 1 ≤ x1 < x2 ≤ rows, 1 ≤ y1 < y2 ≤ columns์ ๋๋ค.
- ๋ชจ๋ ํ์ ์ ์์๋๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ์๋ฅผ ๋ค์ด, ๋ ๋ฒ์งธ ํ์ ์ ๋ํ ๋ต์ ์ฒซ ๋ฒ์งธ ํ์ ์ ์คํํ ๋ค์, ๊ทธ ์ํ์์ ๋ ๋ฒ์งธ ํ์ ์ ์คํํ์ ๋ ์ด๋ํ ์ซ์ ์ค ์ต์๊ฐ์ ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
์ ์ถ๋ ฅ ์์
rowscolumnsqueriesresult
| 6 | 6 | [[2,2,5,4],[3,3,6,6],[5,1,6,3]] | [8, 10, 25] |
| 3 | 3 | [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] | [1, 1, 5, 3] |
| 100 | 97 | [[1,1,100,97]] | [1] |