ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JUNGOL 실력키우기 1169 : 주사위 던지기1
    보관함 2018. 11. 23. 20:41


    주사위를 던진 횟수 N과 출력형식 M을 입력 받아서 M의 값에 따라 각각 아래와 같이 출력하는 프로그램을 작성하시오.

     

    M = 1 : 주사위를 N번 던져서 나올 수 있는 모든 경우
    M = 2 : 주사위를 N번 던져서 중복이 되는 경우를 제외하고 나올 수 있는 모든 경우
    M = 3 : 주사위를 N번 던져서 모두 다른 수가 나올 수 있는 모든 경우

     

    * 중복의 예
    1 1 2 와 중복 : 1 2 1, 2 1 1
    1 2 3 과 중복 : 1 3 2, 2 1 3, 2 3 1, 3 1 2


     

    첫 줄에 주사위를 던진 횟수 N(2≤N≤5)과 출력모양 M(1≤M≤3)이 들어온다.



    주사위를 던진 횟수 N에 대한 출력모양을 출력한다.
    작은 숫자부터 출력한다.


    3 1
    1 1 1
    1 1 2
    1 1 3
    1 1 4
    1 1 5
    1 1 6
    1 2 1
    …
    6 6 6



    3 2
    1 1 1
    1 1 2
    …
    1 1 6
    1 2 2
    …
    5 6 6
    6 6 6



    3 3
    1 2 3
    1 2 4
    1 2 5
    1 2 6
    1 3 2
    1 3 4
    …
    6 5 3
    6 5 4




    주사위를 던지는 횟수를 정해둔 게 아니라서 재귀함수로 해결해야 한다는 느낌의 문제네요.

    출력 예에서 규칙만 확인하면 쉽게 해결이 가능해 보입니다.


    먼저 첫번째 패턴은 단순히 모두 출력하면 되기에 제약 없이 출력하면 됩니다.

    두번째 패턴은 중복이 되어서는 안된다라고 하는데 결국 상위 단계의 값보다 크거나 같은 것만 출력할 수 있다면 됩니다.

    마지막 패턴은 이전 값들과 비교해서 없는 것만 출력하도록 해야할 것 같습니다.


    그리고 기본적으로 주사위 던지는 횟수만큼 for문을 중첩시킨다고 생각하면 종료조건을 찾을 수 있습니다.

    출력은 마지막 for문에서 처리해야 하므로 출력 조건을 마지막 for문인지 검사하면 됩니다.





    JUNGOL) 문제은행) 실력키우기) 주사위 던지기1

    댓글

Designed by Tistory.