본문 바로가기
728x90

전체 글247

재귀 알고리즘 직접 재귀: 자신과 같은 함수를 호출 간접 재귀: 함수 a가 함수 b를 호출하고 다시 함수 b가 함수 a를 호출하는 구조 순차곱셈 (팩토리얼) int factorial(int n){ if(n > 0) return n * factorial(n-1); else return 1; } 유클리드 호제법(최대공약수) int gcd(int x, int y){ if(y == 0) return x; else return gcd(y, x%y); } 하노이의 탑 작은 원반이 위에, 큰 원반이 아래에 위치할 수 있도록 원반을 3개의 기둥 사이에서 옮기는 문제. 모든 원반은 규칙에 맞게 첫 번째 기둥에 쌓여 있고, 이 상태에서 모든 원반을 세 번째 기둥으로 최소의 횟수로 옮겨야 함. 해결 방법: 맨 밑의 원반을 제외한 위의 원.. 2023. 9. 22.
goto문 지정된 라벨로 이동한 후 코드 실행 goto 라벨; 라벨 : 문장 2023. 9. 22.
큐(queue): 선입선출 구조 인큐(enqueue): 데이터를 넣음 디큐(dequeue): 데이터를 꺼냄 프런트(front): 데이터를 꺼내는 쪽 리어(rear): 데이터를 넣는 쪽 배열로 큐 만들기 배열 que[]={1, 2, 3} 인큐: que[3] = 4; 디큐: x = que[0]; -> 이후의 모든 요소를 한 칸씩 앞으로 옮김: 복잡도 O(n) ! 링 버퍼로 큐 만들기 링 버퍼: 배열의 처음과 끝이 연결되었다고 보는 자료구조 첫 번째 요소가 front, 마지막 요소가 rear-1 프런트와 리어의 값을 업데이트하며 인큐와 디큐를 수행하므로 복잡도 O(1) ! 헤더파일 IntQueue.h #ifndef __IntQueue #define __IntQueue typedef struct { int ma.. 2023. 9. 22.
스택 IntStack.h #ifndef __IntStack #define __IntStack typedef struct { int max; //스택 용량 int ptr; //스택 포인터 int* stk; //스택 첫 요소 포인터 } IntStack; int Initialize(IntStack* s, int max); int Push(IntStack* s, int x); int Pop(IntStack* s, int* x); int Peek(const IntStack* s, int* x); void Clear(IntStack* s); int Capacity(const IntStack* s); int Size(const IntStack* s); int IsEmpty(const IntStack* s); int IsF.. 2023. 9. 22.
매개변수 전달 값에 의한 전달(Call By Value) 호출 함수와 피호출 함수의 인자 값은 같지만 메모리는 독립적 int Add(int x, int y){ int x = x + y; return z; } int main(void){ int x = 3; int y = 5; int sum = Add(x, y); printf("%d", sum); //8 return 0; } 참조에 의한 전달(Call By Reference) 호출 함수와 피호출 함수의 인자는 같은 개체 호출 함수에서 메모리 주소를 전달 (포인터 매개 변수 사용) void swap(int *x, int *y){ int temp = *x; *x = *y; *y = temp; } int main(void){ int x = 3; int y = 5; swap(&.. 2023. 9. 22.
[프로그래머스] 등수매기기(C) #include #include #include // score_rows는 2차원 배열 score의 행 길이, score_cols는 2차원 배열 score의 열 길이입니다. int* solution(int** score, size_t score_rows, size_t score_cols) { // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요. int* answer = (int*)malloc(sizeof(int)*score_rows); double* avg = (double*)malloc(sizeof(double)*score_rows); for(int i=0;i 2023. 9. 21.