ํด๋น ๋ฌธ์ ๋ ๋งค์ฐ ๊ฐ๋จํ์ง๋ง, ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ฉฐ ๋์ ์ง๊ฐ ๋ง์ด์๋ค,,, ๋ถ์กฑํ ์๊ณ ๋ฆฌ์ฆ ์ค๋ ฅ์ผ๋ก ์ต๋ํ ๋ณด๊ธฐ์ฝ๊ฒ ์ฃผ์์ ๋ฌ์๋ณด์์..
๋ฌธ์ ์์
ํ๋ ์ฆ4๋ธ๋ก
๋ธ๋ผ์ธ๋ ๊ณต์ฑ๋ฅผ ํต๊ณผํ ์ ์
์ฌ์ ๋ผ์ด์ธ์ ์ ๊ท ๊ฒ์ ๊ฐ๋ฐ ์
๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค. ์ด๋ฒ์ ์ถ์ํ ๊ฒ์ ์ ๋ชฉ์ "ํ๋ ์ฆ4๋ธ๋ก".
๊ฐ์ ๋ชจ์์ ์นด์นด์คํ๋ ์ฆ ๋ธ๋ก์ด 2ร2 ํํ๋ก 4๊ฐ๊ฐ ๋ถ์ด์์ ๊ฒฝ์ฐ ์ฌ๋ผ์ง๋ฉด์ ์ ์๋ฅผ ์ป๋ ๊ฒ์์ด๋ค.
๋ง์ฝ ํ์ด ์์ ๊ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, ๋ผ์ด์ธ์ด 2ร2๋ก ๋ฐฐ์น๋ 7๊ฐ ๋ธ๋ก๊ณผ ์ฝ์ด 2ร2๋ก ๋ฐฐ์น๋ 4๊ฐ ๋ธ๋ก์ด ์ง์์ง๋ค. ๊ฐ์ ๋ธ๋ก์ ์ฌ๋ฌ 2ร2์ ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์ง์์ง๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ 2ร2 ๋ชจ์์ด ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ํ๊บผ๋ฒ์ ์ง์์ง๋ค.
๋ธ๋ก์ด ์ง์์ง ํ์ ์์ ์๋ ๋ธ๋ก์ด ์๋๋ก ๋จ์ด์ ธ ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๊ฒ ๋๋ค.
๋ง์ฝ ๋น ๊ณต๊ฐ์ ์ฑ์ด ํ์ ๋ค์ 2ร2 ํํ๋ก ๊ฐ์ ๋ชจ์์ ๋ธ๋ก์ด ๋ชจ์ด๋ฉด ๋ค์ ์ง์์ง๊ณ ๋จ์ด์ง๊ณ ๋ฅผ ๋ฐ๋ณตํ๊ฒ ๋๋ค.
์ ์ด๊ธฐ ๋ฐฐ์น๋ฅผ ๋ฌธ์๋ก ํ์ํ๋ฉด ์๋์ ๊ฐ๋ค.
TTTANT
RRFACC
RRRFCC
TRRRAA
TTMMMF
TMMTTJ
๊ฐ ๋ฌธ์๋ ๋ผ์ด์ธ(R), ๋ฌด์ง(M), ์ดํผ์น(A), ํ๋ก๋(F), ๋ค์ค(N), ํ๋ธ(T), ์ ์ด์ง(J), ์ฝ(C)์ ์๋ฏธํ๋ค
์ ๋ ฅ์ผ๋ก ๋ธ๋ก์ ์ฒซ ๋ฐฐ์น๊ฐ ์ฃผ์ด์ก์ ๋, ์ง์์ง๋ ๋ธ๋ก์ ๋ชจ๋ ๋ช ๊ฐ์ธ์ง ํ๋จํ๋ ํ๋ก๊ทธ๋จ์ ์ ์ํ๋ผ.
์ฝ๋ ์์
function solution(m, n, board) {
// ๊ฐ ์์๋ฅผ ์ํํ๊ธฐ ์ฝ๊ฒ ๋ชจ๋ ๋ถ๋ฆฌํด์ ๋ฐฐ์ด์ ๋ด์์ค
let arr = board.map(a => a.split(""))
while(true) {
// ํ๋ฒ์ ์ง์ฐ๊ธฐ ์ํด ์ง์์ผํ ์ขํ๋ฅผ ๊ธฐ๋ก
const coords = []
for(let y = 0 ; y < arr.length-1 ; y ++) {
for(let x = 0 ; x < arr[y].length -1 ; x ++) {
// ๋น์ด์๋ ์๋ฆฌ๋ผ๋ฉด ๊ฑด๋๋
if(arr[y][x] === null) continue
// ์ ์ฅ์์ ๊ฐ๊ณผ ๊ฐ๋ค๋ฉด ์๋ซ์ค๊ณผ ๊ฒ์ฌํ์ฌ 2 * 2 ์กฐ๊ฑด ๊ฒ์ฌ
if(arr[y][x] === arr[y][x+1] && arr[y][x] === arr[y+1][x] && arr[y][x] === arr[y+1][x+1]) {
// ์ขํ๋ฅผ ๋ฐฐ์ด์ ์ฝ์
coords.push([y,x])
}
}
}
// ์๋ฌด๊ฒ๋ ์ง์ธ๊ฒ์ด ์๋ค๋ฉด ๋น์นธ์ ๊ฐ์ ๋ฐํ
if(!coords.length) {
return arr.flat(Infinity).filter(el => el === null).length
}
// ์ ์ฅ๋ ์ขํ์ ๊ฐ๋ค์ null๋ก ๋ฐ๊ฟ
coords.forEach(a => {
arr[a[0]][a[1]] = null
arr[a[0]][a[1]+1] = null
arr[a[0]+1][a[1]] = null
arr[a[0]+1][a[1]+1] = null
})
// ๋ธ๋ก ๋ด๋ฆฌ๊ธฐ
for(let y = 0 ; y < arr.length ; y ++) {
for(let x = 0 ; x < arr[y].length ; x ++) {
// null ์ ๊ฐ์ ์ฐพ์์ ๋ ์ฒซ์งธ ์ค์ด ์๋๋ผ๋ฉด ์์ ๊ฐ๊ณผ ์๋ฆฌ๋ณ๊ฒฝ ( ๋ธ๋ก ๋ด๋ฆฌ๊ธฐ )
if(arr[y][x] === null && y !== 0) {
if(arr[y-1][x] !== null) {
arr[y][x] = arr[y-1][x]
arr[y-1][x] = null
y = y-1
x = -1
}
}
}
}
}
}