분류 전체보기

지난 글지난번엔 ReactiveX 홈페이지를 아주 간단히 살펴봤다. 사실 살펴보면서 직접 사용해 봐야겠다는 생각이 들었다. [Programming] 반응형 프로그래밍 - 2. ReactiveX📝 지난 글 [CS] 반응형 프로그래밍 - 1. 기본 개념🧑🏻‍💻 내가 반응형 프로그래밍을 공부하게 된 이유갑자기 채용공고들을 올려서 이게 뭐지 싶겠지만, 여기서 우대 사항, 참고 사항에 들어swift-library.tistory.comReactiveX는 RxSwift를 통해 Swift를 지원한다! 나는 이번에는 SPM을 통해 RxSwfit를 사용해 볼 예정이다. GitHub - ReactiveX/RxSwift: Reactive Programming in SwiftReactive Programming in S..
📝 지난 글 [CS] 반응형 프로그래밍 - 1. 기본 개념🧑🏻‍💻 내가 반응형 프로그래밍을 공부하게 된 이유갑자기 채용공고들을 올려서 이게 뭐지 싶겠지만, 여기서 우대 사항, 참고 사항에 들어가는 내용 중에 공통으로 보이는 키워드는 반응형swift-library.tistory.com지난 글에서는 간단하게 반응형 프로그래밍의 기본 개념에 대해서 알아보았다. 이번에는 반응형 프로그래밍하면 연관 깊은 ReactiveX에 대해서 알아보고자 한다.🦐 ReactiveX 톺아보기ReactiveX(Rx, Reactive Extensions)는 마이크로소프트에서 반응형 프로그래밍을 구현하기 위해 만든 라이브러리 집합으로 2011년에 공개된 오픈소스 프로젝트이다. 그만큼 역사와 전통을 가지고 있는... 라이브러리..
🧑🏻‍💻 내가 반응형 프로그래밍을 공부하게 된 이유갑자기 채용공고들을 올려서 이게 뭐지 싶겠지만, 여기서 우대 사항, 참고 사항에 들어가는 내용 중에 공통으로 보이는 키워드는 반응형 프로그래밍, RxSwift가 주로 보인다. 반응형 프로그래밍에 대해서 제대로 공부해 봐야겠다는 생각이 들었던 가장 큰 이유는 필요해 보이기 때문이 컸다. 왜냐하면 신입 개발자 입장에서 반응형 프로그래밍이 최고이니 공부해 봐야겠다. 이런 식으로 판단을 내릴 수는 없다고 생각하고 위처럼 굵직한 기업들이 그 방식을 채택하고 있다면 충분히 공부할 가치가 있는 수준... 이 아니고 알아야 한다고 생각한다. 물론 기존에 Combine을 사용하면서 느낀 점은 데이터가 복잡해지고, 비동기 개념이 나오고... 변경되는 데이터 시점을 알..
데이터가 0101으로 전송된다는 것은 어렴풋이 알 고 있었지만 정확히 어떤 과정인지 짚고 넘어가 보고 싶어서 이렇게 글을 작성한다.➡️ 데이터의 전송 과정만약 A라는 데이터를 보낸다고 생각해보자.컴퓨터는 A를 보낼 수 없다. 0100 0001로 보내게 된다. 이건 ASCII 코드로 변환된 값이다.하지만 숫자를 그대로 보내진 않을 테니 위의 2진수를 전기신호로 바뀌면 아래와 같이 된다. 결국 아래와 같은 신호를 보내게 된다.하지만 위와 같은 전기신호로 보내게 되면 0이 몇 개인지 알 수가 없다. 따라서 아래와 같이 타이밍을 정해준다(클럭).이것을 전송 속도라고 한다. 단순히 이렇게 타이밍을 맞춘다고 다 해결되는 것이 아니라고 한다. Ethernet같은 경우는 클록신호와 XOR연산을 하여 만드는 맨체스터 코..
⚙️ 벨먼 포드 (Bellman-Ford) 알고리즘최단거리를 구할 수 있는 아름다운? 알고리즘이다. 이런 알고리즘은 일단 코드로 보고 어떻게 돌아가는지 아는 게 중요하다고 생각해서 바로 Pseudo code를 가져와 봤다. 위키백과 영어버전에서 가져왔다.function BellmanFord(list vertices, list edges, vertex source) is distance := list of size n // Step 1: initialize graph for each vertex v in vertices do distance[v] := inf // The distance from the source to itself is zero distanc..
다익스트라 알고리즘을 공부하다보면 나오게 되는 플로이드-워셜 알고리즘! 정말 이 알고리즘을 볼 때마다 감탄이 나오는 것 같다. [Algorithm] 다익스트라 알고리즘🕸️ 다익스트라 알고리즘그래프의 한 정점에서 모든 정점까지의 최단거리를 구하는 알고리즘이다.각 정점을 방문하면서 그 정점에 도달하는 최소값을 갱신해주는 방식이다. 다음 정점을 선swift-library.tistory.com🌐 Floyd-Warshall 플로이드-워셜 알고리즘그래프에서 가능한 모든 정점 쌍에 대해 최단 거리를 구하는 알고리즘이다. 시간복잡도는 O(V^3)이지만 모든 노드 쌍에 대해 최단 거리를 구할 수 있다. 특히 다익스트라 알고리즘은 음의 가중치를 가지는 그래프에서 쓸 수 없는데, 플로이드-워셜은 쓸 수 있다.🔥 Swi..
🕸️ 다익스트라 알고리즘그래프의 한 정점에서 모든 정점까지의 최단거리를 구하는 알고리즘이다.각 정점을 방문하면서 그 정점에 도달하는 최소값을 갱신해주는 방식이다. 다음 정점을 선택할 때 시작정점으로부터 가장 짧은 거리의 정점을 방문해야 한다.🔥 Swift 구현실제 구현은 아래와 같다. 아래의 방법으로 구할 경우 다익스트라의 시간 복잡도는 O(V^2 + E)이다.struct Edge { var d: Int var w: Int}func dijkstra(graph: [[Edge]], start: Int) -> [Int] { var distances = Array(repeating: Int.max, count: graph.count) var visited = Array(repeating..
🥸 지난 글이전 글에서 0-1 배낭문제를 다이내믹 프로그래밍으로 푸는 방법을 소개했다. 이번에는 백트래킹으로 풀어보려고 한다. [Algorithm] 0-1 배낭문제(Knapsack Problem) - DP 풀이알고리즘 하면 나오는 대표 문제인 0-1 배낭문제에 대해서 글을 써보려고 한다.🎒 0-1 배낭 문제왜 0-1 배낭 문제일까? 0-1의 의미는 배낭에 넣기, 안 넣기 둘 중 하나만 선택이 되고, 일부만 넣는swift-library.tistory.com🛤️ Backtracking 백트래킹?나는 좀 더 간단하게 설명해보고 싶었다. 뭔가 의외로 엄청 어렵게 설명되어 있는 글들이 많았다... Backtracking이라는 단어의 뜻을 살펴보면 추적을 종료한다는 뜻으로도 보인다. 뭘 종료할 건데?? 이를 ..
Swift librarian
'분류 전체보기' 카테고리의 글 목록 (5 Page)