Per ardua ad astra !
I'm On My Way
Per ardua ad astra !
전체 방문자
오늘
어제
  • 분류 전체보기 (126)
    • Algorithm (50)
      • 백준 (30)
      • SWEA (3)
      • JUNGOL (3)
      • Programmers (5)
      • LeetCode (2)
    • 안드로이드 개발 (6)
      • Java로 개발 (0)
      • Kotlin으로 개발 (3)
    • Spring (41)
      • Spring기본 (17)
      • JPA기본 (15)
      • JPA활용 SpringBoot 기본 (9)
      • API 개발 기본 (0)
    • 네트워크 (3)
    • 운영체제 (0)
    • Life (3)
      • 책 (0)
      • 자기계발 (1)
      • 일상 (2)
    • 노마드코더 (3)
      • python으로 웹 스크래퍼 만들기 (3)
    • 프로그래밍 언어 (17)
      • Java 기본 (2)
      • 코틀린 기본 (15)

블로그 메뉴

  • 홈
  • 방명록

인기 글

hELLO · Designed By 정상우.
Per ardua ad astra !

I'm On My Way

Algorithm/JUNGOL

JUNGOL 1169 : 주사위 던지기1 (Java)(조합)(순열)

2021. 1. 4. 00:56

문제출처: jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=449&sca=2080

 

소스코드

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class 주사위던지기1_1169 {
 
    private static int N;
    private static int[] numbers;
    private static boolean[] visited;
    private static final int DICE = 6;
    private static final int START = 1;
    private static StringBuilder sb;
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();
        String[] strArr = br.readLine().split(" ");
 
        N = Integer.parseInt(strArr[0]); // 주사위를 N번 던진다.
        int type = Integer.parseInt(strArr[1]); // 출력형태 결정자
        numbers = new int[N];
        visited = new boolean[DICE + 1];
        switch (type) {
        case 1:
            allSet(0); // 중복 가능 모두 출력
            break;
        case 2:
            dupCombination(0);
            break;
        case 3:
            permutation(0);
            break;
        case 4:
            combination(START, 0);
            break;
        default:
            break;
        }
        System.out.println(sb);
    }
 
    private static void allSet(int depth) {
        if (depth == N) {
            for (int i = 0; i < N; i++) {
                sb.append(numbers[i] + " ");
            }
            sb.append("\n");
            return;
        }
        for (int i = START; i <= DICE; i++) {
            numbers[depth] = i;
            allSet(depth + 1);
        }
 
    }
 
    private static void dupCombination(int depth) {
        if (depth == N) {
            for (int i = 0; i < N; i++) {
                sb.append(numbers[i] + " ");
            }
            sb.append("\n");
            return;
        }
        for (int i = START; i <= DICE; i++) {
            if (depth == 0 || numbers[depth - 1] <= i) {
                numbers[depth] = i;
                dupCombination(depth + 1);
            }
        }
    }
 
    private static void permutation(int depth) {
        if (depth == N) {
            for (int i = 0; i < N; i++) {
                sb.append(numbers[i] + " ");
            }
            sb.append("\n");
            return;
        }
        for (int i = START; i <= DICE; i++) {
            if (visited[i]) {
                continue;
            }
            numbers[depth] = i;
            visited[i] = true;
            permutation(depth + 1);
            visited[i] = false;
        }
    }
 
    private static void combination(int start, int depth) {
        if (depth == N) {
            for (int i = 0; i < N; i++) {
                sb.append(numbers[i] + " ");
            }
            sb.append("\n");
            return;
        }
        for (int i = start; i <= DICE; i++) {
            numbers[depth] = i;
            combination(start + 1, depth + 1);
        }
    }
 
}
 
Colored by Color Scripter
cs
    'Algorithm/JUNGOL' 카테고리의 다른 글
    • JUNGOL 1141 : 불쾌한 날(Bad Hair Day) (Java)(Stack)
    • JUNGOL 1459 : 숫자고르기(Java) (dfs)
    Per ardua ad astra !
    Per ardua ad astra !
    개발자 지망생이며 열심히 공부하고 기억하기 위한 블로그입니다.

    티스토리툴바