반응형 [알고리즘 + 자료구조]/[백준]214 [BaekJoon/백준] 10814번 나이순 정렬 문제다. 정렬 후에도, 값이 같은 원소의 전후관계가 바뀌지 않는 정렬 알고리즘을 안정 정렬(stable sort)이라고 한다. 안정정렬에 해당하는 병합정렬을 직접 구현해 풀었다. #include #include #include typedef struct { int age; char name[101]; } person; person *x; void __merge_sort(person a[], int left, int right ){ if(left < right) { // 요소 2개 이상일 경우 int i; int j = 0; int p = 0; int k = left; int center = ( left + right ) /2; __merge_sort(a, left, center); __mer.. 2020. 12. 3. [BaekJoon/백준] 1181번 & 나중에 다시보기 이 문제가 쏘아올린 작은 공이 나에게서 7시간을 앗아갔다. 믿겠는가..? 일단 이 글에 대한 내용은 아래 글과도 연관이 있다. 백준 11650번 hevton.tistory.com/232 11650번부터해서 이 문제도, qsort 사용으로 풀었다. 이 함수는 포인터에 대한 개념을 요하기 때문에 사용하기가 개인적으로 까다롭다.(1차원을 넘어가면). 그래서 사용하지 않으려고 하는데, 자꾸 피하기만하는 것 같아서 개념도 제대로 익혀볼 겸 자꾸 사용하려 하고 있었다. 좋은 마음으로 공부하려다가 아주 개념이 뒤집어 엎어졌다가 세워졌다가 하루종일 혼동 속에 정신없는 시간을 보냈다. 이 함수를 쓰면 쓸수록 포인터에 대한 개념이 헷갈려서 11650번으로 돌아갔다가 11650번이 다시 헷갈려지고.. 결론부터 말하자면, 2.. 2020. 12. 3. [BaekJoon/백준] 11651번 11650번과 매우 동일하다. main에서 qsort 호출 순서만 바꿔주면 된다. #include #include int compa(int **a, int **b) { int x = **a; int y = **b; if(x y) return 1; else return 0; } int compa2(int **a, int **b) { int x = *(*a+1); int y = *(*b+1); if(x y) return 1; else return 0; } int main() { int **x; int nx; scanf("%d", &nx); x = (int**)calloc(nx, sizeof(int *)); f.. 2020. 12. 1. [BaekJoon/백준] 11650번 & 나중에 다시보기 C언어로 이 문제를 푸는 데 꽤 오랜 시간이 걸렸다. 값의 쌍에 대한 문제이다 보니, 배열보다는 다른 방법이 더 좋겠지만 Collection이나 Map 같은 계열을 사용하지 않고, 배열로 풀려고 했다. 정말 솔직하게 3시간이나 걸렸다. 처음엔 안정적인 알고리즘을 이용하여 풀어야된다고 생각했다. "안정적인 알고리즘의 특징을 통해 뒤에꺼 먼저 정렬한 뒤 앞에꺼 정렬하면 될 것" 이라고 생각했으나, 생각해보니 안정적일 필욘 없다. 위치가 같은 두 점이 없을 뿐더러, 있더라도 순서가 바뀌는게 출력값 표현에는 변화가 없으므로.. 따라서 표준 라이브러리에서 제공하는 qsort 함수를 사용했다. 이 함수를 직접 구현해본 기억도 있고, 사용해본 기억도 있지만 아직까지도 너무 헷갈린 듯 하다. qsort 사용에 대해 메.. 2020. 12. 1. 이전 1 ··· 40 41 42 43 44 45 46 ··· 54 다음 반응형