안녕하세요 :)
https://programmers.co.kr/learn/courses/30/lessons/67256
이 문제 전에 Python으로 풀어봤었는데 이번엔 Swift로 한번 풀어봤습니다.
문제는 단순한데 …. if ~ if ~ 가 많은 문제입니다.
행을 1~4 로 하고 열을 1~3 으로 해서 풀었습니다.
import Foundation
func solution(_ numbers:[Int], _ hand:String) -> String {
var answer = ""
var right = [4, 3]
var left = [4, 1]
for var number in numbers {
if number == 0 {
number = 11
}
switch number {
case 1, 4, 7:
answer += "L"
let row: Int = number / 3 + 1
left = [row, 1]
case 3, 6, 9:
answer += "R"
let row: Int = number / 3
right = [row, 3]
default:
let row: Int = (number / 3) + 1
let numPos = [row, 2]
let right_dist = dist(right, numPos)
let left_dist = dist(left, numPos)
if right_dist > left_dist {
left = numPos
answer += "L"
} else if right_dist < left_dist {
right = numPos
answer += "R"
} else {
if hand == "right" {
right = numPos
answer += "R"
} else {
left = numPos
answer += "L"
}
}
}
}
return answer
}
func dist(_ handPos:[Int], _ numPos: [Int]) -> Int {
let distance = abs(handPos[0] - numPos[0]) + abs(handPos[1] - numPos[1])
return distance
}