본문 바로가기
반응형

Algorithm25

[알고리즘] 알고리즘 기말 평가 회고 및 풀이 정리 (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.
[프로그래머스] Lv3. 양과 늑대 - 자바(JAVA) 문제 설명2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대에게 잡아먹히지 않도록 하면서 최대한 많은 수의 양을 모아서 다시 루트 노드로 돌아오려 합니다. 예를 들어, 위 그림의 경우(루트 노드에는 항상 양이 있습니다) 0번 노드(루트 노드)에서 출발하면 양을 한 마리 모을 수 있습니다.다음으로 1번 노드로 이동하면 당신이 모은 양은 두 마리가 됩니다.이때, 바.. 2025. 6. 15.
[프로그래머스] Lv2. 두 큐 합 같게 만들기 - 자바(JAVA) 문제 설명길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다. 큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면 배열의 첫 번째 원소가 추출되며, insert를 하면 배열의 끝에 원소가 추가됩니다. 예를 들어 큐 [1, 2, 3, 4]가 주어졌을 때, pop을 하면 맨 앞에 있는 원소 1이 추출되어 [2, 3, 4.. 2025. 6. 15.
[프로그래머스] Lv2. 괄호 회전하기 - 자바(JAVA) 문제 설명다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.(), [], {}는 모두 올바른 괄호 문자열입니다.만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다.만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다.대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x 제한사항s의 길이는 1 이상 1,000 이하입니다.문제 파악대괄호, 중괄호, 소괄호로 이루어진 문자열이 주어진다... 2025. 6. 8.
반응형