알고리즘 - 시간 복잡도와 공간 복잡도

awarduuu·2023년 3월 9일
0

230309

1. 효율성

시간 복잡도

주어진 문제를 해결하기 위한 연산 횟수(실행 속도)

  • 일반적으로 1억 번의 연산 = 1초

  • 시간 복잡도 표기법

    	- 빅 오메가 : 최선일 때 연산 횟수
    • 빅 세타 : 보통일 때 연산 횟수
    • 빅 오 : 최악일 때 연산 횟수
  • 코테에서는 빅오 표기법을 기준으로 수행시간 계산!!

공간 복잡도

프로그램이 사용하는 메모리 크기

  • 일반적으로 알고리즘 문제에서 메모리 크기 제한 ex) 128MB, 256MB, 512MB,...
  • 보통 while문의 무한루프에 빠지게 되는 경우 발생

2. 배열

메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조

  • 배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있다.

java.util.Arrays 클래스

  • 배열을 다루는 다양한 메소드를 포함
  • 모든 메소드가 static 메소드이므로 객체 생성 없이 바로 사용
package Day1;

import java.util.Arrays;

public class ArrayTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int [] arr = new int [6];
		
		System.out.println(arr);
		System.out.println(Arrays.toString(arr));

		// Arrays fill(배열, 값) >> 해당 배열을 특정 값으로 채움
		Arrays.fill(arr, 100);
		System.out.println(arr);
		System.out.println(Arrays.toString(arr));
		
		// 배열 재할당
		arr = new int [] {1, 2, 3, 4, 5};
		System.out.println(arr);
		System.out.println(Arrays.toString(arr));

		Arrays.sort(arr);
		System.out.println(arr);
		System.out.println(Arrays.toString(arr));
		
		// 배열 복사
		int [] copyArr = Arrays.copyOfRange(arr, 1, 3);
				
		System.out.println(copyArr);
		System.out.println(Arrays.toString(copyArr));
		
		// 2차원 배열을 출력
		int [][] arr2d = {{1, 2}, {3, 4}, {5, 6}};
		System.out.println(arr2d);
		
		for(int i=0; i<3; i++) {
			System.out.println(Arrays.toString(arr2d[i]));
		}
		
		System.out.println(Arrays.deepToString(arr2d));


	}

}
profile
선한 영향력을 만드는 개발자

0개의 댓글