2023.04.26.WED

ronglong·2023년 4월 26일

[ 프로그래머스 ]

  • 나누어 떨어지는 숫자 배열
    : 정답률 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강의 듣고, 밤에 운동하면 하루 끝날 듯?

0개의 댓글