๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[์ฝ”๋“œํŠธ๋ฆฌ ์ฑŒ๋ฆฐ์ง€] 3์ฃผ์ฐจ - ์™„์ „ ํƒ์ƒ‰

by hyebin (Helia) 2023. 9. 25.
๋ฐ˜์‘ํ˜•

์ง€๋‚œ์ฃผ ๋Œ€๋น„ 248์  ์ƒ์Šน!! 800์ ์„ ํ–ฅํ•ด ํŒŒ์ดํŒ…!!๐Ÿ˜

 

 

 

https://www.codetree.ai/cote/14/problems/find-hidden-words-2/description

 

์ฝ”๋“œํŠธ๋ฆฌ | ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •์„

๊ตญ๊ฐ€๋Œ€ํ‘œ๊ฐ€ ๋งŒ๋“  ์ฝ”๋”ฉ ๊ณต๋ถ€์˜ ๊ฐ€์ด๋“œ๋ถ ์ฝ”๋”ฉ ์™•์ดˆ๋ณด๋ถ€ํ„ฐ ๊ฟˆ์˜ ์ง์žฅ ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ๊นŒ์ง€, ๊ตญ๊ฐ€๋Œ€ํ‘œ๊ฐ€ ์—„์„ ํ•œ ์ปค๋ฆฌํ˜๋Ÿผ์œผ๋กœ ์ค€๋น„ํ•ด๋ณด์„ธ์š”.

www.codetree.ai

 

์ˆจ์€ ๋‹จ์–ด ์ฐพ๊ธฐ 2

 

๋ฌธ์ œ

N๊ณผ M์ด ์ฃผ์–ด์ง€๊ณ  ๋˜ N * M์˜ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋ฉด ๊ฐ€๋กœ, ์„ธ๋กœ, ๋Œ€๊ฐ์„  ๋ฑกํ–ฅ์œผ๋กœ ๋„์ค‘์— ๋ฐฉํ–ฅ์„ ํ‹€์ง€ ์•Š๊ณ  ์ธ์ ‘ํ•˜์—ฌ ๋‚˜์˜ค๋Š” ‘LEE’์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ๋ณด์„ธ์š”.

 

์ž…๋ ฅ ํ˜•์‹

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ •์ˆ˜ N๊ณผ M์ด ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

  • 1 ≤ N, M ≤ 50

์ถœ๋ ฅ ํ˜•์‹

์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ชจ๋“  'LEE'์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

์˜ˆ์ œ 1

์ž…๋ ฅ:

4 6
TAEHGI
EELVWE
LEELSE
HBLUEL

 

์ถœ๋ ฅ: 

6

 

์˜ˆ์ œ ์„ค๋ช…

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 'LEE'์˜ ๊ฐœ์ˆ˜๋Š” ์ด 6๊ฐœ์ž…๋‹ˆ๋‹ค.

 

์ œํ•œ

์‹œ๊ฐ„์ œํ•œ: 1000ms
๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ: 80MB

 


ํ’€์ด

arr๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ํ•ด๋‹น ์นธ์ด "L"์ด๋ผ๋ฉด ํ•ด๋‹น ์นธ ์ฃผ๋ณ€์˜ ๊ฐ€๋กœ, ์„ธ๋กœ, ๋Œ€๊ฐ์„ ์— ๋Œ€ํ•ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค.

"E"๊ฐ€ ๋‚˜์˜ค๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰์„ ๊ณ„์† ์ง„ํ–‰ํ•œ๋‹ค. ์ฃผ์–ด์ง„ ๊ฒฉ์ž ํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ "E"๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์นธ์ด ๋‚˜์˜จ๋‹ค๋ฉด ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค.

ํ•˜๋‚˜์˜ ์นธ์— ๋Œ€ํ•œ ํƒ์ƒ‰์„ ๋ฉˆ์ท„์„ ๋•Œ, ํ•ด๋‹น ์นธ์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ ๋ฐฉํ–ฅ์œผ๋กœ "L", "E", "E"๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด result๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

์ฝ”๋“œ

let nm = readLine()!.split(separator: " ").map{Int(String($0))!}
let (n, m) = (nm[0], nm[1])
let dx = [1, 1, 1, -1, -1, -1, 0, 0]
let dy = [-1, 0, 1, -1, 0, 1, -1, 1]

var arr = [[String]]()
var result = 0

for _ in 0..<n {
    arr.append(readLine()!.map{String($0)})
}

for i in 0..<n {
    for j in 0..<m {
        if arr[i][j] == "L" {
            for idx in 0..<8 {
                var cnt = 1
                var x = i, y = j

                while true {
                    let nx = x+dx[idx]
                    let ny = y+dy[idx]

                    if nx < 0 || nx >= n || ny < 0 || ny >= m || arr[nx][ny] != "E" {
                        break
                    }
                    cnt += 1
                    x = nx
                    y = ny
                }

                if cnt >= 3 {
                    result += 1
                }
            }
        }
    }
}


print(result)
๋ฐ˜์‘ํ˜•