티스토리 뷰
programmers.co.kr/learn/courses/30/lessons/67256?language=swift
나의 풀이
import Foundation
func solution(_ numbers:[Int], _ hand:String) -> String {
var hands: [String] = []
var changedNum: [Int] = numbers
// 처음 손의 좌표
var leftRight: [[Int]] = [[3,0], [3,2]]
for i in 0..<changedNum.count {
if changedNum[i] == 0 {
changedNum[i] = 11
}
let point: [Int] = [(changedNum[i]-1)/3, (changedNum[i]-1)%3]
if changedNum[i]%3 == 1 {
hands.append("L")
leftRight[0] = point
} else if changedNum[i]%3 == 0 {
hands.append("R")
leftRight[1] = point
} else {
if distance(a: leftRight[0], b: point) > distance(a: leftRight[1], b: point) {
hands.append("R")
leftRight[1] = point
} else if distance(a: leftRight[0], b: point) < distance(a: leftRight[1], b: point) {
hands.append("L")
leftRight[0] = point
} else {
if hand == "right" {
hands.append("R")
leftRight[1] = point
} else {
hands.append("L")
leftRight[0] = point
}
}
}
}
return hands.joined()
}
func distance(a: [Int], b: [Int]) -> Int {
return abs(b[0] - a[0]) + abs(b[1] - a[1])
}
배운 점
1. 거리가 관련되면 바로 좌표 사용하기
2. 좌표 만들 때 값 자세히 보기
'Algorithm' 카테고리의 다른 글
[Swift 알고리즘] 프로그래머스 Lv1 실패율 (0) | 2021.04.27 |
---|---|
[Swift 알고리즘] 프로그래머스 Lv1 비밀지도 (0) | 2021.04.27 |
[Swift 알고리즘] 프로그래머스 Lv1 로또의 최고 순위와 최저 순위 (0) | 2021.04.27 |
[Swift 알고리즘] 프로그래머스 Lv1 소수만들기 (0) | 2021.04.27 |
[Swift 알고리즘] 프로그래머스 Lv1 음양 더하기 (0) | 2021.04.27 |
댓글
공지사항