[ 프로그래머스 ]
- 나누어 떨어지는 숫자 배열
: 정답률 84%. 스트림 활용하기,,★
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
Arrays.sort(arr);
List<Integer> list = new ArrayList<>();
for(int a : arr){
if(a%divisor==0) list.add(a);
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return list.size()==0? new int[]{-1} : answer;
}
}
[ 자료구조 & 알고리즘 ]
- 이진 탐색 : 정렬된 상태에서 원하는 값 찾기. O(logN)
- 그래프(노드+엣지) 표현 방법
- 엣지(노드 연결선) 리스트
- 가중치 없는 그래프 : 2행 배열 A[2][]
- 가중치 있는 그래프 : 3행 배열 A[3][]
- 벨만포드, 크루스칼 알고리즘에 사용
- 인접 행렬 N = 노드 갯수. [N][N]
- 시간복잡도, 공간효율성 구림. 노드 갯수 적을 때 사용.
- 인접 리스트
- 가중치 없는 그래프 : ArrayList[N]
- 가중치 있는 그래프 : ArrayList[N]
[ 유어클래스 다시 읽기 ]
- section1
- 컬렉션(Collection)
- 컬렉션 프레임워크(Collection Framework) : 여러 데이터를 그룹으로 묶고 편리한 메서드를 정의해 놓은 것
- 주요 인터페이스 : List(Collection 인터페이스 상속), Set(Collection 인터페이스 상속), Map
- Iterator
- TreeSet : 이진 탐색 트리 형태로 데이터 저장(왼-small, 오-big), 오름차순(기본 정렬 방식)
- Map은 Iterator 직접 호출 불가능. Set으로 변환 후 호출 가능.
- Hashtable과 HashMap의 차이점은 스레드와 관련
- 자바 심화(Effective)
- 애너테이션(Annotation)
- 컴파일러나 다른 프로그램에 필요한 정보 제공
- JDK 기본 제공 애너테이션 : 표준 애너테이션, 메타(사용자 정의) 애너테이션 @interface
- 다른 클래스나 인터페이스를 상속 불가
- 람다(Lambda)
- 함수형 인터페이스(단 하나의 추상 메서드)
- 메서드 참조 : for 간단한 람다식. 정적 메서드, 인스턴스 메서드, 생성자 참조 가능
[ 느낀 점 ]
현재 유튜브 <하루코딩> 알고리즘 코딩테스트 핵심이론 강의 - 28번 그래프의 표현 영상까지 본 상태.
남은 이론 마저 보고, 책도 좀 보다가 실전 문제 풀이 영상도 좀 보고나서 풀어볼 예정..
오늘은 놀러 나갈 예정,,
내일은 오전에 혼공컴운 읽고, 오후에 TDD강의 듣고, 밤에 운동하면 하루 끝날 듯?