목록2024/05 (15)
Rootable의 개발일기
📌 허프만 알고리즘이란? 압축 단위마다 문자의 출현 빈도를 조사하여 빈도가 높은 순서대로 비트 수가 적은 부호를 부여함으로써 데이터를 압축하는 방식 즉, 많이 사용된 문자는 더 적은 비트로 나타내고, 적게 사용된 문자는 더 많은 비트를 사용하여 효율적으로 문자열을 나타내는 방식을 말한다. 🧩 문자 압축 예제 AAAAAABBBBCDD => 'A' 6개, 'B' 4개, 'C' 1개, 'D' 2개 🏃♂️ 항 합치기 가장 적은 사용 빈도를 가진 두 항을 묶고 그 합을 적어준다. 이와 같이 한번 더 묶는다. 마지막 남은 A까지 묶어주면 다음과 같은 그림이 나온다. 🏃♂️ 비트 부여하기 루트 노드를 기준으로 왼쪽으로 한번 가면 0, 오른쪽으로 가면 1이라고 하겠다. A ➡ 0B ➡ 10C ➡ 110..
❓ 람다식이란? 메서드를 하나의 식(expression)으로 표현한 것 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'라고도 한다. int method() { return (int) (Math.random() * 5) + 1);} 위의 메서드를 람다식으로 바꾸면 다음과 같다. int[] arr = new int[5];Arrays.setAll(arr, (i) -> (int) (Math.random() * 5) + 1); 🎯 람다식의 장점 ✔ 간결한 코드 모든 메서드는 클래스에 포함되어야 하므로 클래스를 새로 만들어야 하고, 객체도 생성해야만 비로소 메서드를 호출할 수 있다. 그러나 람다식은 이러한 과정 없이 오직 람다식 자..
❓ static 이란? 모든 인스턴스에서 공유되는 static 변수 자바에서 static 키워드는 클래스 레벨의 변수나 메서드, 블록을 정의할 때 사용된다. 이는 인스턴스 생성 없이도 접근 가능하며, 모든 인스턴스에서 공유된다. static 변수는 클래스가 로드될 때 Method 영역에 할당되기 때문에 프로그램 시작부터 종료까지 메모리에 유지된다. 이러한 특성으로 인해 모든 인스턴스가 공유하여 사용할 수 있는 변수가 필요할 때 유용하다. 🔎 static 변수 static 변수는 클래스 레벨에서 선언되며, 모든 인스턴스에 의해 공유된다. 그래서 특정 데이터를 모든 인스턴스가 공유해야 할 때 유용하다. 다음은 static 변수 사용 예시다. public class Calculator { public ..
📌 상속(Inheritance)이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 자바의 문법 요소를 말한다. 상속을 통해 우리는 객체지향 프로그래밍에서 다형성을 구현할 수 있으며, 다형성을 통해 재사용성 및 확장성을 높이고 중복된 코드를 제거하는 이점을 얻을 수 있다. 이처럼 상속은 좀 더 구체적인 클래스를 구현하기 위해 사용되는 기법이며, 그로 인해 부모 클래스의 코드를 자식 클래스가 재사용할 수 있다. 하지만 상속에 대해서 다음과 같은 견해가 있었다. "내가 자바를 만들면서 가장 후회하는 일은 상속을 만든 점이다." - James Arthur Gosling의 인터뷰"상속을 위한 설계와 문서를 갖추거나 그럴 수 없다면 상속을 금지하라" - Effective Java by 조슈아 블로크"An ..