일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- static
- jvm
- Interface
- 보안
- IMPLEMENT
- 치유
- Transition
- 여행
- abstract
- 회피
- Recylcer
- 심리학
- opcode
- Android
- Navigation Component
- ㅇ
- 일상회피
- bytecode 분석
- 취약점
- bytecode
- extends
- 일상탈출
- 여행계획
- 버킷리스트
- Shared Elements
- 심리여행
- throws
- javap
- HelloWorld
- 보안취약점
Archives
- Today
- Total
패스트터틀
(Baekjoon) backtracking - (1) 로또 본문
https://www.acmicpc.net/problem/6603
6603번: 로또
문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2
www.acmicpc.net
7을 입력하고
1 - 2 - 3 - 4 - 5 - 6 - 7
로 끝까지 dfs로 들어간후 한단계씩 backtracking하는것
visited로 방문을 확인할 필요가 없는것은 오름차순이기때문이다.
2-3-5-6-1-4 일경우에는 visited로
for(i = v+1)이 아닌 for( i = 0) 으로 0부터 탐색을 전부해줘야한다.
package backtracking;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.Buffer;
import java.util.Scanner;
public class _6603 {
static Scanner sc = new Scanner(System.in);
static int n;
static int number[] = new int[13];
static int count;
static StringBuffer bf = new StringBuffer();
public static void dfs(int a,String str){
if(count == 6){
bf.append(str+"\n"); // 6개가 채워지면은 bf에다가 넣고 엔터
}
else{
for (int i = a + 1; i < n; i++) { // 1 - 2 - 3 - 4 - 5 - 6 - 7 (오름차순으로 되어있기 떄문에) a+1부터 n까지
count++;
dfs(i,str+number[i]+" "); // 다음꺼에 넘겨주기
}
}
count--; // 끝나면 지금까지 더해졌던 count를 --해야지 그전에서 실행됨
}
public static void main(String args[]){
while((n = sc.nextInt()) != 0){
for (int j = 0; j < n; j++) {
number[j] = sc.nextInt();
}
for (int i = 0; i < n; i++) { // 1-2-3-4-... 백트래킹
count=1; // 2-3-4-5-... 백트래킹
dfs(i,number[i]+" "); // 3-4-5-6.... 백트래킹
}
bf.append("\n");
}
System.out.println(bf.toString());
}
}
백준문제풀이Github :
https://github.com/sdk0213/baekjoon-study
sdk0213/baekjoon-study
solve a baekjoon question. Contribute to sdk0213/baekjoon-study development by creating an account on GitHub.
github.com
'Algorithm > baekjoon' 카테고리의 다른 글
(Baekjoon) GreedyAlgorithm - (12) 부등호 (0) | 2019.11.17 |
---|---|
(Baekjoon) backtracking - (2) N-Queen (0) | 2019.11.16 |
(Baekjoon) dfs,bfs - (1) dfs,bfs (0) | 2019.11.13 |
(Baekjoon) GreedyAlgorithm - (11) 기타줄 (0) | 2019.11.10 |
(Baekjoon) GreedyAlgorithm - (10) 신입사원 (0) | 2019.11.10 |
Comments