일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 소수
- 데이터셋 만들기
- 프로그래머스 답
- SwiftUI
- coco 데이터셋
- supervisely
- swift 시작
- c언어
- Kakao
- Siwft
- swift 배열
- 머신러닝
- Python
- roboflow
- kakao 2018
- 카카오 2019
- swift
- 카카오 2021
- 이미지학습
- 문제
- 최솟값 만들기
- 카카오
- 카카오 2020
- fast.ai
- 날씨 앱
- 카카오 2018
- ios 개발 시작
- 파이썬
- 스위프트
- 프로그래머스
Archives
- Today
- Total
잡초의 일지
[Swift] 프로그래머스 | 코딩테스트 연습 -> 2020 카카오 인턴십 -> 키패드 누르기 본문
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
'[코딩] 문제풀기 > Swift' 카테고리의 다른 글
Comments