아이디어
왼손과 오른손을 결정짓는 규칙을 생각하지 못해서 검색으로 힌트를 얻었다. 이중 배열로 그래프를 만든 후 한 칸씩만 움직일 수 있다는 점을 이용해서 풀 생각이었지만 레벨 1이라는 점과 인턴 문제라는 점에서 조금 더 쉽게 풀 수 있을 거라는 걸 예상하지 못했다. 테스트 케이스를 두어 개 더 작성했다면 혼자 풀 수도 있었을 거 같다.
해답
import Foundation
func solution(_ numbers:[Int], _ hand:String) -> String {
var locationLeft = 10
var locationRight = 12
var result: String = ""
for number in numbers {
var number = number
if number == 1 || number == 4 || number == 7 {
result += "L"
locationLeft = number
} else if number == 3 || number == 6 || number == 9 {
result += "R"
locationRight = number
} else {
if number == 0 {
number = 11
}
let leftDistance = abs(number - locationLeft) / 3 + abs(number - locationLeft) % 3
let rightDistance = abs(number - locationRight) / 3 + abs(number - locationRight) % 3
if leftDistance < rightDistance {
result += "L"
locationLeft = number
} else if leftDistance > rightDistance {
result += "R"
locationRight = number
} else {
if hand == "right" {
result += "R"
locationRight = number
} else {
result += "L"
locationLeft = number
}
}
}
}
return result
}'Algorithm > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 파이썬] 숫자 변환하기 (0) | 2023.02.23 |
|---|---|
| [프로그래머스 스위프트] 프린터 (0) | 2022.09.21 |
| [프로그래머스 스위프트] 시저암호 (0) | 2022.09.15 |
| [프로그래머스 스위프트] 최소직사각형 (0) | 2022.09.15 |
| [프로그래머스 스위프트] 숫자 문자열과 영단어 (0) | 2022.09.13 |