티스토리 뷰

programmers.co.kr/learn/courses/30/lessons/67256?language=swift

나의 풀이

import Foundation

func solution(_ numbers:[Int], _ hand:String) -> String {
   
    var hands: [String] = []
    var changedNum: [Int] = numbers
    
    // 처음 손의 좌표
    var leftRight: [[Int]] = [[3,0], [3,2]]
    
    for i in 0..<changedNum.count {
        if changedNum[i] == 0 {
            changedNum[i] = 11
        }
        
        let point: [Int] = [(changedNum[i]-1)/3, (changedNum[i]-1)%3]
        
        if changedNum[i]%3 == 1 {
            hands.append("L")
            leftRight[0] = point
        } else if changedNum[i]%3 == 0 {
            hands.append("R")
            leftRight[1] = point
        } else {
            if distance(a: leftRight[0], b: point) > distance(a: leftRight[1], b: point) {
                hands.append("R")
                leftRight[1] = point
            } else if distance(a: leftRight[0], b: point) < distance(a: leftRight[1], b: point) {
                hands.append("L")
                leftRight[0] = point
            } else {
                if hand == "right" {
                    hands.append("R")
                    leftRight[1] = point
                } else {
                    hands.append("L")
                    leftRight[0] = point
                }
            }
        }
    }
    return hands.joined()
}


func distance(a: [Int], b: [Int]) -> Int {
    return abs(b[0] - a[0]) + abs(b[1] - a[1])
}

배운 점

1. 거리가 관련되면 바로 좌표 사용하기

2. 좌표 만들 때 값 자세히 보기

댓글
공지사항