목록전체 글 (150)
개발하는 리프터 꽃게맨입니다.
참고: https://powerclabman.tistory.com/13 [C++/알고리즘] 퀵 정렬 (Quick Sort) 참고: https://powerclabman.tistory.com/12 [C++/알고리즘] 분할정복 (Divide and Conquer) + 병합정렬 (Merge Sort) 📕 개요 '분할 정복 알고리즘'이란, 엄청나게 크고 방대한 문제를 해결할 수 있는 단위까지 쪼개서 powerclabman.tistory.com 이번 글은 퀵정렬을 모르면 이해하기 힘듭니다. 📕 문제 N 사이즈의 정수배열 arr 이 존재할 때 배열 arr에서 k번 째로 작은 수를 선택해라 예시) N = 7 arr = {5, 9, 3, 7, 11, 2, 0} k = 4 일 때, 결과값은 5 설명) arr을 오름차순 ..
참고: https://powerclabman.tistory.com/12 [C++/알고리즘] 분할정복 (Divide and Conquer) + 병합정렬 (Merge Sort) 📕 개요 '분할 정복 알고리즘'이란, 엄청나게 크고 방대한 문제를 해결할 수 있는 단위까지 쪼개서 해결한 다음 그것들을 다시 합쳐서 원래의 문제를 해결하고자 하는 알고리즘 기법입니다. 그 powerclabman.tistory.com 📕 개요 퀵 정렬 또한 '분할정복 알고리즘' 기법을 사용해서 빠르게 배열을 정렬하는 알고리즘입니다. 먼저, 퀵 정렬의 아이디어부터 한 번 살펴보도록 합시다. 1. 피벗(Pivot)을 정합니다. 피벗은 임의의 '기준'을 뜻합니다. 2. 피벗을 기준으로 피벗 왼쪽에는 '피벗 보다 작은 값'을 두고, 피벗 오른..
📕 개요 '분할 정복 알고리즘'이란, 엄청나게 크고 방대한 문제를 해결할 수 있는 단위까지 쪼개서 해결한 다음 그것들을 다시 합쳐서 원래의 문제를 해결하고자 하는 알고리즘 기법입니다. 그림처럼 '큰 문제'를 '부분 문제'로 계속해서 분할합니다. 그리고 '부분 문제'를 해결하고, 해답을 조합하여서 원래 문제에 대한 해답을 얻어 내고자 하는 것이 이 알고리즘의 핵심입니다. 논리는 다음과 같습니다. 1. 분할 (Divide) 큰 문제를 매우 작은 부분 문제로 분할합니다. 2. 정복 (Conquer) 가장 작은 단위의 부분 문제를 해결합니다. 3. 조합 (Combine) 하위 문제에 대한 결과를 조합하여, 원래 문제의 답을 얻어 냅니다. 분할 정복법은 대부분 '재귀' 로 구현됩니다. 다음은 분할 정복 알고리즘으..
scanf는 C 언어의 입력 함수입니다. 만약, 7 바이트 사이즈의 char형 string 변수에 'Crabman' 을 입력하면 어떻게 될까요? #define _CRT_SECURE_NO_WARNINGS #include using namespace std; int main() { char string[7]; scanf("%s", string); //Crabman 을 입력하고 싶어! return 0; } 정답은 '오류가 발생한다.'입니다. 보통 프로그램에서 '문자열'은 종단에 '널문자 (\0)'를 추가하여 문자열의 끝맺음을 해줍니다. H e l l o \0 이런 느낌이죠. 그런데, 기본적으로 scanf는 입력 버퍼의 최대 크기를 모릅니다. 그렇기에 7바이트의 버퍼에 문자열을 할당하는 순간 펑! '배열의 크기..