Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HTML
- Java
- Eclipse
- 정렬
- compare()
- array
- hash
- 배열
- 해쉬
- Coding
- 우선순위큐
- 네이버
- Stack
- programmers
- 자바
- Queue
- Naver
- Python
- string
- 코딩테스트
- javac
- HashMap
- 스파르타코딩클럽
- 프로그래머스
- point queue
- CSS
- 자료구조
- HashSet
- SQL
- coding test
Archives
- Today
- Total
youngik
완전탐색 (소수 찾기) 본문
이 문제는 처음에 소수를 판별하는 부분까지 구현을 했다가, 소수의 조합을 어떻게 만들어야 할까?
그 부분을 구현하지 못해서 애를 먹었던 부분이었다. (해답은 재귀함수에 있었다.)
위 문제를 분석해보았을 때, 단순하다
1. 각 숫자별로 조합을 해서, 그 수가 소수이면 count를 하면 된다.
2. 중복값은 1개로 계산하고 앞에 0이 붙은 수는 없다고 생각하면 된다.
우리가 수학시간에 자주 배웠던 nCr => n개의 숫자 중에서 r개를 뽑는 연산 재귀함수로 구현했을 때에는
int recursion(int[] arr, int[] result, int n, int r){
if(r==0){
return;
}
else{
for(int i=0; i<arr.length; i++){
result.add(arr.remove(i)); // 값을 저장할 result에 저장하고
recursion(arr, result, n-1, r-1); // n개중 1개를 뽑으면 (n-1중에서 r-1를 뽑으면 된다.)
arr.add(i, result.remove(result.size()-1)); // 각 숫자를 빼온 자리에다가 다시 숫자를 집어놓고 i+1번째 진행
}
}
}
이렇게 list에 값을 넣어봤을때, string형태는 011을 11로 저장하지 않아 int형으로 받아야 했고
중복값을 가지기 때문에, 중복값을 가지지않는 hashset에 저장하고 hashset.size()를 출력했다.
'programmers' 카테고리의 다른 글
힙 (이중우선순위큐) (0) | 2021.04.18 |
---|---|
정렬 (가장 큰 수) (0) | 2021.04.17 |
해시 (베스트앨범) (0) | 2021.04.17 |
힙 (더 맵게) (0) | 2021.04.12 |
해시 (위장) (0) | 2021.04.10 |
Comments