n개의 원소 중 m개를 고르는 순열과 조합

2022. 8. 29. 11:14·알고리즘 (with JAVA)/완전 탐색

1. 문제 설명

(1) N개의 정수들 중에 M개를 고르는 (중복을 허용하는) 순열을 구하시요.

--> permDup() 메서드로 구현하여라.

 

(2) N개의 정수들 중에 M개를 고르는 (중복을 허용하지 않는) 순열을 구하시오.

--> permNotDup() 메서드로 구현하여라.

 

(3) N개의 정수들 중에 M개를 고르는 조합을 구하시오.

--> combi() 메서드로 구현하여라.

 

 

 

2. 풀이 및 코드

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
public class Main{
    static int N, M, ans;
    static int[] map;
 
    static boolean[] visited;
    
    static ArrayList<Integer> arr;
 
    public static void main(String[] args) throws Exception{
        BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
 
        st = new StringTokenizer(sc.readLine()); 
        N = Integer.parseInt(st.nextToken()); 
        M = Integer.parseInt(st.nextToken());
        solve();
    }
 
    public static void solve() {
        System.out.println("-----중복 있는 순열-----");
        map = new int[M];
        permDup(0);
 
        System.out.println("-----중복 없는 순열-----");
        map = new int[M];
        visited = new boolean[N+1];
        permNotDup(0);
        
        System.out.println("-----조합-----");
        arr = new ArrayList<>();
        combi(0);
    }
 
    public static void permDup(int depth) {
        if(depth==M) {
            for(int i=0; i<M; i++) {
                System.out.print(map[i]+" ");
            }
            System.out.println();
            return;
        }
 
        for(int i=1; i<=N; i++) {
            map[depth]=i;
            permDup(depth+1);
        }
    }
 
    public static void permNotDup(int depth) {
        if(depth==M) {
            for(int i=0; i<M; i++) {
                System.out.print(map[i]+" ");
            }
            System.out.println();
            return;
        }
 
        for(int i=1; i<=N; i++) {
            if(!visited[i]) {
                visited[i]=true;
                map[depth]=i;
                permNotDup(depth+1);
                visited[i]=false;
            }
        }
    }
 
    public static void combi(int depth) {
        if(depth==M) {
            for(int i=0; i<M; i++) {
                System.out.print(arr.get(i)+" ");
            }
            System.out.println();
            return;
        }
        
        int here = arr.isEmpty()?1:arr.get(arr.size()-1)+1;
        for(int i=here; i<=N; i++) {
            arr.add(i);
            combi(depth+1);
            arr.remove(arr.size()-1);
        }
    }
}
 
저작자표시 (새창열림)

'알고리즘 (with JAVA) > 완전 탐색' 카테고리의 다른 글

시계 맞추기 (골드1)  (0) 2022.08.31
외판원 문제(TSP, 실버1)  (0) 2022.08.30
게임판 덮기 (골드2)  (0) 2022.08.30
소풍 문제  (0) 2022.08.29
보글 게임 (골드2)  (0) 2022.08.29
'알고리즘 (with JAVA)/완전 탐색' 카테고리의 다른 글
  • 외판원 문제(TSP, 실버1)
  • 게임판 덮기 (골드2)
  • 소풍 문제
  • 보글 게임 (골드2)
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      유용한 클래스
      ServerSocket
      선택 정렬
      outputstream
      Collections Framework
      코드트리
      file
      제자리 정렬
      java.lang패키지
      역직렬화
      코딩테스트
      문자 기반 스트림
      자바 개념
      TCP 소켓 프로그래밍
      snail
      serializable
      Arrays
      중간연산
      불안정 정렬
      InputStream
      map()
      알고스팟
      소켓 프로그래밍
      java.time 패키지
      람다식
      스트림
      안드로이드 스튜디오
      다형성
      코딩트리조별과제
      안정 정렬
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    n개의 원소 중 m개를 고르는 순열과 조합
    상단으로

    티스토리툴바