본문 바로가기
코딩 테스트

6603번 로또 문제(자바, java) - 백준 문제풀이

by 주용사 2023. 1. 11.
728x90
import java.io.*;
import java.util.*;

public class Main {
	static int answer = Integer.MAX_VALUE;
	/* output setting */
	static StringBuilder sb = new StringBuilder();

	public static void main(String[] args) throws IOException {
		/* input reader */
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// ArrayList<Integer> list = new ArrayList<>();

		/* input tokenizer */
		while(true)
		{
			StringTokenizer st = new StringTokenizer(br.readLine());

			int n = Integer.parseInt(st.nextToken());

			if(n == 0)
				break;
			
			int[] array = new int[n];
			boolean[] visited = new boolean[n];
			
			for(int i = 0 ; i < n ; i++)
			{
				array[i] = Integer.parseInt(st.nextToken());
			}
			
			dfs(array, visited, 0, 0, 0);
			System.out.println();
			
			
			
		}


		br.close();
	}
	
	 public static void dfs(int[] array, boolean[] visited, int depth, int start, int now)
	    {

	        if(depth >= 6) // 6개만 뽑을꺼여서
	        {
	            for(int ii = 0 ; ii < array.length ; ii++) // true 인건 만 출력(방문했다)
	            {
	                if(visited[ii] == true)
	                    System.out.print(array[ii] + " ");

	            }
	            System.out.println();
	            return;
	        }

	        for (int ii = start; ii < array.length; ii++)
	        {
/* 현재의 값보다 크다 라는 수식을 안넣으면 순열이 나온다 */
	            if (visited[ii] == false && array[ii] >= array[now])
	            {
	                visited[ii] = true;
	                dfs(array, visited, depth + 1, start, ii);
	                visited[ii] = false;
	            }
	        }
	    }

}
728x90