📚 벌써 6월입니다 🫠 오늘은 알고리즘에서 꼭 알아야 하는 DFS !! 저번 글에서 아주 짧게 언급했었는데 오늘은 개념 + 코드로 잘근잘근 씹어봅시다 😬 깊이 우선 탐색 (DFS, Depth-First Search) 그래프 탐색 알고리즘 중 하나로, 주어진 그래프에서 한 정점을 시작으로 그래프를 탐색하는 방법이다. 그래프는 정점(노드)과 간선의 집합으로 이루어진 자료구조로, 각 정점은 다른 정점과 연결될 수 있다. 탐색하려는 노드의 자식 노드부터 우선 탐색(깊이를 우선하여 탐색)하는 방식이다. 탐색 과정에서 선택한 노드에 연결된 노드들을 모두 방문한 후에는 이전 노드(부모 노드)로 돌아가서 다른 연결된 노드를 선택한다. 이 과정을 반복하여 그래프의 모든 정점을 방문한다. DFS는 주로 그래프 순회나 스도..
📚 안녕하시렵니까앍 - ! (feat. 주우재) 오늘은 백트래킹 알고리즘에 브루트포스 알고리즘을 사알짝 곁들인 글을 가져왔습니다앍 🐓 백트래킹(Backtracking) 백트래킹(Backtracking)이란, 해를 찾는 도중에 현재 경로의 유망성을 판단하여 해가 될 것 같지 않으면 되돌아가서 다시 해를 찾아가는 기법이다. 백트래킹 알고리즘은 탐색 과정에서 불필요한 경우를 배제하여 실행시간을 단축시키는 특징을 가지고 있다. 즉, 가능한 경우의 수를 순차적으로 시도하다가 조건을 만족하지 않는 경우에 이전 단계로 돌아가 다음 경우를 시도한다. 이러한 과정을 재귀적으로 진행하며 최적의 해를 찾을 때까지 탐색을 진행 ! 주로 조합적인 문제나 제약 조건이 있는 문제를 해결하는 데 사용된다. 대표적인 예로는 스도쿠, ..
📚 알고리즘 문제를 풀다가 기록해둬야 할 것 같아서 오랜만에 글 끄적끄적 📝 동적 계획법(DP; Dynamic Programming)이란 ? 큰 문제를 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법으로, 주어진 문제를 여러 개의 하위 문제로 분할하고 각 하위 문제의 결과를 저장하여 저장한 값을 이용해 상위 문제를 점진적으로 해결하는 방식을 사용한다. DP는 중복되는 하위 문제들이 존재할 때 효과적으로 사용된다. 동일한 하위 문제가 여러 번 반복해서 계산되는 경우, DP는 이전에 계산한 값을 저장해 두었다가 재사용함으로써 중복 계산을 피할 수 있다. 이를 "Memoization"이라고도 부른다. 💡 메모이제이션(Memoization)은 이전에 계산한 값을 메모리에 저장하는 방식으로 중복 수행을 제거..
안녕하세용가리 🐲 몇 주만의 글이지... 긁적.. 긴말 말고 휘뚜루마뚜루 바로 들어가보자고 ~ Subject 외부 호출자가 값을 게시할 수 있는 메서드를 표시하는 Publisher Subject | Apple Developer Documentation A publisher that exposes a method for outside callers to publish elements. developer.apple.com Publisher와 Subscriber의 특징을 모두 가지고 있다. stream에 send(_:) 메서드를 호출해서 값을 주입할 수 있는 Publisher이다. 그래서 기존에 Combine을 사용하지 않던 코드에 Combine 모델을 적용하고 싶을 때 사용하면 좋다고 한다 ~ 다시 정리해보..
이번 글에서는 Publisher, Subscriber, Subscription의 개념과 간단한 사용 예시를 보면서 코드에서 사용되는 함수들을 정리할 것 !!! Publisher, Subscriber 말 그대로 게시자와 구독자로, Publisher를 구독하는 객체 Subscriber가 Publisher가 발행하는 데이터 스트림을 받아서 처리할 수 있는 것이다. Publisher Protocol 시간이 지남에 따라 값을 전달할 수 있는 타입을 명시하는 프로토콜 Apple Developer Documentation developer.apple.com class IntPublisher: Publisher { typealias Output = Int typealias Failure = Never func rece..
쓰는 상황 별도의 DB 없이 빠르고 간편하게 데이터를 사용하려 할 때 주로 사용 적은 양(512KB)의 데이터를 저장하는 데 적합한 형식 앱이 런칭될 때 함께 로드 사용자가 언제 마지막으로 접속했는지, 마지막으로 본 글이 무엇인지 등을 저장하기에 적합 UserDefaults Apple Developer Documentation developer.apple.com App을 실행하는 동안 지속적으로 key-value로 저장하는 사용자의 기본 Database에 대한 Interface (Swift) class UserDefaults : NSObject 📌 값 저장 및 변경 UserDefaults.standard.set(true, forKey: "isHuman") 📌 값 불러오기 // 저장하는 법과는 다르게 불러..
WWDC2019에 등장한 Combine !!! Swift5.0부터 적용됨.! (async, await는 Swift5.5) 개념과 관련된 내용들은 공식문서를 번역하여 정리하였다 ㅎㅅㅎ https://developer.apple.com/documentation/combine 앞으로의 Combine 내용도 공식문서에 기초하여 기록할 예정 🧸 개념 💡 이벤트 처리 연산자들을 통해 비동기 이벤트들을 핸들링 할 수 있게 하는 것 Combine Framework는 시간에 따른 값 처리 Swift API를 제공한다. 여기서 값이란, 많은 종류의 비동기 이벤트들을 말한다. Combine은 시간에 따른 값을 제공할 수 있는 Publishers와 Publishers로부터 해당 값들을 받는 Subscribers로 정의된다. ..
오늘은 Firebase의 Authentication에서 사용자 계정을 등록하는 것부터 시작하여 로그인 및 로그아웃 기능을 구현하는 과정을 기록하고자 한다.!! 앱스쿨에서 MVP를 진행해보면서 계정 관리 기능 부분을 따로 기록해 두어야겠다고 생각함 : ) 이번 글은 회원가입 !! 😋 0. 결과물 1. Firebase와 iOS Project 연결하기 Firebase와 iOS 프로젝트를 연결하는 과정의 자세한 기록은 생략하였다.! Firebase 프로젝트 생성 후에 하라는대로 하면 되기 때🚪 📝 간략하게 정리하자면, Firebase에서 새 프로젝트를 추가하고 iOS 프로젝트의 Bundle ID로 연결해준 후에, GoogleService-Info.plist 파일을 프로젝트에 담아주고 sdk를 추가해준다. 그리고..