-
[programmers/Swift] 키패드 누르기 (2020 Kakao 인턴쉽)Archive/Questions 2022. 5. 9. 19:04728x90
programmers.co.kr - 코딩테스트연습 - Lv.1 - 2020 카카오 인턴쉽 - 키패드 누르기
Constraints :
- numbers 배열의 크기는 1 이상 1,000 이하입니다.
- numbers 배열 원소의 값은 0 이상 9 이하인 정수입니다.
- hand는 "left" 또는 "right" 입니다.
- "left"는 왼손잡이, "right"는 오른손잡이를 의미합니다.
- 왼손 엄지손가락을 사용한 경우는 L, 오른손 엄지손가락을 사용한 경우는 R을 순서대로 이어붙여 문자열 형태로 return 해주세요.
// // Created by Yongwoo Marco on 2022/05/08. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ numbers:[Int], _ hand:String) -> String { let table = [ 1: (0, 3), 2: (1, 3), 3: (2, 3), 4: (0, 2), 5: (1, 2), 6: (2, 2), 7: (0, 1), 8: (1, 1), 9: (2, 1), 0: (1, 0) ] var left = (0, 0), right = (2, 0) var result = "" func pick(_ hand: String, _ next: Int) { if hand == "L" { result.append("L") left = table[next]! } else { result.append("R") right = table[next]! } } func distanceCheck(_ now: (Int, Int), end: (Int, Int)) -> Int { return abs(now.0 - end.0) + abs(now.1 - end.1) } numbers.forEach { next in if [1, 4, 7].contains(next) { pick("L", next) } else if [3, 6, 9].contains(next) { pick("R", next) } else { let leftDistance = distanceCheck(left, end: table[next]!) let rightDistance = distanceCheck(right, end: table[next]!) if leftDistance > rightDistance { pick("R", next) } else if leftDistance < rightDistance { pick("L", next) } else { hand == "left" ? pick("L", next) : pick("R", next) } } } return result } print(solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] , "right")) // "LRLLLRLLRRL" print(solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2], "left")) // "LRLLRRLLLRR" print(solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], "right")) // "LLRLLRLLRL"
How I tried this :
enum 까지는 오바같아서 바로 비교해서 풀었다.거리에 대해 고민했는데 그냥 두점거리 구하는 방법의 크기로 비교해 보았는 데 다행히 통과
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] [1차]비밀지도 (2018 Kakao Blind Recruitment) (0) 2022.05.09 [programmers/Swift] 나머지가 1이 되는 수 찾기 (0) 2022.05.09 [programmers/Swift] 기능 개발 (0) 2022.05.09 [programmers/Swift] 없는 숫자 더하기 (0) 2022.05.08 [programmers/Swift] 약수의 개수와 덧셈 (0) 2022.05.08