일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ESXi 업데이트
- 방송통신대학교 대학원 정보과학과
- openebs
- 프로그래머스
- Code Jam 2022
- 정보과학과
- 2022
- on-prem
- ingress-nginx
- GitLab
- Python
- hackerrank
- 3D PRINTING
- 코딩테스트
- nestedlists
- 파이썬
- K8S
- 하늘과 바람과 별과 시
- secondlowestgrade
- Qualification Round
- 해커랭크
- Kubernetes
- Code Jam
- 하늘과 바람과 별과 詩
- swift
- LEVEL 2
- MySQL
- 방통대 대학원 정보과학과
- C++
Archives
- Today
- Total
공대생의 비망록
[프로그래머스][Lv. 1] 키패드 누르기 Swift 풀이 본문
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 |
'Programming Language > Swift' 카테고리의 다른 글
[프로그래머스][Lv. 1] 없는 숫자 더하기 Swift 풀이 (0) | 2022.03.14 |
---|---|
[프로그래머스][Lv. 1] 크레인 인형뽑기 게임 Swift 풀이 (0) | 2022.03.14 |
[프로그래머스][Lv. 1] 숫자 문자열과 영단어 Swift 풀이 (0) | 2022.03.14 |
[프로그래머스][Lv. 1] 신규 아이디 추천 Swift 풀이 (0) | 2022.03.14 |
[프로그래머스][Lv. 1] 로또의 최고 순위와 최저 순위 Swift 풀이 (0) | 2022.03.14 |
Comments