본문 바로가기
SMALL

Algorithm/Algorithm16

기수 정렬(radix sort) 설명 기수 정렬(radix sort)에 대해 알아보도록 하겠습니다. 기수 별로 비교 없이 수행하는 정렬 알고리즘입니다. 무슨 말인지 잘 모르시겠죠?? 아래의 예를 보시면 금방 이해하실 수 있으십니다. 기수 정렬 예제 10진수로 예를 한번 들어보겠습니다. 아래에 정렬이 되지 않은 수들을 기수 정렬을 통하여서 정렬을 해보도록 하겠습니다. 4, 1, 5, 9, 11, 7, 12, 18, 0, 10, 23, 21, 2 위와 같은 수를 1의 자릿수를 기준으로 정렬을 진행합니다. 0, 10, 1, 11, 21, 12, 2, 23, 4, 5, 7, 18, 9 다음으로 10의 자릿수를 기준으로 정렬을 진행합니다. 0, 1, 2, 4, 5, 7, 9, 10, 11, 12, 18, 21, 23 이렇게 진행을 하면 깔끔하게 정렬.. 2024. 1. 1.
C언어, 다음 소수 찾기 특정 수가 주어진다면 특정 수이상인 소수중 가장 작은 소수를 찾는 알고리즘을 만들어 보도록 하겠습니다. 우선 소수임을 판별해 주는 함수가 필요합니다. 저희는 OdOp_next함수에서 판별하겠습니다. OdOp_next int OdOp_next(long long nb) { long long i; long long standard; i = 2; standard = OdOp_sqrt(nb); while (nb % i != 0 && i 2023. 12. 14.
C언어, 소수 판별하기 소수는 1과 자기 자신 외에는 나누어 떨어지지 않는 수를 말합니다. 즉, 약수가 2개만 존재하는 것입니다. 2, 3, 5, 7, 11, 13, ... 이렇게 다양한 수가 있습니다. 0은 1로도 못 나누기 때문에 소수가 아니고, 1은 약수가 2개가 아니죠. 그렇다면 소수를 판별해 주는 함수를 만들어 보도록 하겠습니다. int OdOp_is_prime(int nb) { int i; if (nb < 2) return (0); i = 2; while (nb % i != 0 && i nb / 2) return (1); return (0); } 앞에서도 설명했다시피 만약 입력받은 수가 2보다 작다면 소수가 아닌 것이기 때문에 0을 리턴해 줍니다. 이제 nb를 i로 나누어줍니다. 이때 나머지가 0이 나오지 않다면 i.. 2023. 12. 13.
C언어, 제곱근 구하기 제곱근을 구하는 알고리즘을 작성해 보도록 하겠습니다. 제곱근이란 제곱의 반대라고 생각하면 편할 것 같습니다. 예를 들어, 4의 제곱근은 무엇일까요? 2를 2번 곱하면 4가 되므로 2가 됩니다. 그렇다면 n의 제곱근은 어떠한 수 X를 2번 곱했을 때 n이 된다면 X는 n의 제곱근이 됩니다. 아래의 함수에서 n을 인자 nb로 받습니다. int OdOp_sqrt(int nb) { long long i; if (nb 2023. 12. 12.
LIST