코드스테이츠_국비교육/[Section2] 40

29.02_[네트워크] 웹 애플리케이션 작동 원리_웹의 흐름_22.09.30

Web >웹 : 인터넷에서 제공되는 하이퍼텍스트 시스템 //하이퍼텍스트 : 문서안에 다른 문서의 위치정보 등을 포함하여 문서 간의 정보를 서로 연관 지어 참조 할 수 있는 문서. >3티어 아키텍처 : '클라이언트-서버-데이터베이스'를 의미함 클라이언트 : 리소스를 사용하는 애플리케이션 서버 : 리소스를 제공하는 곳 데이터베이스 : 리소스를 저장하는 곳 : 데이터베이스가 없는 것을 2티어 아키텍처라고 함. //앱에 연결된 서버가 없다면?? : 앱에 저장된 정보를 업데이트를 하려면 앱 자체를 업데이트 해야함(실시간 정보 업데이트 불가) : 앱에서 실행될 기능을 구현할 수 없음(기능이 구현되어 있는 서버가 없으므로) //서버는 있는데 클라이언트(앱)이 없다면? : ?? 유저가 접근조차 못함. 사용을 못하지 >..

29.01_[네트워크] 웹 애플리케이션 작동 원리_기본 배경_22.09.30

//각 용어에 대한 깊은 내용은 따로 다루기로 하고, 흐름과 간략한 의미 파악을 위주로 진행 웹 앱과 네이티브 앱 >네이티브 앱, Native-Application : 특정 기기에 설치해서 사용하는 애플리케이션 : 실행 환경에 종속적이다. : 인터넷 환경은 무관하다. //예시) 폰의 스토어에서 운동 기록 App을 설치. 폰에서만 활용 가능하다 네이티브 앱 특징(장점) : Web-App보다 빠르다. //인터넷 속도랑 관련 없기 때문(설치한 기기 성능에 의존) : App이 설치된 기기의 시스템(실행 환경)의 리소스에 접근이 용이함. //예시) gps, 카메라 등 : 인터넷 없이 사용 가능하다. //설치만하면 언제든 킬 수 있음. : Web-App에 비해서 안전하다. //예시) 모바일의 경우, 앱스토어의 승인..

28.02_Algorithm with Math_코드 정리_22.09.29

