๐[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ฌ ํ ๋๋ฆฌ ํ์ ํ๊ธฐ
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
}
์ ์ฐ ํ ์ข ์์ผ๋ก ๋์๊ฐ๋ฉฐ ํ์ ์ ๋ฐฐ์ด์ ๋ฐ์ํ์์
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ^^
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ฌ ํ ๋๋ฆฌ ํ์ ํ๊ธฐ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kwb020312/ํ๋ก๊ทธ๋๋จธ์ค-ํ๋ ฌ-ํ ๋๋ฆฌ-ํ์ ํ๊ธฐ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค