MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 5212๋ฒˆ: ์ง€๊ตฌ ์˜จ๋‚œํ™” ๋ณธ๋ฌธ

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

[swift] ๋ฐฑ์ค€ - 5212๋ฒˆ: ์ง€๊ตฌ ์˜จ๋‚œํ™”

MUKER 2023. 5. 19. 11:44
 

5212๋ฒˆ: ์ง€๊ตฌ ์˜จ๋‚œํ™”

์ฒซ์งธ ์ค„์— ์ง€๋„์˜ ํฌ๊ธฐ R๊ณผ C (1 ≤ R, C ≤ 10)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ R๊ฐœ ์ค„์—๋Š” ํ˜„์žฌ ์ง€๋„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 


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

let move = [(0,1),(0,-1),(1,0),(-1,0)]
var valueY = (Int.max,-1)
var valueX = (Int.max,-1)

let yx = readLine()!.split(separator: " ").map { Int($0)! }
var map = [[String]]()
var map1 = {
    var arr = [[String]]()
    for _ in 0..<yx[0] {
        arr.append(readLine()!.map { String($0) })
    }
    return arr
}


var newMap = map

for y in 0..<yx[0] {
    for x in 0..<yx[1] {
        if map[y][x] == "X" {
            var count = 0
            for i in move {
                let ny = y+i.0
                let nx = x+i.1
                guard ny >= 0 && ny < yx[0] && nx >= 0 && nx < yx[1] else { continue }
                guard map[ny][nx] == "X" else { continue }
                count += 1
            }
            if count > 1 {
                valueY.0 = min(valueY.0,y)
                valueY.1 = max(valueY.1,y)
                valueX.0 = min(valueX.0,x)
                valueX.1 = max(valueX.1,x)
            } else {
                newMap[y][x] = "."
            }
            
        }
    }
}

for i in valueY.0...valueY.1 {
    print(newMap[i][valueX.0...valueX.1].joined())
}

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

1. ์ž…๋ ฅ๋งŒ ๋ฐ›์•„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š” map๊ณผ ๋ฌผ์— ์ž ๊ธฐ๋Š” ์„ฌ์„ ๊ทธ๋ ค์ฃผ๋Š” newMap์œผ๋กœ ๋‘๊ฐœ์˜ ๋ฐฐ์—ด์„ ์ค€๋น„ํ•œ๋‹ค.
2. map์„ ๋Œ๋ฉด์„œ '์„ฌ'์ผ ๋•Œ '์„ฌ'์ฃผ๋ณ€์— ์„ฌ์ด 2๊ฐœ์ด์ƒ ์žˆ๋‹ค๋ฉด ์ž ๊ธฐ์ง€ ์•Š๋Š” ์„ฌ์ด ๋˜๊ณ , ์ž ๊ธฐ์ง€ ์•Š๋Š” ์„ฌ๋“ค์˜ ์ตœ์†Œy๊ฐ’, ์ตœ๋Œ€y๊ฐ’, ์ตœ์†Œx๊ฐ’, ์ตœ๋Œ€x๊ฐ’์— ๋น„๊ต ํ•˜์—ฌ ๋„ฃ์–ด์ค€๋‹ค.
3. ์ž ๊ธฐ๋Š” ์„ฌ์€ newMap์— ๋ฐ”๋‹ค๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
4. ์ตœ์†Œy๊ฐ’, ์ตœ๋Œ€y๊ฐ’, ์ตœ์†Œx๊ฐ’, ์ตœ๋Œ€x๊ฐ’ ์„ ์ด์šฉํ•ด newMap์—์„œ ๋ฐฐ์—ด์„ ๊บผ๋‚ด์ค€๋‹ค.