개발/Swift
-
[Github Action IOS] Pod install 할때 private repo(pod) 권한 관련 에러개발/Swift 2022. 5. 16. 14:37
private repo pod 을 프로젝트에서 사용하고있다면 podfile을 보면 이렇게 pod 'Private-Pod' , :git => "" 쓰고 있을것이다. 혹은 ssh 경로 를 사용할것이다. 로컬 환경에서 pod install을 실행시 문제없이 설치가 된다. 만약 설치가 안된다면 로컬 환경에서 git 계정 정보가 keychain에 저장이 되지 않아서이다. priavate pod 에 접근하기 위해서는 접근 가능한 git 계정에대한 정보가 필요하다. username 과 password 일것이다. password 는 PAT 토큰으로 대체되었다. 따라서 username, PAT(PERSONAL_ACCESS_TOKEN) 토큰이 필요하고 로컬환경에서는 이 정보가 키체인에 저장되어있다. 그래서 pod inst..
-
[Swift] AssociatedType 추상클래스에서의 사용개발/Swift 2022. 5. 5. 18:47
protocol AbstractRepository{ func create(model :Model) -> Model } 추상화된 리포지토리를 protocol로 구현했다. 이렇게 추상화된 리포지토리를 사용하면 구체화될 리포지토리에서 함수를 상속받아 구현 할수있다. 그러나 만약 Model이 구체화될 리포지토리마다 다르다면 어떻까 class UserRepository{ func create(model :User) -> User {} } class ProductRepository{ func create(model :Product) -> Product {} } 이때 우리는 associatedType을 사용한다. protocol AbstractRepository{ associatedtype Model : Domain..
-
[Swift] Drag&Drop Interaction CustomValue 전달개발/Swift 2022. 5. 2. 15:22
요구사항 뷰는 UIViewController 와 UITableView가있다. UITableView에 있는 아이콘을 드래그하여 UIview에 드랍해야한다. 드래그 → 드랍 과정에서 데이터가 오가야한다. (Model) UIView 에 드랍이 되면 UITableView에 있는 아이콘을 드랍하는게 아니라 다른 View를 그려야한다. 일반적인 Drag & Drop 은 UIImage를 전달한다. 하지만 요구사항에 충족하려면 UIImage를 전달해서는 안된다. 어떤 데이터를 받고 그 데이터를 기반으로 새로운 View를 그려야한다. 그러려면 전달하려는 데이터의 클래스(타입)이 ``NSItemProviderReading , NSItemProviderWriting 을 상속하면 된다. 그렇지 않으면 dropSession에서..
-
백준 1303 DFS 활용문제개발/Swift 2022. 4. 8. 19:25
WBWWW WWWWW BBBBB BBBWW WWWWW W와 붙어있는 W들의 총합 = 9 , 7 W 의 위력은 81 + 49 = 130 이다. 결국 붙어있는 W들의 총 합을 구한다면 되는 문제이다. 어떻게 구할수 있을까? DFS 를 통해 가능하다. 첫번째 (0,0) 에있는 W를 보자. 오른쪽엔 B 아래엔 W가있다. (위 왼쪽은 비어있으니 패스) 그럼 아래에 있는 W는 붙어있기 때문에 위력에 도움이될것이다. 이제 아래에있는 W 의 근처를 보고 또 W가있다면 또 그 W에 붙어있는 W가있다면 계속해서 합을 구해서 인접한 W의 갯수를 구하면 된다. 그렇게 위쪽에 있는 W무리를 구할수있다. 이게 지금 딱 한번 dfs를 돌린것이다. dfs는 0,0 부터 5,5까지 반복해야한다. 그러기위해서는 2차원배열을 반복해야하며..
-
백준 1260 DFS 와 BFS 구현하기개발/Swift 2022. 4. 8. 17:31
DFS 는 깊이 우선 탐색으로 1번노드가 시작점일시 1번의 자식들 그리고 그 자식들을 돌면서 깊게 먼저 탐색하는방식이다. 개인적으로 dfs 를 구현하기위해 재귀를 사용한다. 그리고 dfs 에는 필요한 요소들이있다 starting point : 몇번 노드를 탐색할지 array (graph) : 각 노드들의 자식 정보 visited array : 해당 노드를 이미 탐색했는지 정보 result : 계속 갱신될 결과값 visited array 와 result 는 mutating 이 필요하다. 따라서 dfs 재귀 함수에는 inout 을 넣어줘야 한다. func dfs(n:Int,arr : [[Int]],visited: inout [Int],dfsArr:inout [Int]){ if(visited[n-1] == 1..
-
[Swift] 오픈채팅방 프로그래머스개발/Swift 2022. 3. 27. 17:32
["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"] 문제 해결방법 들어오고 나가면 return 배열에 값을 추가하게되는데 이때 닉네임은 마지막에 유저가 설정한 닉네임을 써야한다. 그러므로 마지막 상태의 유저 닉네임을 알고있어야 한다. 관련 정보를 먼저 dict 에 넣어준다. //uid1234 prodo //uid4566 ryan 그리고 나중에 enter/leave 관련한 히스토리 를 보고 uid와 최종 닉네임을 참조해서 result 배열을 만들어 리턴하면 된다. func solution(_ record:[String]) -> [String] { var nicknameD..
-
[Swift] 문자열 압축개발/Swift 2022. 3. 26. 22:12
문제를 해결하기 위해 두가지 기능을 함수로 구현해야한다. 주어진 스트링을 원하는 길이만큼 잘라 배열로 만든다 배열을 압축된 스트링으로 만든다. 자를 길이는 1부터 주어진문자열의 반까지 가능하다. for sliceLength in 1...(s.count/2) {} 예로 길이가 6,7인경우 1,2,3 개씩 자를수있다. 8,9인경우는 1,2,3,4 개씩 자를수있다. 만약 s의 길이가 3보다 적은경우는 결국 s 의 길이와 같으므로 패스한다. ex>aa 의경우 2a ,aa 둘다 2의 길이 if(s.count Int { var answer = s.count if(s.count 2개씩 자를경우 aa / bb / ac / cc 하지만 만약 원하는 길이가 안나오는경우 3개씩 자르는데 aab / bac / cc 마지막 c..
-
[Swift] CountNonDivisible 코딜리티 코딩테스트개발/Swift 2022. 3. 5. 18:26
주어진 배열 값중 약수가 아닌 갯수를 세어 배열값으로 리턴해주는 문제이다. A[0] = 3 A[1] = 1 A[2] = 2 A[3] = 3 A[4] = 6 the function should return [2, 4, 3, 2, 0], as explained above. 3의 약수가 아닌 2,6 ← 두개이므로 2 1의 약수가 아닌 모든값 2의 약수가 아닌 3,3,6 ← 3개이므로 3 위 해답을 찾기위해 가장 단순한 방법은 반복문을 돌려 약수인지 아닌지 조건을 걸어 카운팅후 배열에 넣어 리턴하는 방법이다. public func solution(_ A : inout [Int]) -> [Int] { if(A.count == 1){return [0]} var arr = [Int]() var dict = [Int:..