오늘 진행된 강의에서 학습한 내용은 무엇인가요?
요약
1. 자바 표준 라이브러리 활용
- Math 클래스: 제곱근 계산, 절대값 계산 등 수학 관련 함수 제공
- Collections 유틸리티 클래스: 컬렉션 프레임워크 관련 유틸리티 함수 제공 (예: 리스트 정렬)
- Random 클래스: 난수 생성 (범위 지정 가능)
- LocalDateTime 클래스: 날짜와 시간 처리 (현재 날짜/시간, 특정 형식으로 변환)
- Arrays 클래스: 배열 관련 유틸리티 메서드 (예: 배열 정렬, 복사)
2. String 함수 활용
- concat(): 두 문자열 연결
- trim(): 문자열 앞뒤 공백 제거
- startsWith()와 endsWith(): 문자열 시작/끝 확인
- contains(): 문자열 포함 여부 확인
- replace(): 문자열 내용 교체
- split(): 문자열 분리
- toLowerCase()와 toUpperCase(): 문자열 대소문자 변환
- substring(): 부분 문자열 추출
3. 시간 복잡도와 공간 복잡도
- Big O 표기법: 알고리즘 성능 평가 기준 (최악의 복잡도)
- O(1): 상수 시간 (입력 크기와 무관)
- O(N): 입력 크기 N에 비례
- O(N^2): 입력 크기 N의 제곱에 비례
- 시간 복잡도: 알고리즘 실행 시간과 입력 크기의 관계
- 공간 복잡도: 알고리즘 실행에 필요한 저장 공간
- 데이터 구조, 호출 스택 등 고려
- 예시: 데이터 복사 (O(N))
- 복잡도 분석 중요성:
- 코드 효율성 평가 및 문제 해결 알고리즘 선택
- 주먹구구 법칙: 연산 횟수 1억 = 실행 시간 1초
- 시간 제한 고려하여 알고리즘 최적화
이번 주 진행된 팀 스터디에서 얻은 인사이트는 무엇인가요?
시간 복잡도에 대한 개념 학습 사용되는 대표 알고리즘
- 상수 시간 : 배열의 인덱싱
- 로그 시간 : 이진탐색
- 선형 시간 : 배열의 모든 요소 탐색
- 선형로그 시간 : 머지소트, 퀵소트.. (썸머퀵)
- 이차 시간 : 버블정렬, 삽입 정렬
- 지수 시간 : 비효율적인 피보나치, 외판원 알고리즘
- 팩토리얼 시간 : 팩토리얼 알고리즘
알고리즘 풀이 시 최선의 시간복잡도를 고려하도록 생각해야 하는 이유