본문 바로가기

전체 글133

N duplicate symbols CocoaPods로 SDK를 추가했는데 다음과 같은 오류 등장n duplicate symbolsclang: error: linker command failed with exit code 1 (use -v to see invocation) 원인코코아팟과 SPM으로 각각 추가한 라이브러리에서 종속적으로 설치되는 라이브러리가 중복되면서 발생하는 심볼 중복현상 해결Targets → Build Settings → Other Linker Flags위 내용에서 $(inherited) 제거하니깐 해결 되었음.$(inherited) 는 상위 설정을 하위 설정으로 상속하는 역할을 하는데, 불필요한 중복 링크를 발생시켜서 이를 제거하니 해결된 것으로 추정된다. 2025. 3. 2.
framework file not found Xcode에서 특정 .framework 파일을 추가했음에도 불구하고, 빌드 과정에서 링커(Linker)가 해당 프레임워크를 찾을 수 없다는 오류가 발생 에러 메시지framework 'adlibrary' not foundclang: error: linker command failed with exit code 1 (use -v to see invocation) 상황다른 프레임워크도 연동해두었었는데, .xcframework 파일은 정상적으로 빌드되지만, .framework 파일만 찾지 못하는 오류 발생 원인해당 문제는 Xcode가 .framework 파일을 제대로 인식하지 못했기 때문이다.Framework Search Paths에 .framework 경로가 누락됨Xcode의 Build Settings > F.. 2025. 3. 2.
Swift Concurrency 이 글은 해당 링크를 보고, 개인적으로 정리한 글입니다.(자세한 내용은 아래 링크로 ㄱㄱ)https://sujinnaljin.medium.com/swift-actor-%EB%BF%8C%EC%8B%9C%EA%B8%B0-249aee2b732d 비동기란?요청과 응답이 동시에 이루어지지 않는 것따라서 요청에 대한 응답이 오지 않아도, 다음 작업을 수행할 수 있음iOS에서는 비동기 작업을 "나중에 알 수 없는 시간에 호출되는 코드"로 설명하고 있음즉, 비동기 작업은 시스템에 의해 저장되었다가, 나중에 적절한 시점에 호출되는 것 CompletionHandler비동기 작업은 알 수 없는 시간에 호출됨따라서 해당 작업의 완료 시점을 알기 위해 completionHandler라는 클로저를 사용했음하지만 가독성, 안정성 .. 2024. 9. 22.
이진 탐색 트리 Binary search trees(BST)이진 트리의 한 종류각 노드에 대해, 해당 노드의 왼쪽 서브트리에 있는 모든 값은 노드의 값보다 작고,오른쪽 서브트리에 있는 모든 값은 노드의 값보다 크다는 특성을 가지고 있음 이진 탐색 트리를 사용하면, 검색, 추가 및 제거와 같은 작업을 평균적으로 O(log n) 시간 안에 수행할 수 있음위 트리에서 20이 존재하는지 확인해보자루트부터 시작하여 20은 23보다 작음. -> 오른쪽 서브트리 무시 가능20 > 8 -> 왼쪽 서브트리 무시 가능20 > 17 -> 왼쪽 서브트리 무시 가능오른쪽으로 이동하며, 값 찾음이 과정의 평균 시간 복잡도는 O(log n)최악의 경우, 오른쪽 자식이 없는 편향된 트리에서는 O(n)이 소요 알아두면 좋은 점BST에서 왼쪽을 우선으.. 2024. 8. 6.
이진 트리 유형 (BFS) BFSDFS에서는 깊이를 우선시했지만, 너비 우선 탐색(BFS)에서는 너비를 우선시 함노드의 깊이는 루트부터 해당 노드까지의 거리임. 따라서 DFS에서는 리프 노드에 도달할 때까지 탐색했음반면, BFS에서는 다음 깊이로 이동하기 전에 같은 레벨에 있는 모든 노드를 먼저 탐색함예를 들어, 위 트리를 BFS하면 0, 1, 2, 3, 4, 5, 6, 7, 8 순서로 노드를 탐색함DFS는 재귀를 사용했지만, BFS는 반복문을 사용함 BFS와 DFS를 언제 사용할까?많은 문제는 모든 노드를 방문하는 것이 중요하기 때문에 DFS, BFS 어떤 것을 사용해도 크게 문제되지 않음DFS는 재귀를 사용하기 때문에 코드가 간결하고, 구현이 쉬움하지만 노드를 레벨에 따라 처리하고자 하는 문제에서는 BFS의 사용이 더 적절한 .. 2024. 8. 6.
이진 트리 유형 (DFS) 이 유형을 파악하기 전에 이진 트리가 무엇인지, 코드에서 어떻게 표현되고 있는지, 그리고 재귀에 대해서 잘 이해하고 있는지를 체크해보세요 오늘은 이진 트리를 순회하는 방법에 대해 알아볼 것입니다. 트리를 순회하는 것은 트리 내의 요소에 접근하는 방법이고, 이는 트리 관련 문제를 해결하는데에 있어 필수적입니다. 기존 LinkedList에서의 요소 순회func getSum(_ head: ListNode?) -> Int { var ans = 0 var current = head while current != nil { ans += current!.val current!.next } return ans} head부터 시작하여 연결 리스트의 모든 .. 2024. 7. 31.