inblog logo
|
gyul
    자바 (JAVA)

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

    귤's avatar
    귤
    Feb 11, 2025
    [자바 (JAVA)] 17. 알고리즘이 필요한 이유
    Contents
    1.전체 탐색 (브루트 포스)2. 가우스 연산Scanner를 활용했을 때⏰ 브루트 포스 VS 최적화

    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

    RSS·Powered by Inblog