일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- invalid_grant
- oauth
- NestJS
- 유효시간 설정 url
- 타입스크립트
- api 요청 수 제한
- 검색
- compateto
- 프리코스
- 우아한테크코스
- 우아한 테크코스
- 파일 url
- 음악 url 파일 다운로드
- redis
- concurrency limit
- api 비동기처리
- 스프링부트
- 프론트엔드 과제
- AWS
- 프론트엔드
- 딥다이브
- 자바스크립트
- bucket4j
- this
- 모던 자바스크립트
- Deep Dive
- Dev-Matching
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- 프로그래머스
- TypeORM
- Today
- Total
목록분류 전체보기 (174)
개발 알다가도 모르겠네요
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Om3VS/btqTKLKjjPE/JScPRxAI2wK0iwvi4yFI71/img.jpg)
유클리드 호제법은 두 수의 최대공약수를 구하는 알고리즘입니다. 호제법이란 두 수가 서로 상대방 수를 나누어서 원하는 수를 얻는 방법을 말합니다. 구현과정 import java.util.*; public class Main{ public static int gcd(int a, int b) { //유클리드 호제법 if(b==0) return a; else return gcd(b,a%b); } public static int lcm(int a, int b) { return a*b/gcd(a,b); } public static void main(String[] args) { Scanner scan= new Scanner(System.in); int a= scan.nextInt(); int b= scan.next..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HnUhw/btqT0umjBtK/adKYKCluYcAKEM9v84sRIK/img.png)
에라토스테네스의 체는 소수를 찾는 방법입니다. 2는 소수입니다. 자기 자신을 제외한 2의 배수를 모두 지웁니다. 3은 소수입니다. 3을 제외한 3의 배수를 모두 지웁니다. 4는 2의 배수로, 소수가 아니므로 1번 과정에서 이미 지워졌습니다. 5는 소수입니다. 5를 제외한 5의 배수를 모두 지웁니다. 7은 소수입니다. 7을 제외한 7의 배수를 모두 지웁니다. 이 과정을 x^2> n 이 될 때까지 반복합니다. 위의 그림의 경우 11^2 > 120 이므로 11보다 작은 수의 배수들만 지워져도 충분합니다. 결국 120보다 작거나 같은 수 가운데 2, 3, 5, 7의 배수를 지우고 남는 수는 모두 소수입니다. 이 문제는 에라토스테네스의 체를 이용하여 소수를 구해내는 문제입니다. 구현 과정 에라토스테네스의 체 im..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btBAlA/btqTPyoxqtO/X4PGlmlAljhUhWmTo7k4I0/img.gif)
이분 그래프를 간단하게 설명하면? 모든 정점들을 두 가지 색으로만 칠하되, 인접한 정점끼리는 서로 다른 색을 칠해야 하는 그래프! 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프. DFS, BFS로 각각의 정점을 돌아다니며 한 가지 색으로 칠합니다. 다음 정점으로 방문하면서 인접 정점들은 다른 색으로 칠합니다. 탐색 진행시 자신과 인접 정점이 같은 색이면 이분 그래프가 아닙니다. 이분 그래프 특징 그래프의 정점의 집합을 둘로 분할하여 각 집합에 속한 정점끼리는 서로 인접하지 않도록 하는 그래프입니다. DFS와 BFS로 구현이 가능합니다. BFS의 경우 같은 레벨의 정점들은 모두 같은 색깔을 칠한다고 생각하면 쉽습니다. 연결 성분의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wT8DS/btqTyBtlq46/6iTgWgfOGPuxhHjs6LXJck/img.gif)
DFS 넓게(wide) 탐색하기 전에 깊게(deep) 탐색합니다. 모든 노드를 방문하고자 할 때 이 방법을 선택합니다. BFS보다 좀 더 간단합니다. 검색 속도 자체는 BFS보다 느립니다. BFS 깊게(deep) 탐색하기 전에 넓게(wide) 탐색합니다. 두 노드 사이의 최단 경로 또는 임의의 경로를 찾고자 할 때 이 방법을 선택합니다. BFS는 재귀적으로 동작하지 않으며 선입선출(FIFO) 원칙으로 탐색합니다. 간선의 가중치가 1이거나, 정점과 간선의 개수가 적을 때 사용하면 효율적입니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cmMR0L/btqTLxQSqgb/xBEFDZPl9qGNc4HWl4syxK/img.jpg)
BFS(Breath First Search)를 간단하게 설명하면? 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘! 시작 정점부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법입니다. 큐를 이용하여 구현을 합니다. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 합니다. 큐에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리합니다. 위의 과정을 수행할 수 없을 때까지 반복합니다. BFS 구현 과정 인접리스트 import java.util.*; public class Main { public static boolean visited[]; public static int v; public static int e; pub..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKTT3J/btqTDcONnjf/aRTMt4pYvdLbCgyMen1Ib1/img.jpg)
DFS(Depth First Search)를 간단하게 설명하면? 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘! 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수없게 되면 다른 방향으로 다시 탐색을 진행하는 방식입니다. 스택이나 재귀함수를 이용하여 구현합니다. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 합니다. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 있다면 그 노드를 스택에 넣고 방문 처리합니다. 방문하지 않은 인접노드가 없다면 스택에서 최상단 노드를 꺼냅니다. 위의 과정을 수행할 수 없을 때까지 반복합니다. DFS 구현 과정 인접리스트 import java.util.*; public class Main { public static boolean visited[] publi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBo5fI/btqTjC0I4mS/8njng7sxPKMbGS0jUuWkJk/img.jpg)
Delegate란 어떤 객체에서 일어나는 모든 일을 하나의 객체가 처리하지 않고 일부를 다른 객체에게 위임해 처리하는 것 UITextFieldDelegate를 예로 들겠습니다. class StudyViewController: UIViewController , UITextFieldDelegate { @IBOutlet weak var writingTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() writingTextField.delegate = self } func textFieldShouldReturn(_ textField: UITextField) -> Bool { writingTextField.endEditing(true)..
힙 정렬을 간단하게 설명하면? 최대 힙 트리나 최소 힙 트리를 구성하여 정렬! 힙은 완전 이진트리의 일종입니다. 최댓값과 최솟값을 쉽게 추출할 수 있는 자료구조이며 부가적인 메모리가 필요 없습니다. 내림차순 정렬을 위해서는 최대 힙, 오름차순 정렬을 위해서는 최소 힙을 이용합니다. 먼저 최대 힙을 만들고 그 값을 마지막 인덱스의 값과 스왑 해줍니다. 당연하게도 마지막 인덱스는 최댓값으로 채워집니다. 이제 마지막 인덱스는 제외하고 다시 최대 힙을 만들어 마지막 인덱스(i--) 와의 스왑의 과정을 반복해줍니다. 구현 과정 import java.util.*; import java.io.*; public class Main { public static void heapsort(int[] A) { for(int ..
계수 정렬을 간단하게 설명하면? 숫자들 간 비교를 하지 않고 크기를 기준으로 정렬! 모든 데이터의 크기 범위를 메모리 상에 표현할 수 있어야 하며 입력 데이터가 큰 경우 매우 비효율적입니다. 범위 조건이 있는 경우에 한해서 매우 빠릅니다. 배열 인덱스의 크기를 기준으로 정렬합니다. 구현 과정 public class Main { public static void main(String[] args) { int[] arr = {1,3,2,4,1,23,12,12,3,12,3,23,23}; int[] cnt = new int[30]; //최대값의 범위를 30으로. for(int i=0; i
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oRJq2/btqSxCy8La8/v4KTya8mgwEkKpH3cK64D0/img.jpg)
합병 정렬을 간단하게 설명하면? 분할 정복을 이용한 정렬! 모든 숫자를 다 나눈 다음에 비교해 병합하는 분할, 정복 방식의 정렬입니다. 각각의 배열이 독립적으로 분할될 때까지 반으로 나눕니다. 독립적으로 분할된 배열들(왼쪽그룹과 오른쪽 그룹)을 차례차례 비교해 정렬하고 합칩니다. 위의 과정은 분할과정과 정복과정으로 나누어지며 마침내 결합하는 순환적인 형태를 띠고 있습니다. 구현 과정 import java.util.*; public class Main { //합병과정 static void merge(int[] A, int left, int mid, int right) { int i=left; //i는 왼쪽(시작)부터. (왼쪽 그룹) int j=mid+1; //j는 mid+1부터. (오른쪽 그룹) int[]..