๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธ (81302)

๋ฌธ์ œ๋งํฌ

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

1. P์˜ ์ƒํ•˜์ขŒ์šฐ์— P๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค. (PP (x))
2. O์˜ ์ƒํ•˜์ขŒ์šฐ์— P๊ฐ€ 2๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค. (POP (x))

checkUDLR : mark๊ฐ€ 'P'๋˜๋Š” 'O' ์ผ๋•Œ ํ•ด๋‹น mark์˜ ์ƒํ•˜์ขŒ์šฐ์— ์žˆ๋Š” mark๋ฅผ ์ €์žฅํ•œ ๋ฐฐ์—ด์—์„œ 'P'๊ฐ€ ๋ช‡๊ฐœ(๊ธธ์ด)์ธ์ง€ ์ €์žฅํ•œ ๋ณ€์ˆ˜

row.split.some()์€ 'P'์˜ ์ƒํ•˜์ขŒ์šฐ์— 'P'๊ฐ€ ์žˆ์„๋•Œ(checkUDLR > 0) ๋˜๋Š” 'O'์˜ ์ƒํ•˜์ขŒ์šฐ์— 'P'๊ฐ€ 2๊ฐœ์ด์ƒ ์žˆ์„๋•Œ(checkUDLR >= 2) true ๋ฐ˜ํ™˜

place.some()์€ row.split.some()์ด true์ผ๋•Œ 0, false์ผ๋•Œ 1 ๋ฐ˜ํ™˜

โŠ™ ๋ฐฐ์—ด.some()์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ์ฆ‰์‹œ ๋ฐฐ์—ด ์ˆœํšŒ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
function solution(places) {
    var answer = [];
    
    answer = places.map((place) => {
        return place.some((row, rowIdx) => 
            row.split('').some((mark, colIdx, rowArr) => {
            
                if(mark === 'X') return false
                
                const checkUDLR = [
                    (place[rowIdx - 1] || '')[colIdx],
                    (place[rowIdx + 1] || '')[colIdx],
                    rowArr[colIdx - 1] || '',
                    rowArr[colIdx + 1] || '',
                ].filter(mark => mark === "P").length
                
                return (mark === "P" && checkUDLR > 0) || (mark === "O" && checkUDLR >= 2)
            })
        ) ? 0 : 1
    })
    
    return answer;
}