Programming(199)
-
Flutter 관련 자료 정리
Build Native Mobile Apps with Flutter, Udacity https://classroom.udacity.com/courses/ud905 Flutter Resources Documentation:https://docs.flutter.io/ Github:https://github.com/flutter/flutter StackOverflow:https://stackoverflow.com/questions/tagged/flutter Gitter:https://gitter.im/flutter/flutter Effective Dart Guide:https://www.dartlang.org/guides/language/effective-dart Dart Tips:https://www.dar..
2019.05.26 -
[Android/Java] 파일 출력(FileOutputStream)관련 삽질 기록
문제 해결에 도움이 됐던 글들은 아래와 같습니다. FileOutputStream, Android Developers 안드로이드 바이너리(binary) 파일 입출력 1. [File, FileOutputStream, FileInputStream, BufferedOutputStream, BufferedInputStream] (Android Binary File I/O 1), 개발자를 위한 레시피 [자바][IO] 텍스트 파일 생성하고 파일에 텍스트 쓰기 (3) - FileOutputStream 활용, Astronaut's Note Android에서 바이너리 데이터를 출력하는 경우 FileOutputStream을 사용하면 쉽게 파일을 출력할 수 있다. byte[] data = "Hello".getBytes(); ..
2019.05.23 -
5-1. 다이나믹 프로그래밍
다이나믹 프로그래밍 큰 문제를 작은 문제로 나눠서 푸는 알고리즘을 말한다. Devide and Conquere와 비슷하지만, 큰 문제를 작은 문제로 나눴을 때 작은 문제들 중 동일한 문제를 계산하지 않는다는 차이점이 있다. 두 가지 속성을 만족해야 다이나믹 프로그래밍으로 문제를 풀 수 있다. 겹치는 부분 문제가 나타난다. (Overlapping Subproblem) 최적 부분 구조가 나타난다. (Optimal Substructure) 즉, 문제의 정답을 작은 문제의 정답에서 구할 수 있다. 다이나믹 프로그래밍에서 각 문제는 한 번만 풀어야 한다. 따라서, 정답을 한 번 구했으면 정답을 어딘가에 저장해놓는다. 이런 방법을 Memoization이라고 한다. 다이나믹 프로그래밍을 해결하는 방법에는 Top-do..
2019.05.20 -
4-4. BFS
BFS BFS의 목적은 임의의 정점에서 시작해서, 모든 정점을 한 번씩 방문하는 것이다. 모든 가중치가 1일 때, BFS는 최단거리를 구하는 알고리즘이 된다. BFS를 이용해서 최단거리를 구하기 위해서는, 다음과 같은 유형의 문제여야 한다. 최소 비용 문제여야 한다. 모든 간선의 가중치는 1이어야한다. 정점과 간선의 갯수에 제한이 있어야 한다. 다시 말하면, 문제에서 주어진 시간 및 메모리 제한을 만족시킬 수 있어야 한다. 간선을 이용했을 때 이동할 수 있는 가짓수가 다른 경우, 다른 정점이라고 봐야 한다. 이런 경우에는 그래프를 쪼개서 생각해봐야 한다는 점을 주의하자. 2178 미로 탐색, 백준 온라인 저지 (1, 1)에서 (N, M)으로 가는 가장 빠른 길을 구하는 문제이다. DFS 탐색으로는 문제를..
2019.05.17 -
4-3. 플러드 필
플러드 필(Flood fill) 어떤 위치와 연결된 모든 위치를 찾는 알고리즘이다. 2667 단자번호 붙이기, 백준 온라인 저지 N*N 사이즈의 정사각형 모양 지도가 있다. 이 지도에 나온 집들 중, 연결된 집들의 모임인 단지를 정의찾아 번호를 붙이려고 한다. 이때 상하좌우에 집이 인접해있을 때 연결되어있다고 말한다. (지도에서 0은 집이 없는 곳, 1은 집이 있는 곳을 나타낸다.) DFS나 BFS 알고리즘을 이용해서 이어져있는 집을 찾을 수 있다. 4963 섬의 갯수, 백준 온라인 저지
2019.05.17 -
4-2. 그래프의 탐색(DFS, BFS)
그래프의 탐색 목적: 시작점 X로 시작하여 모든 정점을 1번씩 방문하고자 한다. 깊이 우선 탐색(DFS) 스택을 이용해서 갈 수 있는 만큼 최대한 많이 가고, 더 이상 갈 수 없으면 이전 정점으로 돌아간다. 스택을 이용하는 가장 쉬운 방법은 재귀 호출을 이용하는 방법이다. 인접 행렬을 이용한 구현은 다음과 같다. 정점의 갯수를 V라고 할 때, 시간 복잡도는 O(v^2)가 된다. void dfs(int x) { check[x] = true; printf("%d ", x); for(int i=0; i
2019.05.16