기수정렬(Radix Sort)

기수정렬은 데이터를 자릿수 기준으로 나누어서 정렬을 수행합니다. 예를 들어, 10진수의 경우 각 자릿수는 0부터 9까지의 숫자 중 하나입니다. 따라서, 10진수 데이터를 기수정렬할 때는 0부터 9까지의 숫자를 각 자릿수로 사용하여 정렬을 수행합니다. 기수정렬의 구체적인 과정은 다음과 같습니다. 가장 작은 자릿수부터 가장 큰 자릿수까지 반복적으로 정렬을 수행합니다. 각 자릿수별로 데이터를 정렬하기 위해, 해당 자릿수의 값에 따라 버킷에 데이터를 넣습니다. 버킷에 있는 데이터를 순서대로 꺼내서 다시 배열에 넣습니다. 이때, 버킷에 들어있는 데이터의 순서는 유지됩니다. 가장 큰 자릿수까지 반복하면, 정렬이 완료됩니다. 기수정렬은 안정적인 정렬 알고리즘이며, 데이터의 크기와 무관하게 일정한 시간복잡도 O(d *..

백준 7568번 덩치 [C언어]

다른 사람들의 풀이를 보면 int로 되어 있는데, 범위가 256 이하이니 uint8_t로 풀이해도 상관없다 할 수 있다. #include int main(void) { unsigned char total; unsigned char spec[51][2]; // 200 * x, y, z scanf("%d", &total); for (int i = 0;i < total;i++) { scanf("%d %d", &spec[i][0], &spec[i][1]); } for (int i = 0;i < total;i++) { int k = 1; for (int j = 0;j < total;j++) { if (spec[i][0] < spec[j][0] && spec[i][1] < spec[j][1]) k++; } prin..

백준 17478번 재귀함수가 뭔가요? [C언어]

서론부터 얘기하자면 상당히 화난다. 여기에서 언더바가 표시가 안돼서 한참 오류를 못 찾다가 검색으로 찾았다. 나는 처음에 띄어쓰기인 줄 알았다. 그래서 오답률이 높구나.... 시간만 버린 문제 언더바를 따로 함수를 구현해서 만들수도 있었는데, 그냥 for문 만들어서 복붙했다. #include #pragma warning(disable: 4996) int count = 0; char jh(int n) { for (int i = 0;i < count;i++) { printf("____"); } printf("\"재귀함수가 뭔가요?\"\n"); if (n == 0) { for (int i = 0;i < count;i++) { printf("____"); } printf("\"재귀함수는 자기 자신을 호출하는 함..

백준 3034번 앵그리 창영 [C언어]

간단한 문제인데, 성냥개비 자체를 박스에 억지로 넣으려면 대각선으로 넣는게 젤 베스트일 것이다. 그래서 sqrt함수를 사용하여 피타고라스 정의에 의한 길이를 구했다. @pow함수를 사용해 두 번째 매개변수에 0.5를 대입해도 옳바른 정답이 도출된다.@ #include #include #pragma warning(disable: 4996) int main(void) { int n, w, h; scanf("%d %d %d", &n, &w, &h); int capacity; capacity = sqrt((w * w) + (h * h)); for (int i = 0; i < n; i++) { int stick;scanf("%d", &stick); if (stick

백준 2231번 분해합 [C언어]

#include /* 생성자를 2로 나눴을 때, 2곱하기? */ int main(void) { unsigned char source[10000]; scanf("%s", &source); unsigned char len; len = strlen(source); int size = atoi(source); if (len

백준 2798번 블랙잭 [C언어] - 브루트 포스

브루트 포스는 완전 탐색으로 문제를 해결하기 위해 가능한 모든 경우의 수를 계산하는 방법이다. 전체 탐색을 하기 때문에 정답을 찾는 데에선 문제가 없다. 하지만 탐색 시간이 오래걸리는 단점이 있다. 데이터셋의 구조에 따라 1. 선형구조 : 순차탐색 2. 비선형구조 : BFS, DFS 로 문제를 해결한다. /* 브루트 포스 */ #include #pragma warning(disable: 4996) int card[100] = { 0, }; int main() { int m, n; scanf("%d %d", &n, &m); for (int i = 0; i < n;i++) scanf("%d",&card[i]); int min = m; int index[3] = { 0, }; // 카드 인덱스 for (int..

백준 11729번 하노이탑 이동 순서 [C언어]

이 문제를 해결하기 위해 다음과 같은 자료들을 참고했다. 1. 가장 큰 도움이 되었던 블로그 https://shoark7.github.io/programming/algorithm/tower-of-hanoi '하노이의 탑' 이해하기 '하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다. shoark7.github.io 2.도움이 된 유튜브#1 https://www.youtube.com/watch?v=uSSC0aKXbWQ 3.도움이 된 유튜브#2 https://www.youtube.com/watch?v=Xu5GC_7YIeQ #include #include #pragma warning(disab..

백준 2447번 별 찍기 -10 [C언어]

이 문제 레전드다. https://cryptosalamander.tistory.com/38 [백준 / BOJ] - 2447번 별 찍기 -10 C++ 풀이 백준 - 단계별로 풀어보기 [2447] https://www.acmicpc.net/problem/2447 문제 위 그림과 같은 규칙성을 가지는 프렉탈 도형에서, 3의 제곱수인 임의의 값 N을 입력받았을 때, N*N의 그림을 재귀적으로 출력하 cryptosalamander.tistory.com 이 블로그를 참고하지 못했다면 절대 못 풀었다. #include #pragma warning(disable: 4996) int star(int i,int j, int n) { if ((i / n) % 3 == 1 && (j / n) % 3 == 1) { printf..