좌표를 다룰 때에는 좌표 열과 행을 신경써서 해결해야 합니다

 

초기 문제를 해결하기 못했던 잘못된 좌표값

var buttons: [(Int,Int)] = [(1,3), (0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (2,0), (2,1), (2,2)]

 

이후 좌표값을 제대로 수정하여 해결된 코드

import Foundation

func solution(_ numbers:[Int], _ hand:String) -> String {
    let h = hand.first!.uppercased()
    var left = (0,3)
    var right = (2,3)
    var result: [String] = []
    var buttons: [(Int,Int)] = [(1,3), (0,0), (1,0), (2,0), (0,1), (1,1), (2,1), (0,2), (1,2), (2,2)]
    for i in numbers {
        let l = abs(left.0 - buttons[i].0) + abs(left.1 - buttons[i].1)
        let r = abs(right.0 - buttons[i].0) + abs(right.1 - buttons[i].1)
        print(l,r, left, right)
        if i == 2 || i == 5 || i == 8 || i == 0 {
            if l == r {
                result.append(h)
                if hand == "right" {
                    right = buttons[i]
                } else if hand == "left" {
                    left = buttons[i]
                }
            } else if l > r {
                result.append("R")
                right = buttons[i]
            } else if l < r {
                result.append("L")
                left = buttons[i]
            }
        } else if i == 1 || i == 4 || i == 7 {
            result.append("L")
            left = buttons[i]
        } else if i == 3 || i == 6 || i == 9 {
            result.append("R")
            right = buttons[i]
        }
    }
    
    return result.joined()
}

 

 

ytw_developer