[자바 (JAVA)] 17. 알고리즘이 필요한 이유

귤's avatar
Feb 11, 2025
[자바 (JAVA)] 17. 알고리즘이 필요한 이유

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); } }
      notion image

2. 가우스 연산

  • S : 총 합
  • n : 항의 개수 (10개)
  • a : 첫 번째 항 (1)
  • l : 마지막 항 (10)
notion image
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); } }
notion image

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); } }
notion image

⏰ 브루트 포스 VS 최적화

방법
시간 복잡도
장점
단점
부르트 포스
O(n)
코드가 직관적
데이터가 많아지면 느려짐
가우스 공식
O(1)
계산이 빠름
특정 문제에만 적용 가능
 
Share article

gyul