- [ 알고리즘 ][알고리즘] 에스토스테네스의 체 (소수 판별 알고리즘)2024-08-08 16:12:47에스토스테네스의 체? 소수를 찾기 위한 고전적인 알고리즘으로일반적으로 수를 하나씩 체크하며 소수를 판별하는 것은 비효율적이기 때문에 에스토스테네스의 체 알고리즘을 사용하면 좋다. 원리 [1 ... 50]까지 존재한다고 가정하였을 때동일한 크기의 Bool 타입의 true로 가득 찬 배열을 생성한다. [1 ... 50]* 지워준다 == false로 변환여기서 2부터 배수를 지워준다. 이 후 다음 3의 배수를 지워준다. 4의 배수는 이미 2의 배수에서 지워졌다이렇게 계속 배수를 지워주는데, 언제까지 지워주는지가 중요할 것이다.50의 경우 제곱근이 7.0****이 나오게 된다. 이때 50보다 작은 수 중 소수가 아닌(m)은 m = a * b가 된다. (a 이때 a는 무조건 50의 제곱근 7.0*****보다 작게..
- [ 자료구조 ][선형 자료구조] 배열(선형 리스트)2024-08-08 15:36:39배열이란?선형 자료구조 중 선형 리스트에 해당하며,Swift에서는 표준 라이브러리가 제공하는 가장 기본적인 선형 자료구조이다. 주요 특징연속된 메모리 주소 배열은 모든 요소가 연속된 메모리 주소를 가지게 된다.같은 선형 자료구조이지만, 랜덤한 메모리 주소를 가지는 링크드 리스트와는 차이가 있다. 이러한 특징으로 인하여, 인덱스를 통한 임의 접근이 가능하며, 시간 복잡도는 O(1)를 가진다. 시간 복잡도임의 접근: O(1)임의 접근한 요소의 메모리 주소 = 시작 메모리 주소 + (인덱스 넘버 * 타입의 메모리 크기) 삽입/삭제 (배열 끝): O(1)마지막 배열에 추가/삭제 삽입/삭제 (배열 중간): O(n)중간에 삽입/삭제를 통해 그 뒤에 있는 요소들의 메모리 위치가 모두 변경
- [ 자료구조 ][자료구조] 선형 자료구조2024-08-08 15:15:44선형 자료구조(Linear Data Structure)란? 데이터의 요소들이 순차적으로 나열된 구조를 말한다.해당 구조에서는 요소들이 연속적으로 연결되어 있기 때문에, 순서대로 접근하여 탐색이 가능하다. 선형 자료구조로는 리스트, 스택, 큐, 데크(덱)가 존재한다. 이때 리스트 다시 선형 리스트(배열)와 링크드 리스트로 나뉜다. 주요 특징?1. 순차적 배치데이터의 요소들이 순차적으로 고유의 순서를 가지게 된다. 2. 단일 경로데이터는 이전 데이터와 다음 데이터와만 연결된다. 3. 연속된 메모리 주소Swift에서 스택, 큐, 데크는 배열 또는 링크드 리스트로 구현이 가능하다. 배열로 구현하게 된다면, 각 요소는 연속된 메모리 위치를 가지게 된다. 링크드 리스트로 구현하게 된다면, 각 요소는 비연속적인..
- [ 코딩테스트/백준 ][백준/BOJ] 10026번 적록색약 (Swift 스위프트)2024-08-08 14:24:40문제 난이도: 골드 5 사용 알고리즘: DFS 처음 제시한 맵과 적록색약 맵 두 개를 만들었다. 각 맵은 아래와 같이 만들어진다. map =[["R", "R", "R", "B", "B"], ["G", "G", "B", "B", "B"], ["B", "B", "B", "R", "R"], ["B", "B", "R", "R", "R"], ["R", "R", "R", "R", "R"]] rgMap =[["G", "G", "G", "B", "B"], ["G", "G", "B", "B", "B"], ["B", "B", "B", "G", "G"], ["B", "B", "G", "G", "G"], ["G", "G", "G", "G", "G"]] dfs를 통해 일치하는 색상만 탐색하여 dfs를 돌린 횟수를 기록하였다. ..
- [ 코딩테스트/백준 ][백준/BOJ] 11724번 연결 요소의 개수 (Swift 스위프트)2024-08-07 18:46:56문제 난이도: 실버 2사용 알고리즘: DFS Int 이중 배열을 통해 외부 배열은 정점의 위치를,내부 배열은 해당 정점과 연결된 정점들을 저장한다. 예제 입력 1을 넣게 되면graph는 [[], [2, 5], [1, 5], [4], [3, 6], [2, 1], [4]]이 된다. 1번 정점에 연결된 정점은 2, 52번 정점에 연결된 정점은 1, 53번 정점에 연결된 정점은 44번 정점에 연결된 정점은 3, 65번 정점에 연결된 정점은 2, 16번 정점에 연결된 정점은 4 여기서 연결 요소는 [1, 2, 5], [3, 4, 6]으로 총 2개이다.import Foundationlet input = readLine()!.split(separator: " ").map { Int($0)! }let n = input..
- [ Swift ][Swift] final2024-08-07 16:44:18finalfinal은 Swift에서 class, method, property의 재정의 및 상속이 될 가능성이 없을 때 사용된다. final 키워드를 사용하는 이유final을 통해 기대할 수 있는 효과는 다음과 같다. 코드 안정성성능 개선코드 안정성기본적으로 class, method, property는 아래와 같이 재정의가 가능하다.class Animal { var age: Int = 10 func changeAge() { age = .random(in: 0 ... 100) }}class Dog: Animal { // 저장 프로퍼티는 getter/setter를 모두 사용해주어야 상속이 가능하다. override var age: Int { ..
- [ UIKit ][UIKit] Compositional Layout Section2024-08-07 14:59:55Compositional Layoutcompositional layout은 UICollectionView 레이아웃의 한 종류로 차례로 item을 구성하고, group을 구성하고, section을 차례로 구성이 가능하다 [ 공식 페이지 제공 코드 ]func createBasicListLayout() -> UICollectionViewLayout { let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalHeight(1.0)) ..
- [ Swift ][Swift] View Life Cycle2023-06-11 13:59:131. 개요 ViewController의 생명주기로 view가 나타나고 사라지는 과정에서 관련된 메소드들이 호출되어진다.이를 잘 활용하면 원하는 타이밍에 내가 원하는 동작을 수행할 수 있다. 2. View Life Cycle의 순서 3. View Life Cycle method 종류 및 기능// 컨트롤러가 관리하는 view를 생성할 때 호출loadView()// view가 메모리에 올라갈 때 호출viewDidLoad()// view 계층에 view가 추가되기 직전 호출viewWillAppear(_:)// view 계층에서 view가 추가된 직후 호출viewDidAppear(_:)// view 계층에서 view가 삭제되기 직전 호출viewWillDisappear(_:)// view 계층에서 view가 삭제..
- [ Swift ][Swift] App Life Cycle2023-06-11 13:44:521. 개요앱이 실행되고 종료되기 전까지 많은 상태가 존재한다.그 상태는 무엇이 있고, 그 역할에 대해 알아보려고 한다.애플 공식 개발 문서를 토대로 내가 이해한 내용을 정리했다. 2. app life cycle이란? 기본적으로 IOS에서 App의 현재 상태에 따라 무엇을 할 수 있고 할 수 없는지 결정된다.UIKit은 적절한 delegate 객체의 메소드를 호출하여 앱의 상태가 변한 것을 알려준다. 이렇듯 각 상태 별 적절한 조치를 취할 수 있도록 만들어진 것이 App Life Cycle 개념이다. IOS 12 이 전 버전에서는 UIApplicationDelegate 객체를 통해 Life Cycle 이벤트에 대응한다.IOS 13 이 후 버전에서는 다중 창(multi-window)과 멀티캐스팅에 대응하..
- [ Swift ][Swift] 고차함수2023-06-11 13:15:451. 개요고차함수의 종류와 사용 방법 Swift에서 함수는 일급객체로 취급하여 다른 함수를 다른 함수의 전달인자로 사용 가능이때 매개변수로 함수를 갖는 함수가 고차함수 대표적인 고차함수mapfilterreduce2. map1. 매개변수로 전달된 함수를 실행2. 함수로 인하여 변형된 결과를 반환 적용 가능 타입배열, 딕셔너리, 세트, 옵셔널 컨테이너가 담고 있는 각 원소의 값을 매개변수를 통해 받은 함수에 적용한 후, 다시 컨테이너에 포장하여 반환let numbers = [1,2,3,4,5]// 후행 클로저// 매개변수(클로저) : (number: Int) -> Intlet doubleNumbers1 = numbers.map() { (number: Int) -> Int in return number ..
- [ Swift ][Swift] 값타입과 참조타입 차이점2022-08-17 16:42:36swift에 자료구조들은 두가지 타입으로 존재한다 값 타입 (Value Type)참조 타입(Reference Type)- 구조체 (Struct)- 열거체 (Enum)- 튜플 (Tuple)- 클래스 (Class)- 클로저 (Closure) 값 타입 대표 '구조체' 와 참조 타입 대표 '클래스'를 통해 자세히 알아보자 구조체 (값 타입)//구조체 (값 타입)struct User { var ID: String var level: Int init(ID: String, Lv: Int) { self.ID = ID self.level = Lv }}var userHong: User = User(ID: "hong", Lv: 20) ID와 level 이라는 저장 프로퍼티..