본문 바로가기

반응형
SMALL

C

Tree 구현하기 Tree를 구현해봤습니다. 노드의 갯수와 간선의 갯수를 받았으며, 노드의 구조체에 부모, 자식의 데이터를 int형으로 구성했습니다. #include #define MAX_TREE_NODE 1000 #define MAX_CHILD_NUM 10 typedef struct _node { int parent; int child[MAX_CHILD_NUM]; }Node; Node Tree[MAX_TREE_NODE]; int NodeNum; int edgeNum; void initTree() { for (int i = 1; i 더보기
Linked List 구현하기 (2) 저번에 간단하게 Linked List를 구현해봤는데, 삽입, 삭제, 조회 기능을 만들지 못해서 이번에 한꺼번에 코드를 작성해 보았습니다. #include #include typedef struct _node { int data; struct _node* next; struct _node* prev; }Node; Node* head = NULL; Node* tail = NULL; Node* cur = NULL; Node* newNode = NULL; void LInsert(int data) { newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; newNode->prev = NULL; if (head == NUL.. 더보기
C에서 문자열 반환하는 함수 만들기 프로그램을 짜다보면 문자열을 반환하는 함수를 만들어야 할 때가 있습니다. 사실 파이썬에선 문자열 반환이 간단한 편인데, C에서는 어떨까요? 어떤 형식으로 반환을 해야 문자열 반환이 가능할까요? const char* string() { return "Hello World!"; } int main(void) { printf("%s", string()); } 위와 같이 const char* 형식으로 반환을 하면 됩니다. 왜 그럴까요? 사실 c에서 문자열이라는 것은 char 데이터로 이루어진 배열을 뜻하게 됩니다. 그렇다면 그 문자열을 가리키는 주소값은 어떤 값을 가리키고 있을까요? c에서 배열을 사용하는 것과 똑같은데, 바로 문자열 제일 처음을 가리키게 됩니다. 그렇게 되므로써 %s를 만나고 '\0' 값을 만.. 더보기
C언어 순열과 조합 최근 문제를 풀다가 계속해서 순열과 조합 문제를 보게 되었는데, 제가 재귀가 약하다보니 항상 문제를 푸는데 어려움이 있었습니다. 그래서 이번에 정리를 잘해서 다시는 찾아보는 일이 없도록 만들고자 포스팅을 하려 합니다. 우선, 순열입니다. #include int arr[4] = { 1, 2, 3, 4 }; int len = 4; void swap(int a, int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } void permu(int N) { if (N == 3) { for (int i = 0; i < 4; i++) { printf("%d", arr[i]); } printf("\n"); } else { for (int i = N; i < 4; i.. 더보기
scanf의 맹점 (2) / 입출력 속도 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW45RuSae2gDFAQ7&categoryId=AW45RuSae2gDFAQ7&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제를 풀다 알게된 점을 소개하려 합니다. 보통 C로 문제를 풀 땐 scanf로 입력을 받는 것이 보통입니다. (제가 그렇습니다) 근데 이 문제는 scanf로 풀면 안되더라고요?? 21개의 TC 중에 0개부터 바로 시간초과 빡 ! 이것 저것 수정해보다가 입력을 어떻게 받는지에 따라서 속도 차이가 있다고 해서 그 부분에.. 더보기
scanf의 맹점 / 입력 버퍼 C언어로 문제를 풀다가 아래와 같은 입력 값을 받았습니다. 1 3 A 10 B 7 C 5 그래서 저는 A와 10을 따로 변수에 담기 위해서 아래와 같은 코드를 이용했습니다. #include int main(void) { int num; char word; int T; int N; scanf("%d", &T); for (int t = 1; t 더보기
"const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. - 에러 수정 C 언어 공부 중 만난 에러입니다. 기본적으로 C 언어에선 포인터 개념을 사용합니다. 문자열에서도 이와 같은 개념을 똑같이 적용할 수 있는데, 분명 책에선 잘 된다고 되어있는데, 작동을 했을 때 에러가 발생해서 그 해결법을 적어보려 합니다. 문제의 코드입니다. #include int main(void) { char* str = "안녕"; printf("%s", str); } 간단하죠? 되게 간단한데 str 포인터가 "안녕"이라는 상수를 가리킬 수가 없습니다. str과 "안녕"의 형식이 달라서 발생하는 오류입니다. 해결방법은 2가지가 있습니다. 1. str을 const로 바꾼다. #include int main(void) { const char* str = "안녕"; printf("%s", str); } .. 더보기
Hash 구현 Hash를 구현해보았습니다. Python에는 Dictionary라는 좋은 라이브러리가 있는데, Pro 시험을 위해서라면 직접 구현을 해봐야겠죠? 어려우니 주석을 잘 봐주시길 바랍니다. #include #include #define MAX_KEY 64 #define MAX_DATA 128 #define MAX_TABLE 4096 int strcmp(char* data1, const char* data2) { int index = 0; while (data1[index] != '\0') { if (data1[index] == data2[index]) { index++; } else { return 1; } } if (data2[index] != '\0') { return 1; } return 0; } voi.. 더보기

반응형
LIST