분류 전체보기
-
코드잇 백엔드 스프린트 - 5주차 위클리 페이퍼 : HashSet 와 O(n)과 O(log n)의 성능 차이개발/활동 2025. 3. 9. 23:44
1️⃣ HashSet의 내부 동작 방식과 중복 제거 메커니즘🔹 HashSet은 어떻게 동작하는가?HashSet은 내부적으로 HashMap을 활용하여 데이터를 저장합니다.HashSet의 각 요소는 HashMap의 Key로 저장되며, Value는 더미 값(Dummy Value) (PRESENT)가 사용됩니다.hashCode() 를 이용해 데이터를 저장할 버킷(Bucket) 을 결정합니다.같은 해시 값이 발생하면 equals() 메서드를 사용해 중복 여부를 확인합니다.🔹 HashSet의 중복 제거 과정새로운 값을 추가(add) 하면, HashSet 내부에서 hashCode() 값을 계산하여 버킷 위치를 찾음해당 위치에 이미 값이 있으면 equals()로 비교같은 값이면 추가하지 않음(중복 제거), 다른 값..
-
코드잇 백엔드 스프린트 - 4주차 위클리-페이퍼 : 특정 함수변환개발/활동 2025. 3. 3. 22:25
위클리 페이퍼는 이론 수업에서 배운 내용에 관련된 특정 주제에 대하여 심화 학습을 하고, 학습한 내용을 문서로 작성하는 과제입니다. Stream API의 map과 flatMap의 차이점을 설명하고, 각각의 활용 사례를 예시 코드와 함께 설명해주세요.🔍 Stream API의 map() vs flatMap() 차이점map()과 flatMap()은 Java Stream API에서 데이터 변환을 수행하는 중요한 메서드야.하지만 동작 방식이 다르며, 사용할 상황이 다름.메서드 주요 특징 반환 타입map(Function)입력 데이터를 특정 함수로 변환Stream (중첩 구조 가능)flatMap(Function>)Stream>을 평탄화(Flattening)하여 단일 Stream로 변환Stream (중첩 구조 제거)..
-
코드잇 백엔드 스프린트 - 4주차 워클리 페이퍼 : SOLID 원칙개발/활동 2025. 3. 3. 22:19
위클리 페이퍼는 이론 수업에서 배운 내용에 관련된 특정 주제에 대하여 심화 학습을 하고, 학습한 내용을 문서로 작성하는 과제입니다. 객체지향 프로그래밍 설계원칙에서 '단일 책임 원칙(SRP)'과 '개방-폐쇄 원칙(OCP)'에 대해 설명하고, 각각의 원칙을 적용한 코드 예시를 들어주세요. Java로 SOLID 원칙각 원칙마다 잘못된 예시(위반)와 개선된 코드(적용)를 비교하며 설명할게! 🚀1️⃣ SRP (Single Responsibility Principle) - 단일 책임 원칙"하나의 클래스는 하나의 책임만 가져야 한다."❌ 잘못된 예시 (SRP 위반)class 직원 { private String 이름; private double 급여; public 직원(String 이름, dou..
-
DP(동적 계획법, Dynamic Programming ) - 유형정리개발/알고리즘 2025. 3. 3. 21:39
쳇 GPT 가 대표적인 DP 유형 10가지를 정리한 것을 공유드립니다.✅ 1. 배낭 문제 (Knapsack DP)✔ 특징: 배낭에 최대한 많은 가치를 넣는 문제.✔ 예제 문제:0/1 배낭: 백준 12865 - 평범한 배낭무제한 배낭: 백준 2293 - 동전 1다중 배낭: 백준 12920 - 평범한 배낭 2점화식 예시 (0/1 배낭):dp[w]=max(dp[w],dp[w−weight]+value)dp[w] = \max(dp[w], dp[w - weight] + value)✅ 2. LIS (Longest Increasing Subsequence, 최장 증가 부분 수열)✔ 특징: 배열에서 가장 긴 증가하는 부분 수열을 찾는 문제.✔ 예제 문제:기본 LIS: 백준 11053 - 가장 긴 증가하는 부분 수열최대..
-
DP(동적 계획법, Dynamic Programming ) - 배낭 이론 정리개발/알고리즘 2025. 3. 3. 21:31
1️⃣ 배낭 문제의 종류배낭 문제는 크게 3가지로 나뉩니다.📌 1. 0/1 배낭 문제 (0/1 Knapsack Problem)✔ 각 물건은 한 번만 넣을 수 있음 (0 또는 1의 선택)✔ 즉, 특정 물건을 "선택하거나 안 하거나" 결정해야 함✔ DP를 활용하여 최적해를 찾음📌 2. 무제한 배낭 문제 (Unbounded Knapsack Problem)✔ 각 물건을 여러 번 선택할 수 있음 (무한히 넣을 수 있음)✔ 주로 "동전 거스름돈 문제"와 유사한 DP 방식 사용📌 3. 부분 배낭 문제 (Fractional Knapsack Problem)✔ 각 물건을 부분적으로 쪼개서 넣을 수 있음✔ 탐욕법(Greedy Algorithm)을 사용하여 해결 가능2️⃣ 0/1 배낭 문제 (DP)✔ 주어진 N개의 물건..
-
DP(동적 계획법, Dynamic Programming ) - 배낭 문제개발/알고리즘 2025. 3. 3. 21:23
1. 0/1 배낭 문제 (0/1 Knapsack)물건을 한 번만 선택할 수 있는 배낭 문제입니다.대표적인 DP 유형 문제로, "물건을 넣을지 말지" 를 결정해야 합니다.점화식 예시: dp[i][w]=max(dp[i−1][w],dp[i−1][w−weight[i]]+value[i])dp[i][w] = \max(dp[i-1][w], dp[i-1][w - weight[i]] + value[i])추천 문제:백준 12865번 - 평범한 배낭 (기본적인 0/1 Knapsack)2. 분할 가능 배낭 문제 (Fractional Knapsack)물건을 부분적으로 쪼개서 넣을 수 있는 문제입니다.그리디 알고리즘을 사용하여, 단위 가치(가치/무게)가 높은 순서대로 선택하면 됩니다.추천 문제:백준 11047번 - 동전 0 (..
-