1.전체 탐색 (브루트 포스)
- 무작정 더하기 (for문을 돌면서)
package algo;
public class BruteForce {
    public static void main(String[] args) {
        // O (n)
        int n = 1000000;
        int sum = 0;
        for (int i = 1; i <= n; i++) { // 모든 숫자를 더함
            sum = sum + i;
        }
        System.out.println("합: " + sum);
    }
}
2. 가우스 연산
- S : 총 합
- n : 항의 개수 (10개)
- a : 첫 번째 항 (1)
- l : 마지막 항 (10)

package algo;
import java.util.Scanner;
public class Gauss {
    // 가우스 연산을 사용하여 한 번에 계산이 가능하게 만들기 O(1)
    // 가우스 공식 = S = n*(a+l)/2
    // S = 총 합, n = 항의 개수, a = 첫 번째 항, l = 마지막 항
    public static void main(String[] args) {
        // 1. S (총 합) 필요
        int s = 0;
        // 2. n (항의 개수) 필요
        int n = 10;
        // 3. a (첫 번째 항) 필요
        int a = 1;
        // 4. l (마지막 항) 필요
        int l = 10;
        // 5. 공식 적용해서 더하고
        s = n * (a + l) / 2;
        // 6. S 출력
        System.out.println("s: " + s);
    }
}
Scanner를 활용했을 때
package algo;
import java.util.Scanner;
public class GaussScanner {
    public static void main(String[] args) {
        // 가우스 연산 - 공식 s = n*(a+l)/2
        Scanner sc = new Scanner(System.in);
        // 1. 총합 s 필요
        int s = 0;
        // 2. 첫항 a 필요
        System.out.println("첫항을 입력하세요");
        int a = sc.nextInt();
        // 3. 마지막항 l 필요
        System.out.println("마지막항을 입력하세요");
        int l = sc.nextInt();
        // 4. 항의 개수 n 필요
        int n = l - a + 1;
        // 5. 공식 적용해서 더하고
        s = n * (a + l) / 2;
        // 6. s 출력
        System.out.println("s : " + s);
    }
}
⏰ 브루트 포스 VS 최적화
| 방법 | 시간 복잡도 | 장점 | 단점 | 
| 부르트 포스 | O(n) | 코드가 직관적 | 데이터가 많아지면 느려짐 | 
| 가우스 공식 | O(1) | 계산이 빠름 | 특정 문제에만 적용 가능 | 
Share article