버블 정렬은 옆에 있는 값과 비교해서 정렬하는 알고리즘입니다. 버블 정렬은 계속해서 옆 원소랑 비교하며 정렬합니다. 또한 한 번의 external for loop가 끝났을 때 가장 큰 값이 맨뒤로 갑니다. 코드를 살펴봅시다. arr는 우리가 정렬해야 할 배열이며, 1부터 7까지 정렬되지 않은 상태로 존재합니다. arr의 크기는 7이고 인덱스는 0부터 6까지 입니다. external for loop는 6부터 시작해서 아래로 내려오며, internal for loop는 0부터 external의 i까지 올라가며 비교하며 정렬하기 위함입니다. 차근차근 살펴봅시다. external for loop의 i값은 6이며 internal for loop의 j값은 0부터 5까지 실행됩니다. j가 0인 경우를 살펴봅시다. a..
삽입 정렬은 적절한 인덱스에 삽입해주는 정렬입니다. 삽입 정렬은 두 번째 원소부터 시작해서 그 앞의 원소들과 비교해 삽입할 위치를 지정한 후, 지정한 자리에 원소를 삽입해 정렬합니다. 또한 앞에 있는 원소는 이미 정렬되어 있다고 가정합니다. 코드를 살펴봅시다. arr는 우리가 정렬해야 할 배열이며, 1부터 7까지 정렬되지 않은 상태로 존재합니다. arr의 크기는 7이고 인덱스는 0부터 6까지 입니다. 두 번째 원소부터 시작한다 했으니 for문은 인덱스 1부터 6까지 돌기 위한 용도이며, while문은 for문의 i보다 아래 인덱스 중 큰 값이 있으면 swap하기 위한 용도입니다. y는 아래 인덱스까지 모두 탐색하기 위한 변수입니다. 그럼 차근차근 살펴봅시다. for loop에서 i가 1일 때 y가 1인 ..
선택 정렬은 가장 작은 값을 찾아서 앞으로 보내주는 정렬입니다. 첫 번째 원소를 두 번째 원소부터 마지막 원소까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 원소를 세 번째 원소부터 마지막 원소와 차례대로 비교하여 그중 가장 작은 값을 찾아 두번째 위치에 놓는 과정을 반복합니다. + 선택정렬을 코드로 작성할 때는 가장 작은 값을 찾기 위한 min값이 있어야합니다. 코드를 살펴봅시다. arr는 우리가 정렬해야 할 배열이며, 1부터 7까지 정렬되지 않은 상태로 존재합니다. arr의 크기는 7이고 인덱스는 0부터 6까지 입니다. (external for loop) 외부에 있는 for 루프는 최솟값이 놓일 인덱스를 위해 사용합니다. (internal for loop) 내부에 있는 for ..
스택은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO)로 되어 있습니다. 넣을 땐 Push라고 하고 넣어준 자료를 꺼내는 것을 Pop이라 합니다. iOS에서 스택은 대표적으로 navigation stack이 있습니다. 공식문서에 살펴보면 계층에 대한 드릴 다운 인터페이스를 제공하기 위해 스택으로 관리한다고 나와있습니다. 스택과는 반대대는 개념인 큐를 살펴봅시다. 큐는 먼저 집어 넣은 데이터가 먼저 나오는(FIFO) 구조로 저장하는 형식을 말합니다. iOS에서는 대표적으로 Dispatch Queue가 있겠죠. 비동기식으로 동시에 수행 할 수 있는 손쉬운 방법이죠. 여기까지 스택과 큐의 특징을 살펴봤습니다. 그럼 본론으로 Q. 스택 두개로 어떻게 큐로 만들 수 있을까요 A. 스택 두개를 inB..
단순 연결 리스트를 역순으로 출력하려면 어떻게 해야 할까요 질문을 갑자기 받고 머리가 띵 그때의 상황 Q. 단순 연결리스트 역순으로 출력하려면 어떻게 해야 할까요 A. 네? 이중 연결리스트요? (내 뇌는 생각하기 싫었나 보다) Q. 아니 단순 연결리스트요! A. 잠시만요. 그 당시에는 문자열 역순 뭐 역순 하면 스택이 먼저 떠올라서 음 스택으로 값을 넣고 뭐 이런 식으로 하면 어떨까요. 구글링 해보니 알고리즘 문제로 종종 나오나 보다. 연결리스트(Linked list) 란 연결리스트는 각 노드가 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조입니다. 연결리스트는 자료 추가와 삭제가 O(1)이라는 장점을 가지고 있지만, 특정 위치의 데이터를 검색하는데 O(n)이 걸린다는 단점도 ..
코딜리티의 데모 테스트의 문제는 이렇습니다. 저는 언어를 Swift4로 선택했습니다. 하하. 먼저 문제 해석 :) N개의 정수 중 A배열이 주어지면 A에서 발생하지 않은 가장 작은 양의 정수를 리턴하세요. 예를 들어 A= [1,3,6,4,1,2]이면 함수는 5를 리턴해야 합니다. A = [1,2,3]이면 함수는 4를 리턴해야 합니다. A = [-1,-3]이면 함수는 1을 리턴해야 합니다. 블라블라 효율적인 알고리즘을 작성해주라. N은 [1.. 100,000] 범위의 정수이며 A의 각 요소는 [-1,000,000.. 1,000,000]입니다. 일단 데모 테스트를 풀어보자. 핵심은 주어진 A배열에서 발생하지 않은 가장 작은 양의 정수를 리턴해야 합니다. 그냥 for문으로 1부터 A의 카운트만큼 돌려서 배열에..
- Total
- Today
- Yesterday
- ARC
- ios
- 알고리즘
- Deep learning
- rxswift
- 딥러닝
- 문자열
- wwdc
- 머신러닝
- SWIFT
- Animation
- ReactiveX
- 독서
- Xcode
- 스위프트
- 애니메이션
- objc
- RX
- objective-c
- 책 후기
- 책 추천
- 책
- leetcode
- swift5
- 스위프트UI
- Algorithm
- stanford SwiftUI
- swiftUI
- iOS SwiftUI
- string
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |