[코딩] 문제풀기/Swift
[Swift] 프로그래머스 | 코딩테스트 연습 -> 2020 카카오 인턴십 -> 키패드 누르기
JabCho
2021. 2. 19. 07:28
728x90
반응형
SMALL
func solution(_ numbers:[Int], _ hand:String) -> String {
var result = ""
var left_x = 3
var left_y = 0
var right_x = 3
var right_y = 2
func find2darrIndex(_ number: Int) -> (Int, Int) {
let keypad = [["1", "2", "3"],
["4", "5", "6"],
["7", "8", "9"],
["*", "0", "#"]]
for j in 0..<4 {
for i in 0..<3 {
if (String(number) == keypad[j][i]){
return (j, i)
}
}
}
return (-1, -1)
}
for number in numbers {
let key = find2darrIndex(number)
let x = key.0
let y = key.1
if (y == 0){
result += "L"
left_x = x
left_y = y
}else if (y == 2){
result += "R"
right_x = x
right_y = y
}else{
let left_key = abs(left_x - x) + abs(left_y - y)
let right_key = abs(right_x - x) + abs(right_y - y)
if (left_key < right_key){
result += "L"
left_x = x
left_y = y
}else if (left_key > right_key){
result += "R"
right_x = x
right_y = y
}else{
if (hand == "right"){
result += "R"
right_x = x
right_y = y
}else if (hand == "left"){
result += "L"
left_x = x
left_y = y
}
}
}
}
return result
}
뭔가 하드코딩이 되어버린것 같다.
좀 더 콤펙트한 방법이 있는지 찾아봐야겠다.
728x90
반응형
LIST