오늘 알고리즘 문제는 어제보다 쉬웠다고 생각한다. 그래서 1번부터 6번까지 풀어봤다! 성취감이 많이 컸다. 팀 스터디 하면서 사람들이랑 궁금한 거 물어보고 답변하는 게 생각보다 도움이 많이 된다. 다음에도 이런 질문을 하지 않을까? 이런 생각을 하면서 개념을 찾아보게 된다. 그러면서 더 공부하게 된다. 너무 좋은 현상인 것 같다. 그래서 다른 사람이 내가 공부했던 내용을 물어보면 너무 신나서 와랄랄라 말해버린다. 근데 막 아는 척한다고 생각할까봐 좀 걱정이긴 하지만 ... 그래도 공유하면서 공부하는 게 지금 팀 스터디의 목적이 아닌가 ...?
- 오늘 진행된 강의에서 학습한 내용은 무엇인가요?
해시, 해시 테이블
- 이번 주 진행된 팀 스터디에서 얻은 인사이트는 무엇인가요?
offer와 add의 차이
offer: 큐에 데이터를 추가할 때, 큐가 가득 차 있으면 예외를 던지지 않고 false를 반환합니다. 이는 주로 큐의 용량이 제한되어 있을 때 사용됩니다.
add: 큐에 데이터를 추가할 때, 큐가 가득 차 있으면 IllegalStateException을 던집니다. 이는 용량 제한이 없는 큐에서 사용됩니다.
Hash Map 동작 방식
동작 원리: HashMap은 키-값 쌍으로 데이터를 저장합니다. 내부적으로 배열을 사용하여 데이터를 저장하며, 키의 해시코드를 사용하여 저장 위치를 결정합니다. 해시 충돌이 발생하면 연결 리스트 또는 레드-블랙 트리를 사용하여 충돌을 해결합니다.
valueOf vs parseInt
valueOf: Integer.valueOf() 메소드는 Integer 객체를 반환합니다. 이는 래퍼 클래스의 인스턴스를 의미하며, 객체로서의 추가 기능을 제공합니다.
parseInt: Integer.parseInt() 메소드는 int 기본 타입을 반환합니다. 이는 숫자로서의 값을 직접 나타내며, 메모리 사용량이 더 적고 처리 속도가 빠릅니다.
long vs int
long과 int의 차이: int는 32비트 정수를 저장할 수 있으며, long은 64비트 정수를 저장할 수 있습니다. 따라서, long은 int보다 훨씬 더 큰 범위의 정수 값을 저장할 수 있습니다. int는 일반적으로 대부분의 정수 계산에 충분하지만, 매우 큰 숫자를 다루어야 할 때는 long을 사용해야 합니다.
래퍼클래스 vs 원시타입
래퍼클래스와 원시타입의 차이: 원시타입(primitive types)은 가장 기본적인 데이터 타입으로, int, long, double 등이 있습니다. 반면, 래퍼클래스(Wrapper classes)는 이러한 원시타입의 데이터를 객체로 포장해주는 클래스로, Integer, Long, Double 등이 있습니다. 래퍼클래스는 객체로서의 추가 기능을 제공하며, 제네릭과 같은 곳에서 사용될 수 있습니다.
Hash Map 시간 복잡도
Hash Map의 시간 복잡도: HashMap은 키-값 쌍을 저장하는 자료구조로, 평균적으로 삽입, 삭제, 검색 작업에 대해 O(1)의 시간 복잡도를 가집니다. 하지만 최악의 경우(모든 키가 동일한 해시 값을 가지는 경우)에는 O(n)의 시간 복잡도를 가질 수 있습니다.
람다식이란?
정의: 람다식은 메서드를 하나의 식(expression)으로 표현한 것입니다. 이를 통해 메서드의 이름 없이도 기능의 실현이 가능해져 '익명 함수(anonymous function)'라고도 불립니다 3.형태: (매개변수) -> { 실행문 }의 형태로, 화살표(->)를 사용하여 매개변수와 실행문을 구분합니다.
람다식의 장점
코드의 간결성: 람다식을 사용하면 불필요한 반복 코드를 줄이고, 코드를 더 간결하게 작성할 수 있습니다.지연 실행(Lazy Execution): 람다식은 필요한 순간까지 실행을 미룰 수 있어, 성능 향상에 도움을 줄 수 있습니다 2.
람다식 사용 예
자바에서 람다식은 주로 컬렉션의 요소를 처리하거나, 스레드를 생성할 때 사용됩니다. 예를 들어, 리스트의 각 요소에 대해 특정 작업을 수행하고 싶을 때 람다식을 사용하면 매우 편리합니다.
람다식(Lambda Expression)의 특징
간결함: 코드를 더 간결하게 작성할 수 있습니다.성능: 람다식은 익명 클래스와 달리, == 연산자를 사용하여 객체를 비교할 때 항상 동일한 객체를 재사용합니다. 이는 람다식이 익명 내부 클래스보다 메모리 사용량과 생성 시간을 줄일 수 있음을 의미합니다.
해시 테이블 (Hash Table)
정의: (Key, Value) 쌍으로 데이터를 저장하는 자료구조로, 해시 함수를 사용해 빠르게 데이터를 검색할 수 있습니다. 1특징: 해시 함수를 통해 고유한 인덱스를 생성하고, 이를 사용해 값(value)을 저장하거나 검색합니다. 평균적으로 검색, 삽입, 삭제 연산이 O(1)의 시간 복잡도를 가집니다.
우선순위 큐 (Priority Queue)
정의: 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조입니다. 5특징: 삽입 연산과 삭제 연산 모두 O(log n)의 시간 복잡도를 가집니다. 우선순위 큐는 시뮬레이션 시스템, 네트워크 트래픽 제어, 운영체제의 작업 스케줄링 등에 사용됩니다.
LinkedHashSet
정의: Set 인터페이스를 구현하고 HashSet 클래스를 상속받아, 연결 리스트로 동작하는 클래스입니다. 삽입 순서를 유지합니다. 9특징: 내부적으로 LinkedHashMap을 사용하며, LinkedHashMap에서 키 값만을 검색하여 사용합니다.
- LinkedHashSet의 순서 유지 방법
내부 구현: LinkedHashSet은 LinkedHashMap을 내부적으로 사용하여 요소를 저장합니다. LinkedHashMap은 요소들의 삽입 순서를 유지하기 위해 각 요소에 'before'와 'after'라는 두 개의 필드를 추가하여 연결 리스트로 관리합니다. 이를 통해 요소들이 삽입된 순서대로 순회할 수 있게 됩니다.
댓글