반응형 Algorithm/Note5 [알고리즘] 알고리즘 기말 평가 회고 및 풀이 정리 (JAVA 풀이 5문제) ☑️ 1번 문제 - 소수 찾기 (백트래킹, 순열)🔍 문제 요약주어진 숫자 n 이하의 모든 소수를 찾아 개수를 구하는 문제🧩 내 풀이import java.util.*;class Solution { Set primeSet; // 소수를 저장할 Set (중복 제거) public int solution(String numbers) { primeSet = new HashSet(); boolean[] visited = new boolean[numbers.length()]; // 백트래킹 시작 backtrack(numbers, visited, ""); // 찾은 소수의 개수 반환 return primeSet.siz.. 2025. 7. 5. [알고리즘] 탑다운(Top-down)과 바텀업(Bottom-up) 방식 - 자바(JAVA) 💡 다이나믹 프로그래밍(DP)이란?큰 문제를 작은 문제로 나눠 푸는 방식으로,중복되는 계산 결과를 저장하여 중복 계산을 줄이는 알고리즘 기법 🔢 피보나치 수열 예제1. Top-Down 방식 (재귀 + 메모이제이션) f(n)부터 f(1)까지 접근int[] memo;int fibonacci(int n) { memo = new int[n + 1]; return dp(n);}int dp(int n) { if (n == 1 || n == 2) return 1; if (memo[n] != 0) return memo[n]; memo[n] = dp(n - 1) + dp(n - 2); return memo[n];} 2. Bottom-Up 방식 (반복문)f(1)부터 f(n)까지 접근i.. 2025. 6. 20. [알고리즘] 순열/조합/부분집합 템플릿 - 자바(JAVA) 1. 순열 (Permutation)n개 중 r개를 순서 있게 뽑기 (중복 X)import java.util.*;public class PermutationWithArray { public static List> permute(int[] nums, int r) { List> ans = new ArrayList(); boolean[] visited = new boolean[nums.length]; backtrack(r, new ArrayList(), nums, visited, ans); return ans; } private static void backtrack(int r, List curr, int[] nums, boolean[] visi.. 2025. 6. 19. [알고리즘] 알고리즘 중간 평가 회고 및 풀이 정리 (JAVA 풀이 5문제) ☑️ 1번 문제 - 신고 결과 받기 (HashMap, HashSet)🔍 문제 요약k번 이상 신고된 유저는 정지되고, 그 유저를 신고한 사람들이 신고 처리 결과 메일을 받은 횟수를 구하는 문제🧩 내 풀이import java.util.*;class Solution { public int[] solution(String[] id_list, String[] report, int k) { //신고 당한 사람 -> 신고한 사람 Map> reportMap = new HashMap(); //받은 메일 수 Map mailCount = new HashMap(); //초기화 for (String i.. 2025. 5. 31. [알고리즘] 그래프 문제를 위한 DFS, BFS 템플릿(구현 코드) - 자바(JAVA) 코딩 테스트 준비를 위해 알고리즘을 배우며 그래프 파트를 공부하다 보니DFS, BFS 기본 템플릿을 모르면 문제를 손도 못 대겠더라구요...!그래서 이건 무조건 외워야겠다 싶어서 따로 정리했습니다. 이 템플릿만 알아도 그래프 문제 풀이의 시작점은 잡을 수 있습니다.저도 여러 번 직접 쳐보면서 외웠습니다! 1. DFS (깊이 우선 탐색)static boolean[] visited;public static void dfs(int node, ArrayList[] graph) { visited[node] = true; // 방문 표시 for (int next : graph[node]) { if (!visited[next]) { dfs(next, graph); // 아직.. 2025. 5. 18. 이전 1 다음 반응형