728x90
문제
접근 방식
주어진 수들에서 중복 없이 6개씩 고르는 경우를 출력하는 문제로
순서가 달라도 같은 경우로 취급하는 것만 생각하면서 문제를 풀면 된다.
N과 M 시리즈 문제에서 많이 풀어본 유형이기 때문에
모두 풀어본 사람이라면 쉽게 풀 수 있는 문제다.
수의 사용 여부를 기록하지 않고 순서만 다른 결과도 제외하기 위해서는
그냥 재귀 호출 시마다 반복문의 시작 인덱스를 1씩 증가시켜 주면 된다.
풀이
public class Main {
private static StringBuilder sb;
private static int n;
private static int[] arr;
private static int[] lottoNumbers = new int[6];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
while (true) {
st = new StringTokenizer(br.readLine(), " ");
n = Integer.parseInt(st.nextToken());
if (n == 0) {
break;
}
arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
sb = new StringBuilder();
lotto(0, 0);
bw.write(sb.toString());
bw.write("\n");
}
bw.flush();
}
private static void lotto(int size, int start) {
if (size == 6) {
for (int lottoNumber : lottoNumbers) {
sb.append(lottoNumber).append(" ");
}
sb.append("\n");
return;
}
for (int i = start; i < arr.length; i++) {
lottoNumbers[size] = arr[i];
lotto(size + 1, i + 1);
}
}
}
'Java > Algorithms' 카테고리의 다른 글
[백준] 1941번 : 소문난 칠공주 (0) | 2023.11.07 |
---|---|
[백준] 16987번 : 계란으로 계란치기 (0) | 2023.11.01 |
[백준] 1182번 : 부분수열의 합 (0) | 2023.11.01 |
[백준] 9663번 : N-Queen (1) | 2023.11.01 |
[백준] 15666번 : N과 M (12) (0) | 2023.10.30 |