👨🏻‍💻iOS 공부/Swift_CS공부

    [Swift] Dictionary 파헤치기

    https://developer.apple.com/documentation/swift/dictionary Apple Developer Documentation developer.apple.com Dictionary란? Key-value 쌍의 원소로 이루어진 collection을 말한다 Declaration @frozen struct Dictionary where Key : Hashble 이전에 Optional의 구조를 살펴볼 때도 @frozen 키워드를 본 적이 있다. Future versions of the library can’t change the declaration by adding, removing, or reordering an enumeration’s cases or a structure’..

    [Swift] Binary Search Tree란? (1)

    Binary Search Tree는 (하나의 node가 최대 2개의 자식을 갖는) 트리가 항상 정렬되도록 추가/삭제를 수행하는 binary tree의 한 종류이다. "항상 정렬되어 있다"의 의미는 무엇일까? 위 트리를 봐보자. - parent node : 7 - left child : 2 - right child : 10 node를 기준으로 좌측의 키는 항상 작아야 하며, 우측의 키는 항상 커야한다. 그렇기에 각각의 child들은 정렬되어 있을 수 밖에 없는 것이다. (child의 child 또한 마찬가지) Insert 그렇다면 기존 트리에 새로운 node를 추가할 때는 어떻게 해야할까? 먼저 새로운 node 값을 추가할 때 roott node(최상단)의 값과 비교한다. 만약 새로 추가하고자 하는 값이 ..

    [Swift] Binary Search란?

    Binary Search란 배열에서 원하는 값을 찾기위한 방법 중 하나로, Linear Search와는 차이가 있다. 뜬금없이 Linear Search는 무엇이고? Binary Search란 무엇일까? 먼저 Linear Search를 이해하기 위해 간단한 예시를 통해 이해해보자. 만약 아래 배열에서 "20"이란 값을 찾고 싶다면 어떻게 찾을 수 있을까? [1,40,7,22,33,20,10,29,25,30,17,5] 보통 사람이라면 가장 좌측에서부터 하나하나 값을 봐가며, 내가 원하는 값인지 비교해 나아가는 경우가 많다. 0번째 요소인 1은 아니기에 패스, 1번째 요소인 40은 또 아니니 패스 ... 쭉 진행하며 찾는 방식이다. [1,40,7,22,33,20,10,29,25,30,17,5] -> * 이처럼..

    [Swift] Insertion Sort란?

    목표는 배열을 내림차순 혹은 오름차순으롤 정렬하는 것이다! 숫자 배열을 받았는데, 순서에 맞게 정렬해야하는 상황이라고 쳐보자. Insertion sort 알고리즘은 아래와 같이 수행된다. 숫자들을 pile(더미)에 쌓는다.(아직 정렬X) pile에서 숫자를 꺼낸다. 어떤 것을 고르던 상관은 없으나, pile의 맨 위부터 뽑는게 가장 쉬운 방법이다. 추출한 숫자를 새로운 배열에 넣는다. 정렬되지 않은 pile에서 다음 숫자를 추출하고 또 새로운 배열에 넣는다. 해당 숫자는 맨 첫 번째에 추출한 숫자의 앞/뒤로 가서 이제 숫자가 정렬되게 되는 것이다. 다시 추출하고, 위치에 맞게 배열 내에 넣어준다. 이 과정을 정렬되지 않은 pile 내에 숫자가 다 사라질 때 까지 반복한다. 결과적으로 빈 pile과 정렬된..

    [Swift] Queue란?

    queue는 새로운 아이템을 뒤에 추가할 수 있고, 앞에 아이템을 제거가 가능한 리스트이다. 그래서 처음 넣은(enqueue) 아이템을 처음 제거(dequeue)할 수 있다. FIFO(First in - First Out)형태이다! 우리는 왜 queue를 써야할까? 많은 알고리즘에서 아이템을 여럿 추가하고 나중에 리스트내에서 제거하고 싶을 때가 있다. 또한 추가/삭제의 순서가 중요한 경우도 많다. queue는 FIFO형태이며, 처음에 넣은 원소가 가장 먼저 추출되게 되는 형식이다. stack(Last in - first out)과 유사하다! 숫자를 enqueue하는 사례를 보자. queue.enqueue(10) 현재 queue는 [ 10 ] 이다. 다음 숫자를 queue에 더해보자. queue.enque..

    [Swift] Stack이란?

    Stack이란 무엇인가에 대해 배워보며, Swift를 활용하여 알고리즘/자료구조에 대해 알아볼 예정입니다. 기존에 강의들은 C++혹은 Python, JAVA로 많이 구현되어있어 자료 찾기가 어려웠으나, 금번에 괜찮은 페이지를 찾아 번역을 해보면서, 그 내용들도 습득해볼 예정입니다. https://github.com/raywenderlich/swift-algorithm-club raywenderlich/swift-algorithm-club Algorithms and data structures in Swift, with explanations! - raywenderlich/swift-algorithm-club github.com Stack이란? Stack이란 배열과 같다. 다만 기능이 좀 제한된 배열이라고..