본문 바로가기
반응형

C29

C, C++ 링크 구현 C++ split 함수 구현 C 언어에서 날짜 구하기 소수 판단 함수 에라토스테네스의 체 - 소수 판단 셔플 Shuffle - 카드 섞기 알고리즘 제곱근 Square root : 바빌로니아 법(The Babylonian Method) 원주율 Pi : 라이프니츠 공식 (Leibniz Formula for π) 100명의 죄수가 살아남을 확률을 높이기 위한 루프 전략 (Loop Strategy) N x N 2차원 배열 뒤집기, 회전하기 (Rotate, Flip 2D Array) 여러가지 나머지 연산 방법 테스트 비트 단위로 출력하기 (Print Bit) 비트 on / off 비트 연산 기본 매크로 함수 (bit macro : get, set, clear, toggle, check) 임시 변수 없이 변수.. 2023. 7. 29.
C, C++ - 비트 단위로 출력하기 (Print Bit) C, C++ 전체 링크 삼성 C형 전체 링크 아래와 같이 %x 옵션을 이용하면 4비트 (0 ~ F)로 값을 출력할 수 있다. #include typedef unsigned long long int ull; int main(void) { ull h = 1023; printf("0x%08X\n", h); return 0; } 이제 변수가 주어질 때, 1 비트 단위로 출력하는 함수를 만들어보자. printBitNumber를 템플릿을 이용해서 만들고 mask를 이용해 최상위 비트부터 하나씩 내려가면서 출력한다. // signed에서 error 발생 #include typedef unsigned char uc; typedef unsigned short us; typedef unsigned int ui; typed.. 2023. 6. 3.
비트 on / off C, C++ 전체 링크 삼성 C형 전체 링크 참고 - 비트 단위로 출력하기 구현은 아래를 참고하자. #include template void printBitNumber(T number) { unsigned int bitSize = sizeof(number) * 8; T mask = (1ull) = 1; if (i % 8 == 7) printf(" "); } putchar('\n'); } int main(void) { int x; printf("제일 오른쪽 1-비트 끄기 (ex: 01011000 => 01010000)\n"); x = 2152; printBitNumber(x); x &= (x - 1); printBitNumber(x); printf("===============================.. 2023. 1. 24.
N x N 2차원 배열 뒤집기, 회전하기 (Rotate, Flip 2D Array) C, C++ 전체 링크 2차원 배열의 크기가 N x N인 경우 배열을 뒤집거나 회전하는 코드는 다음과 같다. #include #define SIZE (5) int map[SIZE][SIZE]; void init(int map[SIZE][SIZE]) { int count = 1; for (int i = 0; i < SIZE; i++) for (int k = 0; k < SIZE; k++) map[i][k] = count++; } void printMap(int map[SIZE][SIZE]) { for (int i = 0; i < SIZE; i++) { for (int k = 0; k < SIZE; k++) printf("%02d ", map[i][k]); putchar('\n'); } putchar('\n.. 2022. 11. 27.
100명의 죄수가 살아남을 확률을 높이기 위한 루프 전략 (Loop Strategy) C, C++ 전체 링크 무한히 작은 확률을 30%까지 올리는 기적의 전략 확률 1000000000000000000000000000000배 높이기 구현 with Veritasium https://www.youtube.com/watch?v=PE4vLbyOgw0 ▲ 유튜버 베리타시움의 영상인 퀴즈를 직접 구현해보자. 영상이 길다면 fmkorea의 요약본을 보자. 1부터 100까지 번호가 매겨진 죄수가 있다. 이때 각 죄수의 번호가 적힌 쪽지가 100개의 상자에 무작위로 담겨있다. 죄수들은 한 번에 한 명씩 방에 들어가서 50개의 상자를 열 수 있다. - 이때, 자신의 번호를 찾아야 한다. 50개를 모두 열어본 후에는 방을 들어왔던 상태와 완벽히 동일하게 복구하고 나가야 한다. 만약 100명의 죄수가 모두 자신.. 2022. 9. 24.
C, C++ - Window Visual Studio에서 폴더의 모든 파일 통합하기 C, C++ 전체 링크 참고 - 폴더, 파일 관리 함수 정리 with sys/stat.h, dirent.h, fstream isDirectory - 폴더 / 파일 체크 함수 getAllFilePath - 해당 경로를 모두 읽어오는 함수 deleteDirectoryFiles - 폴더, 파일 삭제 함수 deleteAllDirectoryFiles - 모든 폴더, 파일 삭제 함수 fileCopy - 파일 복사 함수 numOfDigits - 자릿수를 세는 함수 padStart - 자릿수의 빈칸을 앞부분부터 특정 문자로 채우는 함수 split - 특정 문자열 기준으로 분해하는 함수 getExtension - 파일의 확장자를 얻는 함수 아래와 같이 MyFiles 폴더가 있다고 하자. 여기에 있는 파일들을 한꺼번에 하.. 2022. 8. 9.
원주율 Pi : 라이프니츠 공식 (Leibniz Formula for π) C, C++ 전체 링크 라이프니트 원주율 공식은 아래와 같은 분모가 홀수인 값의 교대 급수에서 유도된다. 따라서 원주율 π (pi)는 교대 급수에 4를 곱한 값이 된다. precisionCount를 넘겨 받는 메서드를 만들어서 정밀도를 확인해보자. #include double pi(int precisionCount) { double leibniz = 0; int odd = 1; int inverse = 1; for (int i = 0; i < precisionCount; i++, odd += 2, inverse *= -1) { leibniz += 1 / (double)(odd * inverse); } return 4.0 * leibniz; } int main() { printf("%.15f\n", pi(.. 2022. 8. 1.
셔플 Shuffle - 카드 섞기 알고리즘 C, C++ 전체 링크 삼성 C형 전체 링크 1~10까지 카드가 있다고 가정하자. 이때, 카드를 N번(20) 적당히 섞어보자. stdlib.h를 선언하면 rand()함수를 이용할 수 있다. 카드가 총 10장이므로 카드의 size = 10으로 rand() % size를 하면 10장 중 1개의 카드를 랜덤으로 고를 수 있다. 카드를 2장 랜덤으로 골라 교환하면 카드가 섞인다. #include #include /* rand() 사용을 위한 선언 */ int main(void) { int N = 20; int card[] = { 1,2,3,4,5,6,7,8,9,10 }; int size = sizeof(card) / sizeof(int); for (int i = 0; i < N; i++) /* N번 교환 */ .. 2022. 7. 8.
C 언어에서 날짜 구하기 C, C++ 전체 링크 C에서 현재 날짜를 구하기 위해서는 헤더를 사용한다. base = 0일 때, tm* t에 localtime(&base)를 주고, year에는 1900, month에는 1을 더하면 1970년 1월 1일이 나온다. 즉, base = 0일 때, 1970년 1월 1일을 기준으로 날짜를 계산할 수 있다. 아래의 코드를 실행해보자. #include #include int main(void) { struct tm* t; time_t base = 0; t = localtime(&base); printf("%d %d %d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday); return 0; } 현재 날짜를 구하고 싶다면 base = time(NULL)을 주면.. 2021. 7. 24.
반응형