Programming Language/Swift
[프로그래머스][Lv. 1] 키패드 누르기 Swift 풀이
myungsup1250
2022. 3. 14. 15:28
https://programmers.co.kr/learn/courses/30/lessons/67256
코딩테스트 연습 - 키패드 누르기
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"
programmers.co.kr
풀이는 추후에 차차 올리도록 하겠습니다...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import Foundation
func solution(_ numbers:[Int], _ hand:String) -> String {
let isLeft: Bool = (hand == "left" ? true : false)
var leftTh: Int = -1, rightTh: Int = -2
let coord: [Int:String] = [1:"0 0", 2:"0 1", 3:"0 2", 4:"1 0", 5:"1 1", 6:"1 2", 7:"2 0", 8:"2 1", 9:"2 2", 0:"3 1", -1:"3 0", -2:"3 2"]
var answer: String = "", thumb: String = ""
for num in numbers {
switch num {
case 1, 4, 7:
leftTh = num
thumb = "L"
case 3, 6, 9:
rightTh = num
thumb = "R"
case 2, 5, 8, 0:
if leftTh == -1 && rightTh == -2 {
if isLeft {
leftTh = num
thumb = "L"
} else {
rightTh = num
thumb = "R"
}
} else {
let numPos: [Int] = coord[num]!.components(separatedBy: " ").map{Int($0)!}
let leftPos: [Int] = coord[leftTh]!.components(separatedBy: " ").map{Int($0)!}
let rightPos: [Int] = coord[rightTh]!.components(separatedBy: " ").map{Int($0)!}
let leftDist: Int = abs(numPos[0] - leftPos[0]) + abs(numPos[1] - leftPos[1])
let rightDist: Int = abs(numPos[0] - rightPos[0]) + abs(numPos[1] - rightPos[1])
if leftDist > rightDist {
rightTh = num
thumb = "R"
} else if leftDist < rightDist {
leftTh = num
thumb = "L"
} else { // leftDist == rightDist
if isLeft {
leftTh = num
thumb = "L"
} else {
rightTh = num
thumb = "R"
}
}
}
default:
return "ERROR"
}
answer += thumb
}
return answer
}
|
cs |