본문 바로가기

CS/알고리즘

[Introduction to Algorithms] 1. 알고리즘의 역할

1. 알고리즘의 역할

1.1 알고리즘

이 장에서는 우리가 알고리즘을 배우는 이유와 배워서 어떻게 사용할 수 있는지에 대해 간략하게 설명해준다.

먼저, 알고리즘이란 한 값을 입력받아 다른 값으로 출력하는 계산 절차라고 한다.

가장 대표적으로는 임의의 수열을 정렬시키는 정렬 기법이 있다.

여러 알고리즘을 익히고, 사용할 수 있게 된다면 더 훌륭한 프로그래머가 될 수 있을 것이다.

마치 요리사 지망생이 요리사가 되기 위해 많은 레시피를 배워가는 것처럼.

 

1.2 기술로서의 알고리즘

어떤 문제를 풀기 위해서 여러 개의 알고리즘을 구현했다고 했을 때, 가장 최적의 알고리즘을 선택하는 기준은 무엇이 있을까?

나는 효율성이 대표적인 기준이 될 수 있다고 생각한다.

효율이라는 것은 시간과 메모리 두 차원에서 생각해볼 수 있기 때문이다.

그래서 좋은 알고리즘은 시간과 메모리를 적게 사용하는 알고리즘이라고 할 수 있다.

메모리는 돈으로 구매할 수 있다 치더라도, 시간은 돈으로 구매할 수 없다.

 

// 연습문제 1.2-3
// 답 = 16

public class Main {
    public static void main(String[] args) {
        double a = 1, b = 0;
        int i = 1;
        while (a > b) {
            a = 100 * Math.pow(i, 2);
            b = Math.pow(2, i);
            System.out.printf("%d : a = %f - b = %f\n", i, a, b);
            i++;
        }
    }
}