Notice
Recent Posts
Recent Comments
Link
DY N DY
기초다지기 함수3-자가진단4(C++) 본문
590 : 함수3 - 자가진단4
제한시간: 1000 ms 메모리제한: 0 MB
해결횟수: 519 회 시도횟수: 1096 회
10 이하의 자연수 N을 입력받아 주사위를 N번 던져서 나올 수 있는 모든 경우를 출력하되 중복되는 경우에는 앞에서부터 작은 순으로 1개만 출력하는 프로그램을 작성하시오.
[Copy]3 | [Copy]1 1 1 1 1 2 ... 1 1 6 1 2 2 1 2 3 ... 5 6 6 6 6 6 |
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 | /************************************************************** Problem: 590 User: a132034 Language: C++ Result: Success Time:31 ms Memory:1740 kb ****************************************************************/ #include <iostream> using namespace std; static int dice[11]; static int loc = 1; void cases( int N) { for ( int i = dice[loc-1]; i <= 6; ++i) { dice[loc] = i; if (loc == N) { for ( int j = 1; j <= N; ++j) cout << dice[j] << " " ; cout << endl; } else { loc++; cases(N); loc--; } } } int main() { int N; cin >> N; dice[0] = 1; cases(N); return 0; } |
이전 푼 주사위 문제와 크게 다를 바 없는 문제였다.
그저 중복을 피하기 위해 해당 위치의 주사위값은 이전 위치의 주사위값부터 시작하는 것으로. (그래야 작은 수 부터 나오므로..)
도움말도 동일.
추가적으로.. if문이 끝나고 함수를 마치면 모든 경우의 수가 출력되지 않으므로 return을 쓰지 않아야 한다(27~28line 사이)
아무생각없이 return을 써 두었다가.. 한5분여가량 헤메고는 한줄한줄 눈디버깅한 결과.. return 때문이라는 것을 알아내었다.
'PARK > ALGORITHM' 카테고리의 다른 글
실력키우기 나는 학급회장이다. (투표) (C++) (0) | 2016.08.04 |
---|---|
실력키우기 단어세기(C++) (0) | 2016.06.30 |
기초다지기 함수3-형성평가3(C++) (1) | 2016.06.30 |
실력키우기 단어집합(하)(C++) (0) | 2016.06.30 |
실력키우기 비밀편지(C++) (0) | 2016.06.29 |