목록완전탐색 (11)
개발 무지렁이

암호만들기 🪅 오름차순을 보고, 배열을 정렬한 다음, 조합을 이용할 생각을 할 줄 아느냐 => 이전 고른 인덱스보다 큰 인덱스를 고르는 '조합' 🪅 조합을 구현할 줄 아는가 => '백트래킹'을 할 줄 아는가 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static char[] arr; static int L; static int C; static int[] selection; static boolean[] isSele..

N과M (2) 🪅 순열과 조합의 차이를 알고있느냐 🪅 조합(Combination)을 구현할 줄 아느냐 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; /** * 백준 15650번 N과M(2) * 입력: * 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) * * 출력: * 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, * 각 수열은 공백으로 구분해서 출력해야 한다. * 수열은 사전 순으로 증가하는 순서로 출력해야 한다. * */ public class Mai..

타겟넘버 🪅 모든 조합을 일일이 해야할 때(완전탐색), DFS로 구현할 수 있느냐 🪅 재귀함수를 사용할 때, 종료조건을 명시했느냐 class Solution { int result = 0; public void DFS(int[] numbers, int target, int index, int sum) { if(index == numbers.length) { if(sum == target) { result++; } return; } DFS(numbers, target, index+1, sum+numbers[index]); DFS(numbers, target, index+1, sum-numbers[index]); } public int solution(int[] numbers, int target) { in..

소수찾기 🪅 KeyPoint: 문자열을 쪼개서 순서 상관있게 조합할 수 있느냐 (순열) => recursive 🪅 KeyPoint: 중복을 어떻게 제거할 것이냐 => HashSet() 🪅 KeyPoint: 소수 찾는 알고리즘을 구현할 수 있느냐 => isPrime() ⚠️ String에 +연산자를 이용하면 char를 붙일 수 있다. ⚠️ .substring(i+1)은 i+1번째부터 마지막까지의 부분문자열을 의미한다. import java.util.*; class Solution { Set numberSet = new HashSet(); public void recursive(String comb, String others) { if(!comb.equals("")) { int num = Integer.pa..

완전탐색(Brute Force) 모든 경우의 수를 시도해보는 방법 📌 Brute-Force: 무식하게 힘(컴퓨터의 연산능력)으로 찍어누르는 방법 ⭐. 경우의 수 - 순열: 순서가 결과에 영향을 미치는 경우 - 조합: 순서가 결과에 영향을 미치지 않는 경우 - 부분집합: 각 요소가 포함한다 or 포함하지 않는다 [Permutation.java] public class Permutation { static char[] arr; static int R; static int[] selection; static boolean[] isSelected; public static void permutation(int r) { // 종료조건 if(r == R) { for(int i = 0; i < R; i++) { Sy..