[JAVA] 33. 알고리즘 (1)알고리즘이 필요한 이유

서회정's avatar
Feb 08, 2025
[JAVA] 33. 알고리즘 (1)알고리즘이 필요한 이유

💡
알고리즘은 메모리를 보다 효율적으로 사용하며, 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용할 수 있도록 특정 구조를 이루고 있다.

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 += i; } System.out.println("합: " + sum); } }

2. 가우스 연산

  • s: 총합
  • n: 항의 개수(10개)
  • a: 첫 번째 항(1)
  • l: 마지막 항(10)
notion image
package algo; public class Gauss { public static void main(String[] args) { // 가우스 연산 - 공식 s = n*(a+l)/2 // 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); } }
package algo; import java.util.Scanner; public class Gauss { 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

clubnerdy