본문 바로가기

C C++165

[C/C++] 3번. 진약수의 합 - it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 문제 자연수 N이 주어지면 자연수 N의 진약수의 합을 수식과 함께 출력하는 프로그램을 작성하세 요. ▣ 입력설명 첫 줄에 자연수 N이 주어집니다. (3N; for (int i=1; i 2023. 3. 14.
[C/C++] 2번. 자연수의 합 - it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 문제 자연수 A, B가 주어지면 A부터 B까지의 합을 수식과 함께 출력하세요. ▣ 입력설명 첫 줄에 자연수 A, B가 공백을 사이에 두고 차례대로 입력된다. (1>B; for (int i=A; i 2023. 3. 14.
[C/C++] 1번. 1부터 N까지 M의 배수합 - it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 문제 자연수 N이 입력되면 1부터 N까지의 수 중 M의 배수합을 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 줄에 자연수 N과 M이 차례대로 입력됩니다.(3M; for (int i=M; i 2023. 3. 14.
알고리즘 병합 정렬 완벽 이해하기 병합 정렬이란? 병합 정렬은 나누고 붙이는 과정을 기반으로 한 정렬 알고리즘이다. 하나의 배열을 둘로 나누고, 이를 정렬하여 다시 붙이게 된다. 병합 정렬은 재귀 함수 호출로 정렬할 수 있는 데, 배열을 1/2씩 최대한 쪼갠 후 쪼개진 배열을 정렬하고, 최대한 쪼개진 배열을 둘씩 붙이고, 다시 정렬하고, 다시 붙이고...를 반복한다. 사실 설명보다 아래 그림을 이해하는 편이 더 쉽다. 이 정렬 방식은 최악, 최선 어느 경우에도 O(Nlong(N))의 시간 복잡도를 가진다. 공간 복잡도는 O(n)이다. 코드 부분 부분 해설 코드는 아래와 같은 형식으로 풀 수 있다. 1. 반으로 최대한 쪼갤 수 있을 때까지 쪼갠다. (재귀 함수 호출, 더 쪼갤 수 없을 때는 리턴) 2. 정렬의 가장 왼쪽을 가리키는 값(p1.. 2022. 10. 29.