MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 10709๋ฒˆ: ๊ธฐ์ƒ์บ์Šคํ„ฐ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€ - 10709๋ฒˆ: ๊ธฐ์ƒ์บ์Šคํ„ฐ

MUKER 2023. 7. 24. 09:26
๋ฌธ์ œ ๋งํฌ
 

10709๋ฒˆ: ๊ธฐ์ƒ์บ์Šคํ„ฐ

์ถœ๋ ฅ์€ H ํ–‰์œผ๋กœ, ๊ฐ ํ–‰์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ W ๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ถœ๋ ฅ์˜ i ๋ฒˆ์งธ ํ–‰ j ๋ฒˆ์งธ ์ •์ˆ˜ (1 โ‰ฆ i โ‰ฆ H, 1 โ‰ฆ j โ‰ฆ W) ๋Š”, ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„ํ›„์— ์ฒ˜์Œ์œผ๋กœ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋œจ๋Š”์ง€๋ฅผ ํ‘œ์‹œ

www.acmicpc.net


๋ฌธ์ œ

JOI์‹œ๋Š” ๋‚จ๋ถ๋ฐฉํ–ฅ์ด H ํ‚ฌ๋กœ๋ฏธํ„ฐ, ๋™์„œ๋ฐฉํ–ฅ์ด W ํ‚ฌ๋กœ๋ฏธํ„ฐ์ธ ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค. JOI์‹œ๋Š” ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ 1ํ‚ฌ๋กœ๋ฏธํ„ฐ์ธ H × W ๊ฐœ์˜ ์ž‘์€ ๊ตฌ์—ญ๋“ค๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค. ๋ถ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ i ๋ฒˆ์งธ, ์„œ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ j ๋ฒˆ์งธ์— ์žˆ๋Š” ๊ตฌ์—ญ์„ (i, j) ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

๊ฐ ๊ตฌ์—ญ์˜ ํ•˜๋Š˜์—๋Š” ๊ตฌ๋ฆ„์ด ์žˆ์„ ์ˆ˜๋„, ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ชจ๋“  ๊ตฌ๋ฆ„์€ 1๋ถ„์ด ์ง€๋‚  ๋•Œ๋งˆ๋‹ค 1ํ‚ฌ๋กœ๋ฏธํ„ฐ์”ฉ ๋™์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์˜ค๋Š˜์€ ๋‚ ์”จ๊ฐ€ ์ •๋ง ์ข‹๊ธฐ ๋•Œ๋ฌธ์— JOI์‹œ์˜ ์™ธ๋ถ€์—์„œ ๊ตฌ๋ฆ„์ด ์ด๋™ํ•ด ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ง€๊ธˆ ๊ฐ ๊ตฌ์—ญ์˜ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ธฐ์ƒ์ฒญ์—์„œ ์ผํ•˜๊ณ  ์žˆ๋Š” ์—ฌ๋Ÿฌ๋ถ„์€ ๊ฐ ๊ตฌ์—ญ์— ๋Œ€ํ•ด์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„๋’ค ์ฒ˜์Œ์œผ๋กœ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์˜ค๋Š”์ง€๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ผ์„ ๋งก์•˜๋‹ค.

๊ฐ ๊ตฌ์—ญ์— ๋Œ€ํ•ด์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„๋’ค ์ฒ˜์Œ์œผ๋กœ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์˜ค๋Š”์ง€๋ฅผ ๊ตฌํ•˜์—ฌ๋ผ.

์ž…๋ ฅ

์ž…๋ ฅ์€ 1 + H ํ–‰์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ฒซ ๋ฒˆ์งธ ํ–‰์—๋Š” ์ •์ˆ˜ H, W (1 โ‰ฆ H โ‰ฆ 100, 1 โ‰ฆ W โ‰ฆ 100) ๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ์ฃผ๊ณ  ์ฃผ์–ด์ง„๋‹ค. ์ด๊ฒƒ์€ JOI์‹œ๊ฐ€ H × W ๊ฐœ์˜ ์ž‘์€ ๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ด์–ด์ง„ H ๊ฐœ์˜ ํ–‰์˜ i๋ฒˆ์งธ ํ–‰ (1 โ‰ฆ i โ‰ฆ H) ์—๋Š” W๋ฌธ์ž์˜ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. W ๊ฐœ์˜ ๋ฌธ์ž ์ค‘ j๋ฒˆ์งธ ๋ฌธ์ž (1 โ‰ฆ j โ‰ฆ W) ๋Š”, ๊ตฌ์—ญ (i, j) ์— ์ง€๊ธˆ ๊ตฌ๋ฆ„์ด ๋–  ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ตฌ๋ฆ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์˜์–ด ์†Œ๋ฌธ์ž 'c' ๊ฐ€, ๊ตฌ๋ฆ„์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ž '.' ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ถœ๋ ฅ์€ H ํ–‰์œผ๋กœ, ๊ฐ ํ–‰์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ W ๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ถœ๋ ฅ์˜ i ๋ฒˆ์งธ ํ–‰ j ๋ฒˆ์งธ ์ •์ˆ˜ (1 โ‰ฆ i โ‰ฆ H, 1 โ‰ฆ j โ‰ฆ W) ๋Š”, ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„ํ›„์— ์ฒ˜์Œ์œผ๋กœ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋œจ๋Š”์ง€๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ๋‹จ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋–  ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ์—๋Š” 0์„, ๋ช‡ ๋ถ„์ด ์ง€๋‚˜๋„ ๊ตฌ๋ฆ„์ด ๋œจ์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ


์„ฑ๊ณต ํ’€์ด

let HW = readLine()!.split { $0 == " " }.map { Int($0)! }, H = HW[0], W = HW[1]

for _ in 0..<H {
    var w = Array(readLine()!)
    var result = Array(repeating: -1, count: W)
    var count = 0
    while !w.allSatisfy({ $0 == "." }) {
        for i in 0..<W {
            if w[i] == "c" && result[i] == -1 {
                result[i] = count
            }
        }
        count += 1
        w.insert(".", at: 0)
        w.removeLast()
    }
    print(result.map { String($0) }.joined(separator: " "))
}

ํ’€์ด ํ‚ค์›Œ๋“œ

  • H X W ํฌ๊ธฐ์˜ ๊ฐ๊ฐ -1์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ์ด ๋ฐฐ์—ด์€ ์ •๋‹ต์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฐ์—ด๋กœ ๊ตฌ๋ฆ„์ด ์ง€๋‚˜์น˜์ง€ ์•Š์œผ๋ฉด -1 ๊ทธ๋Œ€๋กœ ์žˆ๊ฒŒ ๋˜์ง€๋งŒ ๊ตฌ๋ฆ„์ด ์ง€๋‚˜๊ฐ„ ์ž๋ฆฌ๋Š” ๊ตฌ๋ฆ„์ด ๋„์ฐฉํ•œ ์‹œ๊ฐ„์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.