swift 키패드 누르기

quokka·2022년 5월 18일
0

코딩테스트

목록 보기
45/63

1) *=10, 0=11, #=12로 생각하고 접근했습니다.
2) 번호의 상,하,좌,우의 거리는 1이다. 설명을 잘 읽어보면 번호의 대각선의 거리는 2이므로 대각선의길이를 피타고라스의정리로 구해줄 필요가 없다.
3) 눌러야할 번호와 눌러져있는 왼쪽,오른쪽 번호들의 거리는 | 눌러져야하는 번호 - 눌러져있는번호(왼,오) |를 3으로 나눈 나머지와 몫이다.
4) 위에서 구한 거리가 같다면 왼손잡이 오른손잡이를 판단해준후 값을 구하면된다.

func solution(_ numbers:[Int], _ hand:String) -> String {
    var result = ""
    var leftHand = 10
    var rightHand = 12
    for number in numbers {
        
        switch number {
        case 1,4,7:
            result.append("L")
            leftHand = number
        case 2,5,8,0:
            var number = number
            if number == 0 {
                number = 11
            }

            let leftDistance = abs(number-leftHand)/3 + abs(number-leftHand)%3
            let rightDistance = abs(number-rightHand)/3 + abs(number-rightHand)%3
            if rightDistance < leftDistance {
                result.append("R")
                rightHand = number
            } else if rightDistance == leftDistance {
                if hand == "right" {
                    result.append("R")
                    rightHand = number
                } else { // hand == "left"
                    result.append("L")
                    leftHand = number
                }
            } else { // leftDistance < rightDistance
                result.append("L")
                leftHand = number
            }
        case 3,6,9:
            result.append("R")
            rightHand = number
        default: break
        }
    }
    return result
}
profile
iOS를 공부하는 개발자입니다~ㅎㅎ

0개의 댓글

관련 채용 정보