https://programmers.co.kr/learn/courses/30/lessons/67256
func solution(_ numbers:[Int], _ hand:String) -> String {
var left = (1,4)
var right = (3,4)
var answer = ""
func dis(_ number : (Int,Int),_ standard : (Int,Int)) -> Int {
let distence = abs(number.0 - standard.0) + abs(number.1 - standard.1)
return distence
}
for i in numbers {
var number = i
if number == 0 {
number = 11
}
switch number {
case 3,6,9:
let row = number / 3
right = (3,row)
answer += "R"
case 1,4,7:
let row = number / 3 + 1
left = (1,row)
answer += "L"
default:
let row = 1 + (number / 3)
let number = (2,row)
let gap_right = dis(number, right)
let gap_left = dis(number, left)
if gap_right > gap_left {
answer += "L"
left = number
} else if gap_right < gap_left{
answer += "R"
right = number
} else {
if hand == "right" {
answer += "R"
right = number
} else {
answer += "L"
left = number
}
}
}
}
return answer
}