Web Application & Network
·
⚙️ Ops/CS
💡 Native Application 장점 웹앱보다 빠르고, 설치된 기기의 시스템/리소스 접근 용이 (ex: GPS , Camera) 오프라인 환경에서 사용가능, 웹앱에 비해 보안성 ↑ , 임베디드와는 조금 다른 개념 단점 느린 업데이트, 앱스토어에 승인이 까다롭고 비용발생 웹앱에 비해 개발비용 증가 (플랫폼 호환성) 💡 TCP/IP OSI 7 계층에선 3계층인 IP와 4계층인 TCP를 합친 통신규약의 모음(프로토콜 스택) TCP/IP 4계층은 데이터가 계층이동을 할때마다 헤더를 추가하고(캡슐화), 추가된 헤더를 읽고 알맞은 행동을 취한 후 ,헤더 제거(역캡슐화) TCP 3 Way HandShaking Listen - Received - Established SYN Flag - SYN/ACK Flag -..
Dynamic Programming (동적 계획법)
·
📚 Data Architect/Algorithm
💡 Dynamic Programming 자료구조의 동적할당 (Dynamic Allocation)에서 '동적'은 프로그램이 실행되는 도중에 실행에 필요한 메모리를 할당하는 기법이다. 그러나, 알고리즘의 동적 계획법에서의 '동적'은 별 뜻이 없고 그냥 '기억하기'라고 생각하면 편하다. 동적 프로그래밍에서의 '프로그래밍'은 테이블을 만든다는 뜻이다. 쉽게 말해, 이전에 구한 값을 기반으로 규칙성을 파악하여 다음 값을 구하는 것이라고 생각하면 된다. 알고리즘 설계 기법(패러다임) 중 하나이며, 하위 문제의 최적해를 적절히 사용하여 상위 문제를 해결함으로써, 불필요한 계산을 줄일 수 있다. DP 알고리즘 기법이란? DP 알고리즘 기법은 이미 계산된 결과(하..
Flood Fill Algorithm
·
📚 Data Architect/Algorithm
💡 Flood Fill 알고리즘 다차원 배열의 어떤 칸과 연결된 영약을 찾는 알고리즘이다. 바둑이나 지뢰찾기 같은 게임에서 어떤 비어 있는 칸을 표시할 지 를 결정할 때도 사용된다. DFS와 Stack을 이용하여 구현하기도 하고, BFS와 Queue를 이용해 구현하기도 한다. DFS & Stack을 이용한 Flood Fill 구현 import java.util.Scanner; import java.util.Stack; public class DFS_FloodFill { // 상하좌우를 의미하는 델타 배열 생성 static int[][] deltaArray = {{-1,0}, {1,0}, {0,-1}, {0,1}}; static final int max = 10; static int n; static in..
Quick Sort
·
📚 Data Architect/Algorithm
💡 퀵 정렬 (Quick Sort) 기준값을 선정해 해당 값보다 작은 데이터와 큰 데이터로 분류하는 것을 반복해 정렬하는 알고리즘이다. 기준값이 어떻게 선정되는지에 따라 시간 복잡도에 많은 영향을 미치고 평균 시간복잡도는 O(nlogn)이다. 과정 데이터를 분할하는 pivot을 설정한다. pivot을 기준으로 다음 A ~ E 과정을 거쳐 데이터를 2개의 집합으로 분리한다. A. start가 가리키는 데이터가 pivot이 가리키는 데이터보다 작으면 start를 오른쪽으로 1칸 이동한다. B. end가 가리키는 데이터가 pivot이 가리키는 데이터보다 크면 end를 왼쪽으로 1칸 이동한다. C. start가 가리키는 데이터가 pivot이 가리키는 데이터보다 크고, end가 가리키는 데이터가 pivot이 가리..
Insertion Sort
·
📚 Data Architect/Algorithm
💡 삽입 정렬 (Insertion Sort) 이미 정렬된 데이터 범위에 정렬되지 않은 데이터를 적절한 위치에 삽입시켜 정렬하는 방식이다. 평균 시간 복잡도는 O(n2)로 비효율적이지만 구현이 쉽다. 과정 현재 index에 있는 데이터 값을 선택한다. 현재 선택한 데이터가 정렬된 데이터 범위에 삽입될 위치를 탐색한다. 삽입 위치부터 index에 있는 위치까지 shift 연산을 수행한다. 삽입 위치에 현재 선택한 데이터를 삽입하고 index++ 연산을 수행한다. 전체 데이터의 크기만큼 index가 커질때까지, 즉 선택할 데이터가 없을 때까지 반복한다. 적절한 삽입 위치를 탐색하는 부분에서 이진 탐색등과 같은 탐색 알고리즘을 사용하면 시간복잡도를 줄일 수 있다. 구현 ATM의 인출 시간을 계산한다. ATM은 ..