샘성의 iOS 개발 일지

[코딩테스트 입문] 배열 뒤집기 본문

Algorithm/프로그래머스

[코딩테스트 입문] 배열 뒤집기

SamusesApple 2023. 5. 5. 10:34
728x90

문제 설명:

  머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

 

내 풀이:

import Foundation

func solution(_ num_list: [Int]) -> [Int] {
    return num_list.reversed()
}

 

 

 

회고:

  reverse()는 주어진 배열에 접근하여 그 공간 안에서 순서를 바꿔버리는, mutating function이기 때문에 시간복잡도가 O(n)이다.

반대로, reversed()는 기존의 배열을 ReversedCollection으로 감싸 새로운 값으로 리턴하는, non-mutating function으로 시간복잡도가 O(1)이다. (주어진 배열을 뒤집은 값만 뱉을 뿐, 기존 배열의 메모리공간에 접근하지 않음)

 

사실 여태 코딩테스트를 풀 때 시간 복잡도를 크게 고려하지 않고 풀이에 급급했다. 푸는 것이 물론 가장 중요하지만, 더 효율적인 풀이가 무엇인지 고려하는 습관도 들여야겠다. 

728x90