멋사 Backend 14일차 🦁

신재원·2023년 5월 4일

🐱‍🐉 Java

📄 알고리즘 해결 전략

Array (배열)의 갯수를 선언할때 길이에 딱 맞춰 선언 하지 않아도 됩니다.
( 추후 dp (dynamic programming) 알고리즘 에서는 배열을 일부러 더 만듭니다)

코드를 실행 시켜보면서 문제점을 개선합니다.

  • 답을 출력할때 배열에서 필요한 값을 잘라 제출할수있으며, 출력 조건을 작성하면됩니다.

🐱‍🚀 Big - O 표기법

🚀Big - O 표기법이란 ?

  • 알고리즘을 풀때 시간복잡도와 공간복잡도를 표기하기위해 사용하는 표기법입니다.

  • 여기서 시간복잡도와 공간복잡도란?

연산 횟수를 통하여 얼마나 계산해야되는지를 예측하여 표기하는것입니다.

  1. O(1) 시간 복잡도 : 입력 크기와 상관없이 일정한 시간이 소요됩니다.
public int getFirstElement(int[] arr) {
    return arr[0];
}
  1. O(N) 시간 복잡도: 입력 크기에 비례하여 시간이 소요됩니다.
    ( arr의 배열 크기에따라 시간 복잡도가 비례합니다. )
public int findMax(int[] arr) {
    int max = arr[0];
    for (int i = 1; i < arr.length; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    return max;
}
  1. O(N^2) 시간 복잡도: 입력 크기의 제곱에 비례하여 시간이 소요됩니다.
    ( arr의 배열 크기에따라 for 2중 반복문이 실행됨으로, 제곱하여 비례합니다. )
public void printPairs(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        for (int j = i + 1; j < arr.length; j++) {
            System.out.println("(" + arr[i] + ", " + arr[j] + ")");
        }
    }
}

O(logN) 등등 시간복잡도를 나타내는 표기법이 있습니다.
✔ 필요에따라 찾아보면될것같습니다.

🍘 번외

  • AWSEC2를 띄우고 docker 설치 및 우분투 (리눅스 배포) 까지 해보았습니다.
  • docker 는 관리자 모드로 실행하는게 좋습니다.

0개의 댓글