정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 3 ≤ numbers의 길이 ≤ 20
- direction은 "left" 와 "right" 둘 중 하나입니다.
입출력 예
numbers direction result [1, 2, 3] "right" [3, 1, 2] [4, 455, 6, 4, -1, 45, 6] "left" [455, 6, 4, -1, 45, 6, 4]
func solution(_ numbers:[Int], _ direction:String) -> [Int] {
var arr = numbers
if direction == "left" {
arr.append(Int(arr.first))
arr.removeFirst()
} else if direction == "right" {
arr.insert(Int(arr.last), at: 0)
arr.removeLast()
}
return arr
}
Optional
처리 누락: arr.first
와 arr.last
는 Optional(Int?)
타입이므로 직접적으로 Int()
로 변환 불가Int()
는 BinaryInteger
를 요구하지만, Int?
는 이에 부합하지 않았다.arr.removeFirst
와 arr.removeLast
에 빈 괄호 ()
누락함 ㅠㅠif let
또는 guard let
)하지 않음.func solution(_ numbers: [Int], _ direction: String) -> [Int] {
var arr = numbers
if direction == "left" {
if let firstElement = arr.first {
arr.append(firstElement) // 첫 번째 요소를 뒤에 추가
arr.removeFirst() // 첫 번째 요소 삭제
}
} else if direction == "right" {
if let lastElement = arr.last {
arr.insert(lastElement, at: 0) // 마지막 요소를 앞에 추가
arr.removeLast() // 마지막 요소 삭제
}
}
return arr
}
if let
을 사용하여 Optional
값을 안전하게 언래핑Optional
값은 반드시 처리해야 하며, 강제 언래핑(!
)은 런타임 오류를 일으킬 수 있음append
, insert
, removeFirst
, removeLast
)는 배열을 직접 수정Swift의 타입 안정성: Optional 타입(Int?
)과 일반 타입(Int
) 간의 변환은 명시적으로 처리해야 한다.
코드 가독성: 안전한 Optional 언래핑을 통해 코드의 신뢰성을 높여야 한다.
함수 호출: 빈 괄호 ()
는 생략할 수 없으며, 함수 호출과 속성 참조를 명확히 구분해야 한다.