>순열 코드 >조합 코드 public static ArrayList combination(String[] str) { ArrayList result = new ArrayList(); //조합 특징1: 반복문의 시작이 이전 반복문 시작+1 이다. //이전 요소가 다시 뽑힐 필요가 없기 때문(순서가 필요없다는 뜻) //조합 특징2: 뽑고 싶은 만큼 반복문을 사용하면 된다. //현재 예시) 5C3; str 의 5개 요소에서 3개를 뽑는다. for(int i = 0; i < str.length; i++) { for(int j = i + 1; j < str.length; j++) { for(int k = j + 1; k < str.length; k++) { String[] input = new String[]{s..

28.01_Algorithm with Math_순열/조합_22.09.29

Algorithm with Math >주요 등장 개념 순열/조합 GCD/LCM(최대공약수, 최소공배수) 멱집합 //알고리즘에 등장하는 수학 개념은 많이 쳐줘봐야 고등 수학이다. 쫄지 말자 순열/조합 >순열 : n 개 중 m 개를 선택할 때, 순서를 고려하여 뽑는 경우의 수 : 똑같은 요소를 뽑지 않는 모든 경우의 수로도 볼 수 있음. : P라고 표현, Permutation >순열 일반식 nPr = n! / (n-r)! n! : 모든 경우의 수(순서가 있을 경우) (n-r)! : r개를 뽑기 위해 나머지 경우의 수를 제거하는 식 >코드 표현 public static ArrayList permutationLoop() { String[] alphaCard = new String[]{"A", "B", "C", ..

26.06_선참시 및 자기 회고_22.09.27

>개발자로서 나만의 originality를 갖자 : 나의 언어로 정리하고, 나의 언어로 설명하고, 나의 언어로 코드를 짤 수 있는 사람이 되자 : 나의 색을 굳이 고치려하지말고 그냥 녹여내자 >originality을 갖추기위한 연습 1. 글 블로깅 : 메모하고, 퍼오고, 전문 용어만 가득한 블로깅을 모두 내가 이해한 방식으로 다시 정리하기 : 비개발자에게 설명하듯이 친절히 //완벽한 이해에서 비롯될 수 있는 작업 2. 눈 코딩 하지말기 : 그냥 레퍼런스 보고 이해했다고 넘어가면, 잘해야 레퍼런스랑 똑같게 쓰는 정도고 보통 문제를 다시 해결하지 못하는 경우가 허다함. : 내가 직접 써서 다시 확인하고 익히기 >현업에 도움되는 태도 1. 깃은 마스터하고 가기 : 실무에 그냥 너무 당연하게 중요 2. 혼자 하..

26.05_이진 탐색 알고리즘_22.09.27

탐색 알고리즘 >3총사 선형 알고리즘 이진 탐색 알고리즘 해시 탐색 알고리즘 이진 탐색 알고리즘, Binary Search Algorithm >의미 :데이터가 정렬된 상태에서 절반씩 범위를 나눠 분할 정복기법으로 특정한 값을 찾아내는 알고리즘 : 흔히 알고 있는 업앤다운 처럼 검색하는 방법 >탐색 과정 1. 중간 지점 확인 2. 중간 지점이 원하는 결과면 종료, 아니면 3번 진행 3. 결과값이 중간 지점보다 윗 범위에 속하는 지, 아랫 범위에 속하는지 확인 // 이 확인 과정이 가능해야 이진 탐색 알고리즘을 사용할 수 있겠다. 4. 결과값이 속한 범위의 중간 지점확인. 즉, 1번부터 다시 반복 >단점 : 배열에서만 구현 가능 : 배열이 정렬되어 있어야만 사용 가능 =>정렬되지 않은 배열을 정렬시키고 이진..

26.04_완전 탐색 알고리즘_22.09.27

완전 탐색 알고리즘(Brute-Force Algorithm, BFA) >의미 및 특징 : 무차별 대입 알고리즘 : 모든 가능성을 시도하여 문제를 해결함. : 순수하게 컴퓨팅 성능에 의존함. >사용할만한 상황 사용할 수 있는 다른 알고리즘이 마땅히 없을 때 문제에 대한 솔루션이 여러 개이고, 모든 솔루션을 확인해야 할 때 >단점 : 너무나도 비효율적인 방법(상황에 따라 다를 경우도 있겠지만) : 문제가 단순하고 컴퓨팅 성능이 뛰어나면 사용해도 좋음 >사용 예제 순차 검색 알고리즘(Sequential Search) 문열 매칭 알고리즘 (Brute-Force String Matching) 선택 정렬 알고리즘 (Selection Sort) 버블 정렬 알고리즘 - Bubble Sort Tree 자료 구조의 완전탐..

26.03_탐욕 알고리즘_22.09.27

탐욕 알고리즘, Greedy >의미 : 선택의 시점일 때마다 해당 시점에서 최적인 선택만을 쫒아 답을 도출하는 알고리즘. (예시) 최소 갯수의 돈으로 거스름돈 건내주기 : greedy는 특정 조건에서 원하는 답을 도출할 수 있지만, 원하는 답이 아니더라도 근사값을 도출하기 적절하며, 때문에 근 사 알고리즘으로도 사용한다. >절차 선택 절차(Selection Procedure) : 현재 시점에서의 최적의 해답을 선택하는 절차 적절성 검사(Feasibility Check) : 선택된 해가 문제의 조건을 만족하는지 검사 해답 검사(Solution Check) : 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복 >Greedy 사용하기 적합한 조건 탐욕적 선택 속성(G..

26.02_시간 복잡도_22.09.27

시간복잡도(Time Complexity) >개요 : 문제를 해결하며 중요한 것은 답과 효율이다. : 답을 찾는 것은 알고리즘에 대한 이해와 능력이 필요 : 효율적인 측면은 시간복잡도에 대한 이해와 능력이 필요 >의미 : '입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?' 를 의미 : 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화하는 것이 효율적인 알고리즘이다! >시간 복잡도 표기법 Big-O(빅-오) : 최악을 고려하는 표기법 : ~정도 시간까지 걸릴 수 있다. Big-Ω(빅-오메가) : 최선을 고려하는 표기법 : 최소 ~정도 시간이 걸린다 Big-θ(빅-세타) : 평균을 고려하는 표기법 : 평균적으로 ~정도 시간이 걸린다. =>Big-O 표기법의 표현이 문제가..