Archive 10

Swift 크루스칼 알고리즘과 위상정렬

Swift 크루스칼 알고리즘과 위상정렬 크루스칼 알고리즘과 위상정렬을 Swift 언어로 구현 연습백준 알고리즘: 최소 스패닝 트리에서 연습할 수 있음. 서로소 집합 (Union Find) 6개의 노드가 주어지는데 각 연결 관계는 아래 형태로 주어짐6 41 42 32 45 6 여기서 각 노드를 비교하고, 노드 번호의 부모를 업데이트 하면서 결국은 사이클이 형성되는지 찾을 수 있음.이 경우 시간 복잡도에 큰 손해가 발생해서 이를 단축시키기 위한 기법을 사용. 경로 압축 기법이란?find 함수를 재귀적으로 호출하여 부모 테이블 값을 갱신하는 방법입니다. 신장트리 하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프. 크루스칼 알고리즘최소 신장 트리를 찾는 알고리즘 중 가..

Swift 플로이드 워셜 알고리즘

Swift 플로이드 워셜 알고리즘 다익스트라 : 한 지점에서 다른 특정 지점까지 - 그리디에 속함플로이드 워셜 : 모든 지점에서 다른 모든 지점까지 - dp에 속함 시간복잡도O(N^3) 구현 코드import Foundation/// 정점간의 연결관계, 가중값, 정점의 개수func FloydWarshall(graph: [[Int]], weight: [Int], n: Int) -> [[Int]] { var node = [[Int]](repeating: [Int](repeating: Int(1e9), count: n), count: n) for i in 0..

Swift Dijkstra 알고리즘

Swift Dijkstra 알고리즘 다익스트라 알고리즘 : 한 지점에서 각각의 특정 지점까지의 최단 경로 - 그리디에 속함플로이드 워셜 알고리즘 : 모든 지점에서 다른 모든 지점까지의 최단 경로 - dp에 속함 간선의 개수 : E노드의 개수 : V 시간복잡도O(ElogV) 다익스트라 알고리즘 아래는 다익스트라 알고리즘 손으로 분석 샘플 코드struct NodePriority: Comparable { static func Bool { lhs.priority > rhs.priority } var node: String = "" var priority: Int = 0}func dijkstra(graph: [String: [String: Int]], start: Stri..

Swift DFS, BFS

Swift DFS, BFS DFS와 BFS를 인공지능 수업시간에 먼저 배워서 개념을 알고 있었지만 알고리즘을 구현한다고 생각하지 못했는데, 막상 다른 모듈을 쓰는게 아니라 구현하려니 익숙하지 않아서 시간이 걸리는 거 같음. DFSDFS는 깊이 우선 탐색 알고리즘이 알고리즘은 특정한 경로로 탐색하다가 특정 상황에서는 최대한 깊숙이 들어가서 노드를 방문한 후, 다시 돌아가서 다른 경로로 탐색하는 경로로 탐색하는 알고리즘 import Foundationfunc DFS (graph: [T: [T]], start: T) -> [T] { var visitedQueue: [T] = [] var needVisitStack: [T] = [start] while !needVisitStack.isE..

Swift DP

Swift DP 미적분이나 기하 및 벡터에 비해서 점화식에 유독 약했는데, DP는 점화식이 베이스. 알고리즘은 시험 전에 문제를 많이 풀고 봐야 그 감각이 있어서 쉽게 풀 수 있다고 생각함. 샘플문제 1. 1로 만들기 점화식을 이용하던데, 특정한 작은 값을 정해서 직접 그러보면 문제를 만드는데 도움이 많이 된다.또한, 보텀업 방식으로 계산하는게 조금 더 이득이 있다고 하고, 엄청 어렵지도 않으니까 한번 해보자.비슷한 문제를 백준에서 찾아 풀어보자. //https://www.acmicpc.net/problem/1463import Foundationstruct b1463 { static func run() { // DP를 이용하여 풀어야 합니다. let input: Int!..

[iOS] UserDefault Property Wrapper

UserDefault Property Wrapper (업데이트): 2022년 02월 24일: encode, decode 추가 ✅ 아래 사이트에서 애플의 자세한 설명을 볼 수 있다. https://github.com/apple/swift-evolution/blob/master/proposals/0258-property-wrappers.md GitHub - apple/swift-evolution: This maintains proposals for changes and user-visible enhancements to the Swift Programming Lang This maintains proposals for changes and user-visible enhancements to the Swift..

Archive 2022.02.24

[iOS] Swift 전처리문 #if DEBUG 사용하기

[iOS] Swift 전처리문 #if DEBUG 사용하기 전처리문이란? 간단하게 말해서 컴파일 이전에 먼저 처리되는 문장을 의미한다. 프로그래밍을 학교에서 배울 때, 운영체제나 시스템 프로그래밍 등 리눅스에서 C언어를 사용할 때 자주 사용했었고, Swift에서도 존재. 🟠 시작하기에 앞서서, TARGET_OS_IOS 이런 방식으로 사용하는 부분은 Objective-C에서만 사용되며, Swift에서 사용시 if문에 걸리지 않아 사용할 수 없음. ✅ debug 와 Release 모드를 구분 #if DEBUG var arr = [] #else var arr = [1] #endif // or var arr = [1,2,3,4,5,6,7,8,9,10] #if DEBUG ..

Archive 2022.02.19

[iOS] UTC to localTime 🗺

✅ 이번시간은 UTC 시간을 Local 시간으로 바꾸는 과정을 알아보자. 🍎 애플 문서 참고 https://developer.apple.com/documentation/foundation/timezone/ Apple Developer Documentation developer.apple.com ✅ UTC to local Time import Foundation import UIKit extension Date { private static func utcToLocal(_ dateStr: String) -> String? { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "HH:mm:ss" dateFormatter.timeZone = Tim..

Archive 2022.02.19

Swift Data Structure and Algorithms

Swift Data Structure and Algorithms 제일 잘 사용하는 언어는 C언어인데, 코딩테스트에서 C++, Python이 유리하고, C는 심지어 지원하지 않는 코테도 있음.요즘 트렌드는 iOS 채용은 Swift로 언어를 고정하는 경우도 있어서 Swift로 공부하고자 함. 스터디 계획매주 2개씩 챕터를 공부하고 매일 그에 맞는 알고리즘을 프로그래머스 혹은 백준에서 찾아서 품. 학습 기간1회독2021.10.28 - 2021.12.31