{Programing}(131)
-
알고리즘 - 버블 정렬(Bubble Sort)
서로 붙은 두 요소를 비교해 정렬. 앞에서부터 순차적으로 비교해서 교환하며 맞는 위치까지 계속 이동. 자연스레 기준에 따라 오름차순이면 큰 수가 끝쪽으로, 작은 수가 앞쪽으로 이동됨. 장점 : 구현이 간단. 비교-교환 만 구현하면 됨. 단점 : 불필요한 교환이 발생함. 이미 맞는 위치임에도 교환되거나, 많은 비교및 교환이 일어남. 성능 구데기 구현때문이면 차라리 삽입정렬이나 선택정렬을 쓰자
2020.03.11 -
알고리즘 - 삽입 정렬(Insertion Sort)
카드 정렬 방식으로 자료를 정렬. 정렬할 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열과 비교하여, 자신의 위치를 찾아 '삽입' 1. 배열의 두번째 요소부터 정렬을 시작. 2. 선택한 요소의 왼쪽의 모든 요소와 비교하여 위치를 찾아 '삽입' 3. 배열의 마지막 요소까지 진행하면 끝. 장점 : 안정적. 대부분 정렬된 배열에 대해서는 효율적인 정렬. 요소가 적으면 유리. 단점 : 비교적 많은 요소의 이동이 포함됨. 요소 수가 많고 크기가 크면 적합하지 않음.
2020.03.11 -
알고리즘 - 선택 정렬(Selection Sort)
가장 기초적인 정렬 알고리즘. 정렬 위치에 따라 어떤 값을 넣을지 '선택' 하는 알고리즘. 배열 or 리스트 를 사용하며 추가적인 메모리가 필요하지 않은 정렬방법. 1. 주어진 배열 중 최솟값을 찾음. 2. 그 값을 맨 앞의 요소로 교체 3. 두번째 위치부터 반복. 4. 맨 끝 하나의 요소만 남을 때까지 1~3을 반복. 요소 하나를 '선택' 해서 정렬되지 않은 모든 요소와 비교하며 맞는 정렬위치를 찾아가는 정렬 방법. 알고리즘이 순환하는 시기마다 1회차에는 가장 작은 요소, 2회차에는 두번째로 작은 요소를 '선택'해 나머지와 비교한다. 장점 : 반복회수가 미리 결정. 단점 : 안전성이 만족되지 않는다. 같은 값의 요소가 있다면 상대적인 위치가 변경될 수 있다.
2020.03.11 -
최대 공약수, 최소 공배수
최대 공약수(GCD : Greatest Common Divisor) 두 수의 공약수중 가장 큰 수 첫번째 방법. 2부터 둘 중 작은 수까지 계속 나눠 보는 방법 두번째 방법. 유클리드 호제법 : gcd(a,b) = gcd(b, a%b) 임을 이용. 최소 공배수(LCM : Least Common Multiple) 두수의 공배수중 제일 작은 수 최대 공약수를 이용해 구하는 방법. lcm(a,b) = ab/g ( g = gcm(a,b) ) 오버플로우를 조심. a/g * b/g *g 같은 방식으로 구하면 조금 덜 수 있다.
2020.03.10 -
소수 판별
소수(Prime Number) : 1과 자기 자신으로만 나누어 떨어지는 수. 암호 분야에서 기술적으로 이용하고 있는 중요한 수. 임의의 수 N의 소수 구하기. 첫번째 방법 2~N-1까지 모든 수로 나누어 보면서 나머지가 0인 경우가 있는지 판단하는 방법. 0인 경우가 한번이라도 있으면 소수가 아님. 두번째 방법. 2~ N의 제곱근 까지 모든 수로 나누어보고 나머지가 0인 경우가 없으면 그보다 큰 수는 당연히 없다. 하지만 컴퓨터 입장에서는 제곱근 연산이 부담되므로 첫번째 방법이 나음. 세번째 방법. 에라토스테네스의 체 : 여러개의 수에 대해 소수 판별을 해야할 때 사용할 수 있다. 1. 1을 제외한 모든 수를 표에 적는다. 2. 현재 수가 지워져 있다면 다음 수로 이동. 3. 현재 수가 지워져 있지 않다..
2020.03.10 -
카테고리 정의
이 카테고리는 프로그래밍에 유용하거나 자주사용되는 수학적 내용들을 코드와 함께 정리하는 카테고리
2020.03.10