[프로그래머스] 방문길이 Swift

승아·2021년 4월 20일
0

프로그래머스 - 방문길이

나의 풀이

  • 처음에 11 * 11 배열을 만들고 방문한 곳을 1로 체크해 1이 연결된 갯수를 구해보았는데 1이 연결된 곳을 방문하지 않았을 경우가 있기 때문에 Dictionary를 활용해 풀었다.
  • (x,y)->(x2,y2)값을 Key로 활용하였고 (x,y)->(x2,y2)와(x2,y2)->(x,y)는 같기 때문에 중복을 체크하며 풀어보았다.
import Foundation

func solution(_ dirs:String) -> Int {
    
    let direction = dirs.map{ $0 }
    
    var arr: [String:Int] = [:]
    
    var x = 5
    var y = 5
    for i in direction{
        let x2 = x
        let y2 = y
        if i == "U"{
            x -= 1
        }else if i == "D"{
            x += 1
        }else if i == "L"{
            y -= 1
        }else if i == "R"{
            y += 1
        }
        if x >= 0 && x <= 10 && y >= 0 && y <= 10 {
            // 방문한 곳 체크
            if arr["\(x2)\(y2)->\(x)\(y)"] == nil && arr["\(x)\(y)->\(x2)\(y2)"] == nil{
                arr["\(x)\(y)->\(x2)\(y2)"] = 1
            }
           
        }else{
            if x < 0 {
                x = 0
            }
            if x > 10 {
                x = 10
            }
            if y < 0{
                y = 0
            }
            if y > 10{
                y = 10
            }
        }
    }
    
    return arr.count
}

0개의 댓글