Sequential search(순차탐색) -시간복잡도 : O(N)
if 정렬이 되어있는 경우 이진탐색 -시간복잡도 : O(logN)
경우의 수
-순열(Permutation) : 선택 순서가 결과에 영향을 미치는 경우
ex
package Basic_Algorithm.concept.브루트포스;
//가장 큰 두자리 수 구하기
public class PermutaionTest {
static int N=4;
static int[] Nums={1,2,3,4};
static int solve(int cnt, int used, int val){
int ret=0; //ret 리턴할 값
if(cnt==2) return val;
for (int i = 0; i < N; i++) {
if((used&1<<i)!=0)continue; //사용한 숫자에 대해서는 continue
ret=Math.max(ret,solve(cnt+1,used|1<<i,val*10+Nums[i]));
}
return ret;
}
public static void main(String[] args) {
System.out.println(solve(0,0,0));
}
}
-조합(Combination) : 선택 순서가 결과에 영향을 주지 않는 경우
ex)두 수의 합 가장 큰 수 구하기
package Basic_Algorithm.concept.브루트포스;
//두 수의 합 가장 큰 수 구하기
public class CombinationTest {
static int N=4;
static int[] Nums={1,2,3,4};
//pos : 현재 위치, cnt : 선택된 갯수 val : 중간 결과값
static int solve(int pos, int cnt, int val) {
int ret = 0; //ret 리턴할 값
if (cnt == 2) return val;
if (pos==N) return -1;
ret = Math.max(ret, solve(pos + 1, cnt + 1, val + Nums[pos]));
ret = Math.max(ret, solve(pos + 1, cnt, val));
return ret;
}
public static void main(String[] args) {
System.out.println(solve(0,0,0));
}
}
'JAVA > Java2021-4_Algorithm' 카테고리의 다른 글
[자료구조][java]Data Structure (선형자료구조 비선형자료구조) (0) | 2021.10.15 |
---|---|
[그래프탐색][자료구조][java]BFS (0) | 2021.10.15 |
[그래프탐색][자료구조][java]DFS (0) | 2021.10.15 |
문제4_그래프탐색(Depth-First Search 와 Breadth-First Search) (0) | 2021.10.12 |
문제3_정렬알고리즘(버블,선택,삽입 O(N^2) 병합,퀵,힙 O(logN) ,계수 정렬 O(log(N+K)) (0) | 2021.10.12 |