MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ณต์› ์‚ฐ์ฑ… ๋ณธ๋ฌธ

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๊ณต์› ์‚ฐ์ฑ…

MUKER 2023. 5. 12. 12:53
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


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

func solution(_ park:[String], _ routes:[String]) -> [Int] {
    var now = (0,0)
    let map = park.map {$0.map {$0}}
    
loop1: for (iindex,i) in park.enumerated() {
    for (jindex,j) in i.enumerated() {
        if j == "S" {
            now = (iindex,jindex)
            break loop1
        }
    }
}
    
loop2: for route in routes {
    let r = route.split(separator: " ")
    let way = r[0]
    var width = Int(r[1])!
    var temp = now
    
    while width > 0 {
        var move = (0,0)
        
        switch way {
        case "N": move = (-1,0)
        case "S": move = (1,0)
        case "W": move = (0,-1)
        case "E": move = (0,1)
        default : break
        }
        
        let new = (temp.0+move.0,temp.1+move.1)
        
        guard new.0 >= 0 && new.0 < map.count && new.1 >= 0 && new.1 < map[0].count else { continue loop2 }
        guard map[new.0][new.1] != "X" else { continue loop2 }
        
        temp = new
        width -= 1
    }
    now = temp
}
    return [now.0,now.1]
}