재귀 : 큰 문제를 해결하기 위해 동일한 유형의 더 작은 문제로 나누는 방식재귀함수 : 자기 자신을 호출하여 반복적으로 더 작은 문제를 해결하고 결과적으로 원래 문제를 해결해 감완전탐색, 동적계획법(DP), 그래프 탐색(DFS), .트리 순회와 같은 문제에 활용됨 구성 요소Base Case(기저 조건)더 이상 문제를 쪼갤 수 없거나, 답이 명확해지는 종료조건Base Case 가 없으면 재귀는 무한히 호출됨 → RecursionError 발생Recursive Call(재귀 호출)문제를 더 작은 문제로 나누고 이를 해결하기 위해 자기 자신을 호출함 1. factorial$1 \text{\textasciitilde} n$ 까지의 정수를 곱한 값public static int factorial(int n) { ..
🔗 Daily Temperatures문제 설명정수 배열 temperatures가 주어집니다. 이 배열은 매일의 기온을 나타냅니다.각 날짜 i에 대해, 그 날보다 더 따뜻한 날이 오기까지 며칠을 기다려야 하는지를 계산하여 배열 answer에 담아 반환하세요.만약 더 따뜻한 날이 없다면, answer[i] = 0으로 설정합니다. 예시 1입력: temperatures = [73, 74, 75, 71, 69, 72, 76, 73]출력: [1, 1, 4, 2, 1, 1, 0, 0]예시 2입력: temperatures = [30, 40, 50, 60]출력: [1, 1, 1, 0]예시 3입력: temperatures = [30, 60, 90]출력: [1, 1, 0] 문제 풀이각 i번째 날의 온도보다 더 따뜻한 날이..
🔗 할인 행사import java.util.*;class Solution { public int solution(String[] want, int[] number, String[] discount) { // want : 원하는 제품 // number : 원하는 제품의 수량 // discount : 할인 제품 Map map1=new HashMap(); for(int i=0;i map2=new HashMap(); for(int j=i;j
🔗 완주하지 못한 선수import java.util.*;class Solution { public String solution(String[] participant, String[] completion) { // 1. 해시맵 생성 Map map=new HashMap(); // 2. 완주한 선수들의 이름을 해시맵에 저장 for(String s:completion){ map.put(s,map.getOrDefault(s,0)+1); } // 3. 참가한 선수들의 이름을 키로 하는 값을 1씩 감소 for(String s:participant){ // 4. 완주하지 못한 선수를 찾..
문제 설명n개의 양의 정수로 이루어진 배열 arr와 정수 target이 주어졌을 때 이 중에서 합이 target인 두 수가 arr에 있는지 찾고 있으면 true, 없으면 false를 반환하는 solution()함수를 작성하세요. 제약 조건n은 2이상 10,000 이하의 자연수입니다.arr의 각 원소는 1 이상 10,000 이하의 자연수 입니다.arr의 원소 중 중복되는 원소는 없습니다.target은 1이상 20,000 이하의 자연수 입니다. 입출력 예arrtargetreturn[1,2,3,4,8]6true[2,3,5,9]10false 문제 풀이arr에서 임의의 원소 x에 대해 x+k=target이 되는 원소 k가 arr에 있는지 확인하기즉, hash set에 (target-arr원소) 가 있으면 targ..
해시(hash)해시는 해시 함수를 사용해서 변환한 값을 인덱스로 삼아 키와 값을 저장해서 빠른 데이터 탐색을 제공하는 자료구조보통은 인덱스를 활용하지만 해시는 key를 활용해 데이터 탐색을 빠르게 함키와 값를 일대일 대응해 저장함 해시의 특징1️⃣ 단방향키를 통해 값을 찾을 수 있지만 값을 통해 키를 찾을 수는 없음 2️⃣ 찾고자 하는 값을 $O(1)$에서 바로 찾을 수 있음키 자체가 해시 함수에 의해 값이 있는 인덱스가 되므로 값을 찾기 위한 탐색 과정이 필요 없음 3️⃣ 값을 인덱스로 활용하려면 적절한 변환 과정이 필요 ❓ 해시를 사용하지 않으면… 전체 데이터를 확인해야하므로 위에서부터 순차적으로 이름을 확인하고이름4 가 있는 위치 3을 반환해당 위치의 전화번호를 읽음 ❗ 해시를 사용한다면… 순차 탐..