분류 전체보기
-
회고, 2019Programming/blog 2020. 3. 18. 17:21
January - 부스트 캠프 안될 것 같더라도 우선 해보자 2018년 말부터 준비하던 부스트 캠프에 최종합격하여 캠프 생활을 시작하였다. 2018년 여름부터 시작했던 부스트 코스(커넥트재단)를 시작으로 올 초까지 인연이 된 것이다. 지원하기 전에는 과연 내가 할 수 있을까?라는 생각을 많이 했다. 하지만 미루었던 졸업도 해야하고 뭐든 하지 않으면 안될 것 같았다. 불안하지만 지원서를 제출했고 운이 좋게도 합격하여 프로젝트를 진행할 수 있었다. 우선 결과적으로 부캠의 활동은 올 한해 나에게 많은 영향을 주었다. 무엇보다도 같이 했던 조원들과 많이 친해졌고 아직까지 연락을 하고 지내는 사이가 되었다. 다른 것보다 좋은 인연을 만들어서 좋았다. 항상 처음부터 완벽한사람은 없다. 떨어지면서 경험치도 쌓이게 되..
-
액티비티 생명주기 이해하기Android/AndroidDevelopers 2019. 1. 9. 17:22
액티비티 생명주기 이해하기Understand the Activity Lifecycle액티비티 생명주기 개념라이프사이클 콜백이번 섹션에서는 액티비티 생명주기 동안 사용되는 콜백 메소드에 대한 개념적, 구현적 정보에 대해서 알아본다.secContentView()와 같은 몇몇의 액션은 액티비티 생명주기 메소드에 종속 되어있다. 하지만 독립된 구성요소의 동작을 구현한 코드는 컴포넌트 자체에 위치해야한다. 이를 달성하기 위해 lifecycle-aware 컴포넌트를 만들어야 한다. 이를 만드는 방법을 배우기 위해서 Handling Lifecycles with Lifecycle-Aware Components 문서를 확인하라.onCreate()onStart()만약 액티비티가 시작되는 상태에 들어간다면, 시스템은 이 메..
-
벨만포드 최단거리 알고리즘Algorithm/graph 2018. 12. 27. 16:29
벨만포드 알고리즘이 글은 GeeksforGeeks의 Bellman–Ford Algorithm | DP-23를 번역한 글입니다. 그래프와 그래프의 source 정점 src를 고려하여, src부터 모든 정점의 최단거리를 구하는 알고리즘이다. 다익스트라와 차이점은 그래프의 간선이 음의 값을 가질 수 있다는 점이다. 최단 거리문제는 다익스트라를 활용하여 해결할 수 있다. 다익스트라 알고리즘은 그리디 알고리즘 이며 피보나치 힙을 사용한다면 O(VlogV)의 시간 복잡도를 가졌다. 하지만 다익스트라는 음의 값을 가진 그래프에서는 사용할 수 없으며, 벨만포드를 사용하여야 한다. 벨만포드는 다익스트라보다 간단하며 분산 시스템에 잘 맞다. 하지만 시간 복잡도는 O(VE)로 다익스트라보다 복잡하다.알고리즘Input : 그..
-
플루이드 와샬 최단거리 알고리즘Algorithm/graph 2018. 12. 27. 15:27
플루이드 와샬 알고리즘GeeksforGeeks의 Floyd Warshall Algorithm | DP-16를 번역한 글입니다.플루이드 와샬은 모든 쌍의 최단거리를 구하는 문제이다. 주어진 가중치가 있는 방향 간선에서 모든 정점 사이의 최단거리를 해결하는 문제이다. 첫번째로 그래프 메트릭스와 같은 솔루션 메트릭스를 초기화 한다. 그 다음 모든 정점을 중간 정점으로 고려하면서 솔루션 메트릭스를 갱신할 것이다. 이 알고리즘의 아이디어는 모든 정점을 하나하나 선택하여 모든 최단거리를 갱신하는 것인데, 선택된 정점을 중간 정점으로 포함하는 것이다. 정점 K를 중간 정점으로 선택한다면, 이미 {1,2,3, ... k-1}의 정점들은 중간 정점으로 구려된 후이다. 모든 정점의 쌍 (i, j)을 시작점과 끝점으로 여긴..
-
다익스트라 최단거리 알고리즘Algorithm/graph 2018. 12. 26. 17:26
다익스트라 최단거리 알고리즘geeksforgeeks - Dijkstras shortest path algorithm 을 번역한 글입니다.그래프와 그래프 속에 시작점(source vertex)이 주어진다면, 그래프안에서 시작 정점으로부터 모든 정점까지의 가장 짧은 거리를 찾는 알고리즘 다익스트라의 알고리즘은 프림의 최단 신장트리 알고리즘과 닮았다. 프림의 최단 스패닝트리(Minimum spanning tree - MST)처럼, 주어진 시작점을 루투로 하여 최단 길이 트리(Shortest path tree-SPT)를 만들 것이다. 알고리즘의 모든 스탭에서 소스로부터 가장짧으면서 아직 포함되지 않은 set에 있는 정점을 찾을 것이다. 다음은 다익스트라 알고리즘에서 가장 짧은 길을 찾기위한 자세한 step이다...
-
Git StashProgramming/Git 2018. 12. 5. 14:53
stashA 작업중 commit하지 않고 B작업을 하고 돌아와, 다시 작업을 이어가고 싶을 때 사용하는 기능 알고리즘 문제를 풀 때, 문제 번호별로 브랜치를 나누고 문제를 다 풀면, master에 합치는 과정으로 알고리즘 파일을 관리하고 있다. 문제를 푸는 도중에 풀리지 않아 멈춰 놓았다, 다른 문제를 푸려고 다른 브랜치를 파는 경우가 있었는데 이 때마다 풀던 알고리즘을 commit 하고 '푸는중'이라는 메세지를 남겼다. 깃을 배우다 보니 commit이 완성된 작업단위로 메세지를 남기는 것이 좋을 것 같아, 위의 방법을 해결할 기능을 찾던중 stash를 알게 되어 정리하고자 한다. git stashstash명령을 사용하면 Working Directory에 작업중인 상황을 저장하게 된다.stash를 하게 ..
-
안드로이드 httpUrlConnection, VolleyAndroid/AndroidStudio 2018. 12. 3. 16:38
HttpURLConnetion 이제는 웹서버에 연결하는 방식입니다. 이전까지 소켓을 통해서 서버를 만들어서 요청을 보냈는데요. 이제는 웹서버를 사용하겠습니다. 웹은 Http라는 통신규약을 사용합니다. 자바에서 웹에 요청을 보내는 api는 HttpURLConnetion입니다. 마찬가지로 쓰레드에서 웹에 요청을 보내기 때문에 view에 접근하려면 메인쓰레드에 접근하기 위해서 handler를 사용해야합니다.(뒤에 이와같은 방법을 통합한 api가 volley 입니다.) 먼저 thread 클래스를 정의 하고 URL 객체를 받아옵니다. URL 객체에서 openConnction() 메소드를 호출하여 HttpURLConnection 객체를 얻어옵니다.HttpURLConnection 객체를 받아와 setConnectio..
-
안드로이드 asynctaskAndroid/AndroidStudio 2018. 12. 3. 16:37
ASYNcTASK UI에 접근하기 위해 핸들러를 사용하기 복잡하다면 구글에서 제공하는 AsyncTask를 사용할 수 있습니다. AsyncTask를 상속받은 클래스를 정의하고 Main Thread에서 객체를 생성합니다. AsyncTask를 상속한 클래스에서 onInBackground(), onProgressUpdate(), onPostExecute()메소드를 재정의 하면 Thread생성과 Handler 없이 위의 작업을 진행 할 수 있습니다. AsynkTask를 상속받은 객체의 execute() 메소드를 실행하면 Thread가 실행되고 순서대로 onInBackground(), onProgressUpdate(), onPostExecute() 메소드가 실행됩니다. 클래스를 생성시 세가지 type을 정의할 수 ..