백준 알고리즘3 백준알고리즘_2751_정렬 (힙정렬) (C언어) 사실 시간 복잡도 O(nlogN)의 알고리즘은 기초알고리즘 게시판에서 다 정리했지만.. 혹시 까먹었을까 싶어 한 번 풀어봤습니다. 오랜만에 짜봐서 그런지 또 시간이 꽤 걸렸네요. ㅎㅎ 시간 복잡도를 낮추려면 병합정렬, 퀵정렬, 힙정렬 세 가지 중 하나를 사용하면 됩니다. 저는 제일 좋아하는 힙정렬을 사용했습니다. 알고리즘 설명은 아래 링크글에 있습니다. 2019/12/09 - [C언어/알고리즘 및 자료구조] - 정렬알고리즘_힙 정렬 [6/8] #include #include void heap(int* arr, int n); void swap(int* arr, int x, int y); int main() { // 배열 생성, 스택에 담기엔 너무 크다고 에러나서 동적 할당 int* arr = (int*)m.. ▸알고리즘 문제 풀이 2019. 12. 9. 백준알고리즘_10870_재귀함수_피보나치수열 (C언어) 자바 공부하다가 머리가 아파서 잠시 머리도 식힐겸 알고리즘으로 돌아와서 C를.. 자바의 객체 개념은 정말 어렵네요. 외울 것도 많고.. 재귀함수 버전 피보나치 수열은 재귀함수 입문용인데 의외로 인터넷 보면 어마어마한 성능을 요구하는 재귀함수를 정답이라고 올려두신 분들이 많은 듯 합니다.. 기본적으로 피보나치 수열 공식이 "f(n) = f(n-1) + f(n-2)" 이라고 아래와 같이 그대로 재귀함수 코드를 짰다가는 컴퓨터한테 혼납니다. 컴퓨터 성능에 따라 다르겠지만 대략 제 컴퓨터에서는 35이상 넘어가면 연산 시간이 1초를 넘어가네요. #include int pivo(int num); int main() { int num; scanf("%d", &num); printf("%d", pivo(num + .. ▸알고리즘 문제 풀이 2019. 12. 9. 백준알고리즘_11729_재귀함수_하노이탑 이동 (C언어) 처음 풀어본 알고리즘 문제인데 이틀이 꼬박 걸렸습니다. 그런데 모범답안보니 너무 간단하네요. ㅠ 하노이탑 이동 원리를 아는 것 자체는 사실 무의미하지만 이 문제를 푸는 사고 과정 자체가 확립 되는 것이 중요할 것 같습니다. 머리 좋은 사람 참 많네요. 전 모범답안 보고도 한참 헤맸는데.. 재귀함수가 모두 그렇듯, 키 포인트는 함수 자체가 계속 부분집합으로 발생했다 없어지는 방식이라는 것입니다. 일반적인 사고 방식과 같이(저처럼..) 전체를 보면서 풀어나가면 답이 없습니다. 제가 이틀 걸려 짠 코드는 가장 아랫쪽에 남겨둡니다. 흑역사네요. 간단히 3개짜리 원판 옮기기 구조만 보면 나머지는 로직만 주고 컴퓨터에게 맡길 수 있습니다. 실제로 원판이 7개쯤 되면 손으로 그리기도 힘듭니다. 세 개짜리 원판에서 가.. ▸알고리즘 문제 풀이 2019. 12. 9. 이전 1 다음 💲 추천 글 반응형