알고리즘이란?
알고리즘이란?
문제를 해결하기 위한 여러 동작들의 모임입니다. 이를 해결하기 위해 수학적이고 논리적으로 정의된 계산 단계에 따라 원하는 출력을 하는 절차를 거칩니다.
통상적으로 알고리즘은 입력과 출력을 갖고 있습니다. 오류가 존재하면 안되는 점(명확성) 그리고 메모리의 가용영역을 고려하여 효율적인 알고리즘을 작서앻야 합니다.
하나의 알고리즘을 예로 들어보겠습니다. 하기 알고리즘은 최대 공약수를 구하는 알고리즘입니다. 최대 공약수라 함은 손으로 쉽게 구할 수 있지만 코드화 하여 알고리즘을 통해 구할 수 있는 부분도 있습니다.
본 알고리즘 로직은 큰 수에서 작은 수를 빼는 가정을 두 수 중 하나가 0이 될 때까지 반복하면, 0이 아닌 수가 최대공약수입니다.
1
2
3
4
5
6
7
|
algorithm gcd(a, b)
while a*b != 0 do
if a>b
a=a-b
else
b=b-a
return a+b
|
cs |
다른 방법으로는 %, 모듈러 연산을 이용해서 구할 수 도 있습니다. 이처럼 다양한 시각에서 접근하여 문제를 해결할 수 있는 영역이 알고리즘입니다.
1
2
3
4
5
6
7
|
algorithm gcd(a, b)
while a%b != 0 do
if a>b
a=a%b
else
b=b%a
return a+b
|
cs |
알고리즘 학문에서는 먼저 가상컴퓨터, 가상언어, 가상코드으로 표현한뒤에 알고리즘 성능은 수행시간(시간 복잡도)으로 정의됩니다. 하지만 우리가 구현하는것들은 HW/SW 환경을 통합해야 실질적인 시간을 측정할 수 있으므로 어려움이 있습니다. 따라서, 가상언어로 작성된 코드를 써서 HW/SW에 독립적인 환경을 계산합니다.
'알고리즘' 카테고리의 다른 글
알고리즘12 :: BOJ_2577_숫자의개수 (0) | 2019.02.23 |
---|---|
알고리즘11 :: BOJ_더하기사이클_1110번 (0) | 2019.01.05 |
알고리즘10 :: 쇠막대기 (0) | 2019.01.04 |
정렬 알고리즘 (0) | 2018.12.25 |
Dynamic Programming (0) | 2018.12.24 |
댓글
이 글 공유하기
다른 글
-
알고리즘11 :: BOJ_더하기사이클_1110번
알고리즘11 :: BOJ_더하기사이클_1110번
2019.01.05 -
알고리즘10 :: 쇠막대기
알고리즘10 :: 쇠막대기
2019.01.04 -
정렬 알고리즘
정렬 알고리즘
2018.12.25 -
Dynamic Programming
Dynamic Programming
2018.12.24