42Seoul/c언어
C언어 - 완전 탐색(Brute-force) 알고리즘으로 map에 있는 구멍 찾기
완전 탐색(Brute-force)이란? 가능한 모든 케이스를 다 검사하는 알고리즘입니다. 모든 케이스를 검사하기 때문에 가장 단순하면서 확실하지만, 시간이 오래 걸릴 수도 있다는 단점이 있습니다. 예전에 랜덤한 모양의 2차원 맵을 입력받아, 게임 플레이를 위한 3d맵을 구현하는 프로그램을 작성한 적이 있습니다. 이때, 주어진 맵에 오류가 없는지 검사하는 과정이 필요했는데, 그때 작성했던 알고리즘을 문제로 재구성하여 정리해보았습니다. 문제 : 맵에 있는 구멍 찾기 랜덤한 모양의 맵이 주어진다고 가정합니다. 이때, 맵이 구멍 없이 벽으로 완전히 둘러싸여 있는지 검사하는 알고리즘을 작성해 봅시다. (맵의 사이즈는 가로 100, 세로 100 이하로만 주어진다고 가정) 맵은 0과 1로 이루어져 있으며, 외부는 '..
c언어 - printf()의 서식지정자(format specifier)와 플래그
서식지정자란? 먼저, printf()는 다음과 같은 형태로 정의되어있습니다. int printf(const char *format, ...) printf()가 가변 인수 '...'으로부터 넘겨받은 변수들을 출력하기 위해서는, 각 변수의 자료형에 대한 정보가 필요합니다. 이러한 정보를 안내하는 것이 '%'기호로 시작하는 서식지정자이며, 다양한 플래그를 활용하면 넓이, 좌우 정렬 등의 출력 형태도 설정할 수 있습니다. %[플래그][넓이][.(정밀도)][길이]서식지정자 여기서 '%서식지정자'는 서식지정자를 사용할 때 필수 요소이지만, 그 밖의 플래그나 넓이 등의 옵션은 선택사항입니다. 서식지정자 실제 printf()에는 더 많은 서식지정자들이 있지만, 우선은 ft_printf에서 요구하는 서식지정자들 위주로 ..
c언어 - 가변인자란? 가변인자로 간단한 printf() 구현하기
가변 인자란? 함수의 매개변수 개수가 고정적이지 않고, 변할 수 있다는 의미입니다. printf와 같이 매개변수의 개수가 정해지지 않은 함수를 구현하기 위해 가변 인자를 사용합니다. 반환형 함수명(고정 매개변수, ...) { } 여기서 두 번째 매개변수인 '...'가 가변 인자이며, 가변 인자를 사용하기 위해서는 고정 매개변수가 1개 이상 필요합니다. 가변 인자 사용하기 '...'으로 받아온 가변 인자를 사용하기 위해서는 stdarg.h 헤더를 포함해야 합니다. #include 이 헤더에는 가변 인자를 처리하기 위한 매크로가 포함되어있습니다. va_list 가변인자 포인터. 각 가변인자의 메모리 주소를 가짐 va_list 변수명 va_arg 가변인자 포인터로부터 값을 받아오고, 다음 가변인자 주소로 이동..