배열 회전시키기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
아주 간단한 코드지만 그래도 하나씩 정리해 볼게.
1. 함수 선언
- numbers: 정수 배열(숫자들이 쭉- 나열된 배열)
- direction: 문자열로 방향을 나타내기 ( "left" 또는 "right" 중 하나를 받도록!)
func solution(_ numbers:[Int], _ direction:String) -> [Int]
2. 결과를 담을 빈 배열 선언 (그릇으로 이해하면 쉽다!)
result라는 빈 배열을 선언 (이 배열은 회전시킨 후의 결과를 담는 곳)
var result:[Int] = []
3. 왼쪽으로 회전 ("left")
if direction == "left" {
for i in 1...numbers.count-1 {
result.append(numbers[i])
}
result.append(numbers[0])
}
- direction이 "left"라면, 이 코드 블록 실행하고,
- for i in 1...numbers.count-1 부분에서 배열의 첫 번째 숫자를 빼고 나머지 숫자들을 result에 차례로 추가. 예를 들어, numbers가 [1, 2, 3, 4]라면, [2, 3, 4]를 먼저 넣고, 그 다음 result.append(numbers[0])에서 원래 배열의 첫 번째 숫자를 result의 마지막에 추가. 1이 마지막으로 들어가서 [2, 3, 4, 1]이 된다.
4. 오른쪽으로 회전 ("right")
else {
result.append(numbers[numbers.count-1])
for i in 0...numbers.count-2 {
result.append(numbers[i])
}
}
- direction이 "right"라면, 이 코드 블록 실행하고,
- 먼저 result.append(numbers[numbers.count-1])로 numbers의 마지막 숫자를 result의 첫 번째로 넣어. 예를 들어, numbers가 [1, 2, 3, 4]라면, 4가 result의 첫 번째 요소가 된다.
- for i in 0...numbers.count-2에서 나머지 숫자들을 result에 순서대로 추가. 즉, [1, 2, 3]이 뒤따라서 [4, 1, 2, 3]이 된다.
5. 결과 반환
result 배열을 최종 결과로 반환. 이제 이 함수를 호출하면, 입력받은 배열이 방향에 따라 회전된 결과를 얻을 수 있다.
return result
이렇게 해서, 방향에 따라 숫자 배열을 한 칸씩 회전시키는 거야. left면 첫 번째 숫자가 맨 뒤로 가고, right면 마지막 숫자가 맨 앞으로 오는 식이지. 이해됐어? ჱ̒⸝⸝•̀֊•́⸝⸝)
다른 풀이 참조 ▽
import Foundation
func solution(_ numbers:[Int], _ direction:String) -> [Int] {
var nums = numbers
direction == "right" ? nums.insert(nums.removeLast(), at: 0) : nums.append(nums.removeFirst())
return nums
}
'iOS 앱 개발자 프로젝트 > 알고리즘 코드카타' 카테고리의 다른 글
[Algorithm] 길이에 따른 연산 (w/ Swift) (5) | 2024.09.15 |
---|---|
[Algorithm] 영어가 싫어요 (w/ Swift) (0) | 2024.09.15 |
[Algorithm] 옷가게 할인 받기 (0) | 2024.08.30 |
[Algorithm] OX 문제 (0) | 2024.05.06 |
[Algorithm] a와 b 출력하기 (w/ Swift & Python) (0) | 2024.04.22 |