Archive (13) 썸네일형 리스트형 [ C언어 ] 전처리문 ( #ifndef ) 오늘은 공부하다가 만난 #ifndef를 정리해 보겠습니다. - #ifndef -C 언어를 학습 초기에는 대부분 한 파일에 모두 코드를 작성합니다. 하지만 실력이 초급에서 중급으로 넘어갈 때 즈음 코드의 양이 많아지면서 파일을 여러개로 나눠서 관리해야 할 때가 오죠. 이럴 때 필요한 헤더파일을 #include를 이용하여 추가하게 되는데 같은 헤더파일이 각각의 파일에서 추가하여 중복으로 선언되는 경우가 있습니다. 이를 방지하기 위해서는 #ifndef를 적절히 활용하면 됩니다. 예를 들어 배열리스트를 작성할 때 인터페이스 부분인 헤더파일과 구현부분인 c파일, 그리고 메인함수를 구현한 파일 이렇게 3부분으로 나누었다면 인터페이스 부분인 헤더파일을 나머지 두 파일에서 모두 추가해줘야 합니다. 이럴 때 헤더파일 내.. [UVA] 뒤집어서 더하기 (Reverse And Add) 이 문제도 앞의 문제처럼 아주 쉽습니다. 저처럼 알고리즘에 흥미를 붙이고 싶으신 분들에게만 추천합니다. ^^ - 문제 - 일단 어떤 수를 받아서 그 수를 뒤집은 다음 뒤집어진 수를 원래의 수에 더하는 과정을 뒤집어서 더하기라고 부르자. 그 합이 회문(앞뒤 어느 쪽에서 읽어도 같은 말이 되는 어구. 예:eye, madam)이 아니면 회문이 될 때까지 이 과정을 반복한다. 단, 회문을 찾을 수 없는 것으로 밝혀진 수인 196과 같은 수는 제외한다. 뭐 여튼 회문을 찾을 때 까지 더해지는 횟수와 회문을 출력하는 프로그램을 만들어라. 첫번째 줄에는 테스트 케이스를 나타내는 정수 N(0 [UVA] 공통된 변경 문자열 (Common Permutation) 오늘은 알고리즘을 몇 개 풀어봐서 올려보겠습니다. 아직은 쉬운 것 밖에 풀지 못해서 더욱 분발해야겠습니다. 다행스럽게도 하나씩 풀어가는 재미가 조금은 느껴지네요. ^^ 참고 : uva에 제출해서 확인해 보지는 않았습니다. - 문제 - 두개의 문자열 a, b가 주어졌을 때 글자의 순서를 바꿔서 a의 부분 문자열도 만들 수 있고 b의 부분 문자열도 만들 수 있는 것 중 가장 긴 문자열 x를 출력하라. 입력 예) pretty women walking down the street 출력 예) e nw et #include #include #include #define INPUT_NUM 6 // 임의로 정한 입력 데이터 수 char* chkChar(char a[], char b[]) // 두 문자열에서 공통된 문자.. 이진 탐색 알고리즘 (Binary Search) 이전 글에서 다룬 순차 탐색 알고리즘보다 훨씬 좋은 성능을 보이는 알고리즘입니다. 순차 탐색 알고리즘은 O(n), 이진 탐색 알고리즘은 O(logN)의 시간복잡도를 나타냅니다. 첫번째 index를 first라 하고 마지막 index를 last라 하여 범위를 반으로 좁혀가면서 탐색합니다. 선행조건 - 배열에 저장된 데이터들은 정렬되어 있어야 합니다. while문의 조건 - first 순차 탐색 알고리즘 (Linear Search) 가장 기본적인 탐색 알고리즘으로서 O(n)의 시간 복잡도를 가지고 있다. #include int L_Search(int arr[], int length, int value) { int i=0; for(i = 0; i < length; i++) { if(arr[i] == value) return i; } return -1; } int main() { int arr[] = {5, 3, 8, 2, 9}; int idx; int targetNum; scanf("%d", &targetNum); idx = L_Search(arr, sizeof(arr)/sizeof(arr[0]), targetNum); if(idx == -1) printf("탐색 실패"); else printf("%d 값의 index는 %d입니다.".. 이전 1 2 다음