일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Call-by-reference
- 투자
- C
- java
- Kafka
- request
- windows
- System
- jsp
- JavaScript
- WebProgramming
- 악성코드
- API
- CSS
- function
- HTML
- 윈도우즈
- c++
- CLASS
- 포인터
- query
- algorithm
- UTF-8
- beans
- meta
- 노드
- Sort
- OOP
- 자료구조
- array
- Today
- Total
목록algorithm (5)
hahahia
파스칼의 삼각형이란 아래 사진과 같이 이항계수를 삼각형 모양의 기하학적 형태로 배열한 모양을 듯합니다. ()구하는 점화식은 위와 같이 나타냅니다. 이런식으로 점화식을 구하여 부분 문제를 풀어가며 전체 문제의 해답을 찾아내는 방식을 dp라고 하죠 ㅎㅎ 아래는 n을 입력하면 처음부터 n번째 줄 까지의 파스칼의 삼각형을 구하는 예제 소스입니다 /* 파스칼의 삼각형 구하는 예제(dp) */#include using namespace std; int arr[100][100] = {0, }; int main(){ int n; cin >> n; for(int i=0; i
음 보통 알고리즘 문제 풀거나 계산을 많이 하는 과정에서 *2를 하거나 /2를 하는 계산이 꽤나 많이 있는데....(2의 n승 전부)보통은 a *= 2, 또는 a /= 2 이런식으로 곱하기 나누기를 하지만 사실은 그것보다 더 시간을 빠르게 사용하여 계산을 할 수 있다.그것이 바로 쉬프트연산!!!!!!!!! 간단하게 숫자 5로 예를 들어보겠습니다. 숫자 5를 2진수로 나타내면(8bit) 0 0 0 0 0 1 0 1 이런식으로 나타나겠죠??그럼 이 숫자 5에다가 2를 곱해보겠습니다. 그러면 5 * 2 = 10 이 되겠죠이 숫자 10을 다시 2진수로 나타내보도록 하겠습니다 0 0 0 0 1 0 1 0 자 여기서 벌써 알아보신분들도 계실텐데...(아닌가 ㅎㅎ) 1이 있는 비트들이 왼쪽으로 한칸씩 이동한 것을 볼..
Selection Sort(선택 정렬)- n개의 원소들 중에서 첫 번째 값을 키로 하여 남은 데이터 중에서 최소 값을 선택하여 비교한 후, 선택한 값이 키 값보다 작으면 서로 교환, 그렇지 않으면 다음 값을 키로 하여 n-1만큼 반복 수행하는 정렬이다. ex) n=5, 8 3 4 9 7초기 : 8 3 4 9 7 1단계 : (3)(8 4 9 7) 2단계 : (3 4)(8 9 7) 3단계 : (3 4 7)(9 8) 4단계 : (3 4 7 8 9) /* selection.cpp */ #include using namespace std; void swap(int *, int *); int main() { int n, min; int arr[100]; cin >> n; for(int i=0; i> arr[i]; ..
Member function - begin, end, empty, insert, erase, Find, size, clear 형식 : map mp; /* 주어진 한 줄의 문자열을 map을 사용하여 오름차순으로 A~Z까지 몇 번 나왔는지 출력 “ABABAZCDEBOOZQRSSRRR” A : 3 D : 1 Q : 1 Z : 2 B : 3 E : 1 R : 4 C : 1 O : 2 S : 2 */ #include #include #include using namespace std; int main() { string s; map mp; map::iterator it; cin>>s; for(int i = 0 ; ifirst, (it->second)+1); } mp.clear(); }
분할정복 접근법을 이용한 merge sort 분할 : 정렬할 n개의 원소의 수열을 n/2개씩 두 개의 부분 수열로 분할한다. 정복 : 병합 정렬을 이용해서 재귀적으로 그 두 부분 수열을 정렬한다. 결합 : 정렬된 두 개의 부분 수열을 병합해 하나의 정렬된 수열을 만든다. -> 여기서 정렬할 수열의 크기가 1이 되면 다 정렬된것이므로 더이상 재귀적 호출은 일어나지 않게됩니다. 병합을 위한 과정으로는 Merge(A,p,q,r)이 필요한데 여기서 A = 배열, p,q,r은 index입니다(p