목록분류 전체보기 (132)
YS's develop story

알고리즘 ) 동적 계획법과 플로이드 알고리즘 동적 계획법, Dynamic Programming 동적 계획법의 원리는 매우 간단합니다. 일반적으로 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(subproblem)로 나누어 푼 다음, 그것을 결합하여 최종적인 문제를 푸는 것입니다. Step 1 : 문제의 답을 구하기 위한 recursive property를 세운다. Step 2 : bottom-up 방식으로 작은 문제들을 먼저 풀면서 최종 문제를 풀겠다. 동적 계획 알고리즘은 최단경로 문제, 행렬의 제곱 문제 등의 최적화에 사용됩니다. 동적 계획법은 문제를 해결하기 위한 모든 방법을 검토하고, 그중에 최적의 풀이법을 찾아내기 때문이죠. 플로이드의 최단 경로 알고리즘 플로이드 알고리즘은 각각의 정..

알고리즘 ) 분할 정복법 알고리즘의 해결전략 Divide and Conquer를 분할 정복법이라고 합니다. 분할 정복법은 주어진 문제를 작은 사례로 나누어(Divide) 각각의 작은 문제들을 해결(Conquer)하는 방법입니다. 프랑스의 황제 나폴레옹이 전투에서 사용했던 훌륭한 전략에서 이름을 따왔다고 하네요. 나누어라, 그리고 정복하라.. 멋있는 말입니다... Merge Sort Best Case 시간복잡도 : O(n log n) Worst Case 시간복잡도 : O(n log n) 분할 단계 array를 두 개의 subarrays로 나눕니다. 정복 단계 각각의 subarray가 충분히 작다면 바로 정렬 합니다. 그렇지 않다면 재귀를 통해 각각을 정렬합니다. 결합 단계 정렬된두 개의 subarray를 ..

Complexity function 및 빅 오 , 빅 오메가, 빅 세타 표기법 알고리즘 분석에 필요한 두 개의 Parameter the input size the basic operation Input Size 1. array의 size가 Input size가 될 수 있습니다. 2. single number자체가 input size가 될 수 있습니다. 3. 그래프가 입력으로 들어온다면, vertex의 개수, edge의 개수가 input size가 될 수 있습니다. Basic Operation 알고리즘 전체의 수행 시간에 미미하게 영향을 끼치는 것을 제외하고 전체의 수행 시간을 지배하게 되는 그룹을 Basic Operation이라고 합니다. Example) Binary Search에서는 찾고자 하는 값과 ..

관계형 데이터베이스와 NoSQL 및 DDL, DML의 정의 수많은 소프트웨어 제품이 그런 것처럼 데이터베이스에도 여러 종류가 있습니다. 데이터베이스는 데이터를 보존하는 형식에 따라 여러 가지로 구분되며 각각의 특징이 있습니다. 그중에서 관계형 데이터베이스에 대해 알아봅시다. 관계형 데이터베이스 모델 위와 같이 2차원 표 형식으로 데이터를 관리하는 데이터베이스로, 현재 가장 주류로 사용되고 있습니다. 테이블은 열과 행으로 이루어져 있으며 테이블의 column들은 특성(Attribute)을 나타냅니다. 각 Row(Tuple)들은 순서쌍으로 이루어져 있습니다. 위 사진은 관계형 데이터베이스 모델의 예시입니다. No SQL 데이터베이스 최근 관계형 데이터베이스 이외의 데이터베이스로 주목을 받아온 것이 NoSQL..

트랜잭션의 의미 및 Node MySQL Transactions 적용해보기 3학년 전공 필수과목 데이터베이스.. 매우 중요한 개념인 Transactions에 대해 알아봅시다 transaction은 여러 개의 연속된 쿼리로 구성되어 있는데 하나의 작업처럼 작동해야 합니다. SQL standard는 SQL 문이 실행될 때 트랜잭션이 암시적으로 시작되도록 지정해줍니다. 트랜잭션은 아래의 요소 중 하나의 상태로 끝나야 합니다. Commit work 트랜잭션이 시작부터 끝날 때 때까지 수행되었던 모든 쿼리문들의 작업을 데이터베이스에 영구적으로 업데이트하는 것 Rollback work 트랜잭션이 시작부터 끝날 때까지 수행되었던 작업들을 모두 취소하는 것 트랜잭션의 원자성 완전히 실행되거나 (Commit) 발생하지 않..

C# rest API 호출하기 (RestSharp 이용) C# 라이브러리인 RestSharp을 이용해서 C#에서 rest API를 호출해 봅시다. 프로젝트를 클릭한 후 NuGet 패키지 관리로 들어가 줍니다. RestSharp를 설치해 줍니다. Json형식으로 파일을 받아서 사용할 것이기 때문에 관련 패키지도 설치해 줍니다. Json.NET - Newtonsoft × PM> Install-Package Newtonsoft.Json or Install via VS Package Management window. ZIP file containing Json.NET assemblies and source code: Json.NET www.newtonsoft.com Postman에서 사용하고자 하는 API를 C..

Node js에서 메일 전송하기 (Nodemailer 이용) 노드 메일러는 Node.js에서 메일 전송을 가능하게 해주는 모듈이며, 가장 일반적으로 사용되고 있습니다! 우선 메일을 보낼 gmail을 하나 생성해 줍시다. 메일을 생성하고, 아래의 링크로 접속을 하여 보안 수준이 낮은 앱의 액세스를 허용해 줍시다. 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com npm을 이용해 nodemailer 모듈을 다운로드 해 줍시다. npm install nodemailer 코드에 아래와 같이 다운로드한 모듈을 사용한다는 구문을 추가해 줍니다. const nodemailer = require('nodemailer'); 저는 저의 ..

MySQL 중복된 결과를 제거하는 distinct 아래와 같이 Community라는 테이블에 내가 작성한 글들의 책이름과 책 인덱스를 출력하도록 쿼리를 짰습니다. 하지만 문제점이 있습니다. 14번 인덱스에 해당하는 '부의 추월차선'에 관련된 글을 두 개 작성했기 때문에 중복된 출력 결과가 나오게 됩니다. select Community.bookIdx,bookName from Book left outer join Community on Community.bookIdx = Book.bookIdx where userIdx = ? and Community.status = 1 and Book.status =1; distinct를 사용하면 이러한 중복된 결과를 제거하고 출력할 수 있습니다. select distinc..

서버 개발주의사항 프로젝트 서버 개발 시 중요한 주의 사항들을 멘토분들께서 잘 정리해 올려 주셨는데.. 서버 개발 시 두고두고 참고하기 위해 정리해서 글을 작성하게 되었습니다. 1. API Index 전체적인 API 리스트를 관리하는 곳이에요. 클라이언트 개발자는 이 페이지만 보고 어떤 API가 있고 어떻게 접근하면 되는지 알 수 있어야 합니다. 아래 사항에 특히 신경 써서 작업을 진행해 줍시다.!! API 문서 최신화에 꼭 신경 써주세요! 테스트 서버와 실서버의 URL을 적어주세요. 각각의 항목에 대해 각 시트로 이동할 수 있는 링크를 걸어주세요. (Ctrl+K 또는 Cmd+K) API 개발 및 테스트를 마무리하고 git에 푸시하기 전에 꼭 API 명세서를 최신화해주세요. 클라이언트 개발자가 슬랙 채널..