새소식

인기 검색어

프로그래머스/Lv.1

[Swift] 공원 산책

  • -
import Foundation

func moveCol(_ park: [[String]], _ x: Int, _ start: Int, _ finish: Int) -> Bool {
    if start < 0 || park[0].count <= finish {
        return false
    }

    for j in start...finish {
        if park[x][j] == "X" {
            return false
        }
    }
    
    return true
}

func moveRow(_ park: [[String]], _ y: Int, _ start: Int, _ finish: Int) -> Bool {
    if start < 0 || park.count <= finish {
        return false
    }
    
    for i in start...finish {
        if park[i][y] == "X" {
            return false
        }
    }
    
    return true
}


func solution(_ park:[String], _ routes:[String]) -> [Int] {
    var x = 0
    var y = 0
    
    let park: [[String]] = park.enumerated().map { (i, str) in
        str.enumerated().map { (j, char) in
            if char == "S" {
                x = i
                y = j
            }
            return String(char)
        }
    }
    
    for route in routes {
        switch route.first! {
        case "E":
            if moveCol(park, x, y, y + route.last!.wholeNumberValue!) {
                y += route.last!.wholeNumberValue!
            }
        case "W":
            if moveCol(park, x, y - route.last!.wholeNumberValue!, y) {
                y -= route.last!.wholeNumberValue!
            }
        case "N":
            if moveRow(park, y, x - route.last!.wholeNumberValue!, x) {
                x -= route.last!.wholeNumberValue!
            }
        case "S":
            if moveRow(park, y, x, x + route.last!.wholeNumberValue!) {
                x += route.last!.wholeNumberValue!
            }
        default:
            continue
        }

    }
    
    return [x,y]
}

 

'프로그래머스 > Lv.1' 카테고리의 다른 글

[Swift] 바탕화면 정리  (0) 2023.04.25
[Swift] 달리기 경주  (0) 2023.04.25
[Swift] 덧칠하기  (0) 2023.04.15
[Swift] 카드뭉치  (0) 2023.04.14
[Swift] 추억점수  (0) 2023.04.14
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.