[プログラマ]アクセス長SWIFT
プログラマ-アクセス長
私の答え最初に11*11配列を作成した後,アクセスした箇所を1としてチェックし,1接続の個数を求めたが,1接続した箇所にアクセスしていないためDictionaryを用いて解いた. (x,y)->(x 2,y 2)の値をKey、(x,y)->(x 2,y 2)と(x 2,y 2)->(x,y 2)->(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
}
Reference
この問題について([プログラマ]アクセス長SWIFT), 我々は、より多くの情報をここで見つけました https://velog.io/@sainkr/프로그래머스-방문길이-Swiftテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol