본문 바로가기

분류 전체보기

(83)
Floyd-Warshall algorithm 목차 (클릭 시 이동) Floyd-Warshall 알고리즘 Floyd-Warshall 알고리즘은 음의 순환이 없는 가중치 그래프에서 정점들 간 최단 거리를 찾는 알고리즘이다. 음의 가중치를 갖는 그래프에도 적용 가능하다. 한 번의 수행으로 각 정점들 서로 간의 최단 거리를 찾는다. 구현 알고리즘을 실행하기 위해 인접 리스트를 2차원 배열로 작성하면 편하다. int main() { int n = 5; // # of vertices int edges[][3] = { {1, 2, 2}, {2, 3, 6}, {3, 2, 7}, {4, 3, 1}, {4, 5, 3}, {5, 1, 1}, {5, 2, 4}, }; // n + 1 to match the index with the number of vertex vec..
Dijkstra's algorithm 목차 (클릭 시 이동) Dijkstra's algorithm Dijkstra 에 의해 1950년대 후반 출간된 이론으로, 그래프에서 정점들 간의 최단 거리를 계산하는 알고리즘이다. Dijkstra 는 네덜란드 출생으로 영미권을 제외하고 최초로 튜링상을 받았다. Dijkstra 알고리즘은 현재 정점으로부터 인접한 간선들에 대해 edge relaxation 을 수행하고 그 시점에서 전체 정점들 중 가장 도달 비용이 적은 정점으로 이동해서 edge relaxation 하는 과정을 반복한다. Bellman-Ford 알고리즘과 달리 도달 비용이 최소인 정점을 탐욕적으로 선택해 이동하며 edge relaxation 을 수행하기 때문에 더 빠른 시간에 최단 경로를 찾는다. 그렇다면 최소 비용의 정점으로 가는 것은 왜..
Bellman-Ford 알고리즘 - 이론적 배경, 코드 구현, 시간 복잡도 목차 (눌러서 이동) https://en.wikipedia.org/wiki/Bellman–Ford_algorithm Bellman–Ford algorithm - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Algorithm for finding the shortest paths in graphs The Bellman–Ford algorithm is an algorithm that computes shortest paths from a single source vertex to all of the other vertices in en.wikipedia.org Bellman-Ford Algorithm Ric..
유용한 git 명령어 git status -s 상태를 간단하게 표현. git commit -a -m "Message" add, commit 을 동시에. Working directory 의 모든 파일에 대해 실행함. git commit --amend 최근의 commit message 수정. commit 을 빼먹은 파일을 add 한 후 commit --amend 하면 추가됨. git log --oneline --decorate --graph --all git 의 branch history 를 간단한 그래프로 보여준다. git stash pop Stash 를 적용한 뒤 바로 스택에서 제거한다. (git stash apply + git stash drop) git checkout - 바로 이전의 branch 로 switch. git..
[iOS] 모의 URLSession 으로 네트워킹 Test 하기 목차 (눌러서 이동) 모의 URLSession 이 필요한 이유 Network 연결이 필요한 작업을 테스트할 때 항상 실제 network 를 통해 해당 URL 에 접근한다면 너무 많은 시간이 소요된다. 따라서, 실제 network 연결 없이 네트워킹 함수를 테스트 할 수 있어야 한다. URL download 함수 func downloadData(_ session: URLSession, completionBlock: @escaping (Result) -> Void) { if let url = URL(string: /*Put URL that you want to downlaod some data.*/) { let task = session.dataTask(with: url, completionHandler: ..
TDD(Test Driven Development) 와 BDD(Behavior Driven Development) https://kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=48&dbnum=172089&mode=detail&type=techreport 데이터 기술 동향 < 정보마당 - 한국데이터산업진흥원 오래도록 발전하는 개발자로 살아가기 입에 쓴 보약, TDD와 BDD 개발자로서 발전이 없다고 느껴질 때, 자신의 업무와 더불어 발전할 수 있는 방법이 있다. 바로 Test Driven Development(이하 TDD)와 Behavior kdata.or.kr TDD 란? Test code 를 작성하고 이에 따라 검증된 code 를 실제 코드로 반영하는 개발 방법. 전통적인 TDD 개발론의 흐름: 1. Unit 을 위한 Test set..
[iOS] TDD(Test Driven Development) Tutorial raywenderlich - Test Driven Development Tutorial for iOS 목차 (눌러서 이동) TDD 의 장점 Test code 는 Production code 의 작성과 함께 계속 수정되므로 개발 내용을 계속해서 따라간다. 그래서 작성한 Test 자체가 앱의 동작 방식에 대해 기술한 개발 문서가 된다. TDD 방식으로 개발할 때 Test code 의 Code coverage 가 당연히 더 좋고, 추후에 중대한 update 를 하게 될 경우 훨씬 쉽다. 한 명이 Test code 를 작성, 다른 한 명이 Production code 를 작성하며 Pair-programming 을 적용하기 쉽고, 이로 인해 개발 속도는 빠르지만 튼튼한 앱을 만들게 된다. Red - Green -..
[iOS] WWDC 2019 Testing in Xcode WWDC2019 Testing in Xcode Introduction to XCTest Test Pyramid 피라미드 형태의 Test plan 을 통해 효율적이고 철저하게 검사하면서도 속도를 놓치지 않도록 균형을 잡을 수 있다. Unit test 는 Test 의 기본 단위이다. 단일한 코드 조각 (보통은 function) 에 대해 특정 입력을 넣고 기대하는 출력이 나오는지 확인한다. Unit test 짧고 단순하며 빠르다. 또한, 모든 Test 의 기반이 되므로 최대한 대부분의 functions 이 Test 될 수 있도록 하는 것이 좋다. Integration test 는 좀 더 넓은 범위에 적용된다. 앱의 여러 부분들 혹은 class 들이 모여 서로 올바르게 상호작용하고 동작하는지 확인한다. Unit..