ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4-3: k개의 1을 가진 n자리 이진패턴 경우 출력
    Recursion 2018. 10. 24. 20:15

    tobin (tobin.cpp)

     

    문제


    두 정수 n, k를 입력받아 k개의 1을 가진 n자리 이진 패턴을 출력하는 프로그램을 작성하세요.

     

    입력


    두 정수 n,k가 입력으로 주어진다. ( 0< n <= 30, 0 <= k < 8 , n>=k )

     

    출력


    결과를 내림차순으로 출력한다.

     

    예제 입력

    2 1

    예제 출력

    10
    01

     

    예제 입력

    2 0

    예제 출력

    00

     

    예제 입력

    4 2

    예제 출력

    1100
    1010
    1001
    0110
    0101
    0011


    import java.util.Scanner;

    public class tobin2 {

    /**
    *
    * 문제:
    * 두 정수 n, k를 입력받아 k개의 1을 가진 n자리 이진 패턴을 출력하는 프로그램을 작성하세요.
    *
    *
    * 입력:
    * 두 정수 n,k가 입력으로 주어진다. ( 0< n <= 30, 0 <= k < 8 , n>=k )
    *
    *
    * 출력:
    * 결과를 내림차순으로 출력한다.
    *
    * 예제 입력:
    * 2 1
    *
    * 예제 출력:
    * 10
    * 01
    *
    * @param args
    */

    static int N, K, digits[];
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    N = sc.nextInt();
    K = sc.nextInt();
    digits = new int[N];

    //n is numDigits
    //k is target 1s count.


    printBinary(0,K);

    }

    private static void printBinary(int index, int k) {

    // if (index == N) return;

    if (k==0){
    print();
    return;
    }

    if (index == N) return;

    //case 1: digit is 1.
    digits[index] = 1;
    printBinary(index+1, k-1);

    //case 0: digit is 0.
    digits[index] = 0;
    printBinary(index+1, k);


    }

    private static void print() {
    for (int i=0; i< N; i++){
    System.out.print(digits[i]);
    }
    System.out.println();
    }

    }


    'Recursion' 카테고리의 다른 글

    4-7: 좋은 수열  (0) 2018.10.24
    4-6: 단지번호 붙이기  (0) 2018.10.24
    4-5: Dessert  (0) 2018.10.24
    4-4: Division  (0) 2018.10.24
    4-2: Mountain  (0) 2018.10.24
Designed by Tistory.