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์
๋๋ค.
๋ชจ๋ ํ์ ์ ์์๋๋ก ์ด๋ฃจ์ด์ง๋๋ค.
์๋ฅผ ๋ค์ด, ๋ ๋ฒ์งธ ํ์ ์ ๋ํ ๋ต์ ์ฒซ ๋ฒ์งธ ํ์ ์ ์คํํ ๋ค์, ๊ทธ ์ํ์์ ๋ ๋ฒ์งธ ํ์ ์ ์คํํ์ ๋ ์ด๋ํ ์ซ์ ์ค ์ต์๊ฐ์ ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
function solution(rows, columns, queries) {
const result = []
// ๋ฐฐ์ด ์์ฑ
let arr = []
let lastNum = 1
for(let i = 1 ; i <= rows; i++) {
let rowArr = []
for(let j = 1 ; j <= columns ; j ++) {
rowArr.push(lastNum)
lastNum++
}
arr.push(rowArr)
}
// ์ฟผ๋ฆฌ ์ ์ฒด ๊ฐ์๋งํผ ๋ฐ๋ณต
for(let i = 0 ; i < queries.length ; i ++) {
const start = queries[i].slice(0,2)
const end = queries[i].slice(2,4)
const box = []
let temp = 0
// ์๋จ ํ์ x์ถ
for(let j = start[1] ; j <= end[1] ; j ++) {
// ์ ์ฅ๊ณต๊ฐ ์์ฑ
temp = arr[start[0]-1][j-1]
box.length ? arr[start[0]-1][j-1] = box[box.length-1] : null
box.push(temp)
}
// ์ฐ์ธก ํ์ y์ถ
for(let j = start[0]+1 ; j <= end[0] ; j++) {
temp = arr[j-1][end[1]-1]
box.length ? arr[j-1][end[1]-1] = box[box.length-1] : null
box.push(temp)
}
// ํ๋จ ํ์ x์ถ
for(let j = end[1]-1 ; j >= start[1] ; j --) {
temp = arr[end[0]-1][j-1]
box.length ? arr[end[0]-1][j-1] = box[box.length-1] : null
box.push(temp)
}
// ์ข์ธก ํ์ y์ถ
for(let j = end[0]-1 ; j >= start[0] ; j --) {
temp = arr[j-1][start[1]-1]
box.length ? arr[j-1][start[1]-1] = box[box.length-1] : null
box.push(temp)
}
result.push(Math.min(...box))
}
return result
}
์ ์ฐ ํ ์ข ์์ผ๋ก ๋์๊ฐ๋ฉฐ ํ์ ์ ๋ฐฐ์ด์ ๋ฐ์ํ์์
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ^^