본문 바로가기

iOS 앱 개발자 프로젝트/알고리즘 코드카타

[Algorithm] 배열 회전시키기(w/ Swift)

배열 회전시키기
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

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
}