์ฝ๋ฉํ ์คํธ๋ฅผ ์ค๋นํ๋ ๋จธ์ฑ์ด๋ ํ๋ก๊ทธ๋๋จธ์ค์์ ๋ฌธ์ ๋ฅผ ํ๊ณ ๋์ค์ ๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ๊ณต๋ถํ๋ ค๊ณ ์์ฑํ ์ฝ๋๋ฅผ ์ปดํจํฐ ๋ฐํํ๋ฉด์ ์๋ฌด ์์น์๋ ์ ์ฅํด ๋ก๋๋ค. ์ ์ฅํ ์ฝ๋๊ฐ ๋ง์์ง๋ฉด์ ๋จธ์ฑ์ด๋ ๋ณธ์ธ์ ์ปดํจํฐ ๋ฐํํ๋ฉด์ด ๋๋ฌด ์ง์ ๋ถํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ํ๋ก๊ทธ๋๋จธ์ค์์ ์์ฑํ๋ ์ฝ๋๋ ๊ทธ ๋ฌธ์ ์ ๊ฐ์ ๋ค์ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฅํด ๋ ํ์ผ๋ค์ ์ ๋ถ ์ญ์ ํ๊ธฐ๋ก ํ์ต๋๋ค.
์ปดํจํฐ ๋ฐํํ๋ฉด์ ๊ฐ ์นธ์ด ์ ์ฌ๊ฐํ์ธ ๊ฒฉ์ํ์
๋๋ค. ์ด๋ ์ปดํจํฐ ๋ฐํํ๋ฉด์ ์ํ๋ฅผ ๋ํ๋ธ ๋ฌธ์์ด ๋ฐฐ์ด wallpaper
๊ฐ ์ฃผ์ด์ง๋๋ค. ํ์ผ๋ค์ ๋ฐํํ๋ฉด์ ๊ฒฉ์์นธ์ ์์นํ๊ณ ๋ฐํํ๋ฉด์ ๊ฒฉ์์ ๋ค์ ๋ฐํํ๋ฉด์ ๊ฐ์ฅ ์ผ์ชฝ ์๋ฅผ (0, 0)์ผ๋ก ์์ํด (์ธ๋ก ์ขํ, ๊ฐ๋ก ์ขํ)๋ก ํํํฉ๋๋ค. ๋น์นธ์ ".", ํ์ผ์ด ์๋ ์นธ์ "#"์ ๊ฐ์ ๊ฐ์ง๋๋ค. ๋๋๊ทธ๋ฅผ ํ๋ฉด ํ์ผ๋ค์ ์ ํํ ์ ์๊ณ , ์ ํ๋ ํ์ผ๋ค์ ์ญ์ ํ ์ ์์ต๋๋ค. ๋จธ์ฑ์ด๋ ์ต์ํ์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๋ ํ ๋ฒ์ ๋๋๊ทธ๋ก ๋ชจ๋ ํ์ผ์ ์ ํํด์ ํ ๋ฒ์ ์ง์ฐ๋ ค๊ณ ํ๋ฉฐ ๋๋๊ทธ๋ก ํ์ผ๋ค์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋๋๊ทธ๋ ๋ฐํํ๋ฉด์ ๊ฒฉ์์ S(lux, luy)๋ฅผ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ผ๋ก ํด๋ฆญํ ์ํ๋ก ๊ฒฉ์์ E(rdx, rdy)๋ก ์ด๋ํ ๋ค ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ๋ผ๋ ํ๋์ ๋๋ค. ์ด๋, "์ S์์ ์ E๋ก ๋๋๊ทธํ๋ค"๊ณ ํํํ๊ณ ์ S์ ์ E๋ฅผ ๊ฐ๊ฐ ๋๋๊ทธ์ ์์์ , ๋์ ์ด๋ผ๊ณ ํํํฉ๋๋ค.
์ S(lux, luy)์์ ์ E(rdx, rdy)๋ก ๋๋๊ทธ๋ฅผ ํ ๋, "๋๋๊ทธ ํ ๊ฑฐ๋ฆฌ"๋ |rdx - lux| + |rdy - luy|๋ก ์ ์ํฉ๋๋ค.
์ S์์ ์ E๋ก ๋๋๊ทธ๋ฅผ ํ๋ฉด ๋ฐํํ๋ฉด์์ ๋ ๊ฒฉ์์ ์ ๊ฐ๊ฐ ์ผ์ชฝ ์, ์ค๋ฅธ์ชฝ ์๋๋ก ํ๋ ์ง์ฌ๊ฐํ ๋ด๋ถ์ ์๋ ๋ชจ๋ ํ์ผ์ด ์ ํ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด wallpaper
= [".#...", "..#..", "...#."]์ธ ๋ฐํํ๋ฉด์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ฌํ ๋ฐํํ๋ฉด์์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด S(0, 1)์์ E(3, 4)๋ก ๋๋๊ทธํ๋ฉด ์ธ ๊ฐ์ ํ์ผ์ด ๋ชจ๋ ์ ํ๋๋ฏ๋ก ๋๋๊ทธ ํ ๊ฑฐ๋ฆฌ (3 - 0) + (4 - 1) = 6์ ์ต์๊ฐ์ผ๋ก ๋ชจ๋ ํ์ผ์ ์ ํ ๊ฐ๋ฅํฉ๋๋ค.
(0, 0)์์ (3, 5)๋ก ๋๋๊ทธํด๋ ๋ชจ๋ ํ์ผ์ ์ ํํ ์ ์์ง๋ง ์ด๋ ๋๋๊ทธ ํ ๊ฑฐ๋ฆฌ๋ (3 - 0) + (5 - 0) = 8์ด๊ณ ์ด์ ์ ๋ฐฉ๋ฒ๋ณด๋ค ๊ฑฐ๋ฆฌ๊ฐ ๋์ด๋ฉ๋๋ค.
๋จธ์ฑ์ด์ ์ปดํจํฐ ๋ฐํํ๋ฉด์ ์ํ๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด wallpaper๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ๋ฐํํ๋ฉด์ ํ์ผ๋ค์ ํ ๋ฒ์ ์ญ์ ํ๊ธฐ ์ํด ์ต์ํ์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๋ ๋๋๊ทธ์ ์์์ ๊ณผ ๋์ ์ ๋ด์ ์ ์ ๋ฐฐ์ด์ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์. ๋๋๊ทธ์ ์์์ ์ด (lux, luy), ๋์ ์ด (rdx, rdy)๋ผ๋ฉด ์ ์ ๋ฐฐ์ด [lux, luy, rdx, rdy]๋ฅผ returnํ๋ฉด ๋ฉ๋๋ค.
wallpaper
์ ๊ธธ์ด โค 50wallpaper[i]
์ ๊ธธ์ด โค 50wallpaper
์ ๋ชจ๋ ์์์ ๊ธธ์ด๋ ๋์ผํฉ๋๋ค.wallpaper[i][j]
๋ ๋ฐํํ๋ฉด์์ i + 1ํ j + 1์ด์ ํด๋นํ๋ ์นธ์ ์ํ๋ฅผ ๋ํ๋
๋๋ค.wallpaper[i][j]
๋ "#" ๋๋ "."์ ๊ฐ๋ง ๊ฐ์ง๋๋ค.wallpaper | result |
---|---|
[".#...", "..#..", "...#."] | [0, 1, 3, 4] |
["..........", ".....#....", "......##..", "...##.....", "....#....."] | [1, 3, 5, 8] |
[".##...##.", "#..#.#..#", "#...#...#", ".#.....#.", "..#...#..", "...#.#...", "....#...."] | [0, 0, 7, 9] |
["..", "#."] | [1, 0, 2, 1] |
์ ์ถ๋ ฅ ์ #1
์ ์ถ๋ ฅ ์ #2
(1, 3)์์ (5, 8)๋ก ๋๋๊ทธํ๋ฉด ๋ชจ๋ ํ์ผ์ ์ ํํ ์ ์๊ณ ์ด๋ณด๋ค ์ ์ ์ด๋๊ฑฐ๋ฆฌ๋ก ๋ชจ๋ ํ์ผ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฅ ์ ์ ์ด๋์ ๋๋๊ทธ๋ก ๋ชจ๋ ํ์ผ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ธ [1, 3, 5, 8]์ returnํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
์์ 3๋ฒ์ ๋ฐํํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ ํ์ผ์ ์ ํํ๊ธฐ ์ํด์ ๋ฐํํ๋ฉด์ ๊ฐ์ฅ ์ผ์ชฝ ์ (0, 0)์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ (7, 9)๋ก ๋๋๊ทธ ํด์ผ๋ง ํฉ๋๋ค. ๋ฐ๋ผ์ [0, 0, 7, 9]๋ฅผ returnํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #4
์์ 4๋ฒ์ ๋ฐํํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ด 2ํ 1์ด์๋ง ์์ด์ฝ์ด ์์ต๋๋ค.
์ด๋ฅผ ๋๋๊ทธ๋ก ์ ํํ๊ธฐ ์ํด์๋ ๊ทธ ์นธ์ ์ผ์ชฝ ์ (1, 0)์์ ์ค๋ฅธ์ชฝ ์๋ (2, 1)๋ก ๋๋๊ทธ ํ๋ฉด ๋ฉ๋๋ค. (1, 0)์์ (2, 2)๋ก ๋๋๊ทธ ํด๋ ์์ด์ฝ์ ์ ํํ ์ ์์ง๋ง ์ด์ ๋ณด๋ค ์ด๋๊ฑฐ๋ฆฌ๊ฐ ๋์ด๋ฉ๋๋ค. ๋ฐ๋ผ์ [1, 0, 2, 1]์ returnํฉ๋๋ค.
function solution(wallpaper) {
let maxPos = [0, 0]
let minPos = [Infinity, Infinity]
const pos = []
// ํ์ผ์ด ์๋ ์์น์ ์ขํ๋ฅผ ๋ชจ๋ ๊ฒ์ฌ
wallpaper.forEach((x, xIdx) => {
[...x].forEach((y, yIdx) => {
if(y === '#') {
if(xIdx < minPos[0]) minPos[0] = xIdx
if(xIdx > maxPos[0]) maxPos[0] = xIdx
if(yIdx < minPos[1]) minPos[1] = yIdx
if(yIdx > maxPos[1]) maxPos[1] = yIdx
}
})
})
// ๋ ์ขํ๋ ์ขํ์ ์ฐ์ธก ํ๋จ์ด๋ฏ๋ก x, y์ ๊ฐ๊ฐ 1์ฉ ๋ํด์ค
maxPos = maxPos.map(a => a+1)
return [...minPos, ...maxPos]
}