The Swift Arcade Data Structures and Algorithms Bootcamp
라는 강의를 유데미에서 구매 후 공부내용을 정리하는 글입니다.
배열의 강점 3가지
1. 어떤 타입이든 넣을 수 있다.
2. 고정된 사이즈가 있다.- but 스위프트는 사이즈를 정하지는 않는다.
3. 랜덤하게 데이터에 접근이 가능하다.
How to insert?
넣고싶은 값을 copy up 한 후 넣는다
O(n)시간이 걸림
If Array is too big?
1. 기존 사이즈 2배의 배열을만든다.
2. Copy up
3. 기존 배열을 넣는다
4. 새로운 값을 넣는다
공식문서에 따르면
적당한 사이즈의 배열에 값을 추가하면 -> O(1)
But, 사이즈가 모자라 배열을 새로 만들게 되면 -> O(n)
-> 배열의 사이즈가 변경되는 것이 시간 복잡성을 올리기에 조심할 필요가 있다!
알고리즘 문제를 잘 푸는 방법
1.시간 복잡도나 이런 것을 고려하기 전에 일단 가능한 방법으로 풀어봐라!
2. 종이를 이용해서 써봐라
3. 예외사항을 작성해 봐라
4. 마지막으로 최적화 하라
1번 문제에 대한 내 답

정답
역시 정답이 로직이 가볍다는 느낌이듬..
내가 짠건 변수에 넣었다가 왔다갔다하는 답없는 로직... 알고리즘 공부 시작이니깐 잘 배워야 겠다!!!