-
[C} algorithm 메크로 관련 알고리즘Algorithm 2009. 4. 29. 01:54반응형
if ((a==10) || (a==20)) { ... }
if (abs(15-a) == 5) { ... }
비교될 두 수의 중점과 비교할 수의 차에 대한 절대값을 한 번만 비교하면 된다. abs 함수가 절대값을 구하므로 abs(15-a)는 abs(a-15)로 써도 결과는 동일하다. 이 예와 같이 단순 변수와 상수를 비교할 때는 큰 차이가 없지만 함수 호출 결과를 비교할 때는 함수를 두 번 호출할 것을 한 번만 호출해도 되는 큰 차이가 발생한다. 이번에는 범위를 점검하는 조건문을 만들어 보자. a가 10~50사이에 있는지 검사하고자 할 때도 abs 함수를 사용할 수 있다.
if ((a>10) && (a<50) { ... }
if (abs(a-30) < 20) { ... }
어떤 값이 특정 범위에 있는지를 절대값으로 검사하는 이 방식은 아주 일반적이며 정형화되어 있는 알고리즘이다. 우리가 이 방법을 직접 사용하지 않는다 하더라도 지능적인 컴파일러는 범위를 비교할 때 이 알고리즘을 적극적으로 활용한다. 두 개의 조건문을 따로 검사하고 && 연산하는 것보다는 절대값을 하나의 값과 비교하는 것이 속도상 훨씬 더 유리하기 때문이다.
반응형'Algorithm' 카테고리의 다른 글
지나가다 본 코드 (0) 2009.11.23 지나가다 본 코드 (0) 2009.11.05 또또 지나가다 본 코드..!! C# 더블쿼션마크 DOUBLE QUESTION MARK (1) 2009.09.22 또 지나가다 본 코드.. (3) 2009.09.02 지나가다 본 코드2 (0) 2009.07.20 어디서 지나가다 본 코드~! ㅋㅋ (0) 2009.06.26