[Swift] 프로그래머스(Lv2) - 키패드 누르기 (2020 카카오 인턴십 )

Kerri·2021년 3월 13일
0

코테

목록 보기
14/67

안녕하세요 :)

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
}
profile
안녕하세요 !

0개의 댓글