되는대로 살자

[C언어 기출문제&풀이] 주사위2 본문

2009~2014/C/C++

[C언어 기출문제&풀이] 주사위2

malu 2010. 11. 2. 21:21

프로그램 명: dice1
제한시간: 1 초

철수는 주사위 두개를 가지고 있다. 이 주사위 두 개를 던질 때 눈의 합이 어떤 수가 되는가가 궁금하다. 그런데 일일히 따지기가 궁금하여 컴퓨터 전문가인 당신의 도움이 필요한다.

합이 9 가되는 경우

  • 3 6
  • 4 5
  • 5 4
  • 6 3
와 같은 경우이다.

그런데 3 6 과 6 3 , 4 5 와 5 4 를 같은 경우로 간주하는 경우에 출력되는 경우를 출력하는 것이 문제이다.

입력

입력은 12 이하인 자연수가 주어진다.

출력

가능한 경우 모두를 출력한다.

각 줄에 두 개의 수 첫번째 , 두번째 주사위의 눈이다. 출력은 첫 수가 작은 수부터 먼저 출력한다.

입출력 예

입력

9

출력

3 6
4 5
풀이 : 앞의 글인 주사위 문제에서 같은 경우를 제외하는 부분을 만들어 준다. 
소스코드
01#include <stdio.h>
02  
03int main()
04{
05    int n,i,j,head,count=0;
06    scanf("%d",&n);
07  
08    int ar[50][3];
09  
10    for(i=0;i< 50;i++)
11        ar[i][2] = false;
12    for(i=6;i>0;i--)
13    {
14        for(j=6;j>0;j--)
15        {
16            if(i+j==n)
17            {
18                ar[count][0] = i;
19                ar[count][1] = j;
20                ar[count][2] = true;
21                count++;
22//              printf("%d:%d\n",i,j);
23            }
24        }
25    }
26  
27    for(i=0;i<count;i++)
28    {
29        for(j=i+1;j<count;j++)
30        {
31            if (((ar[i][0] == ar[j][0]) && (ar[i][1] == ar[j][1]))||
32                ((ar[i][0] == ar[j][1]) && (ar[i][1] == ar[j][0])))
33                ar[i][2] = false;
34        }
35    }
36  
37  
38    for(i=count-1;i>=0;i--)
39    {
40        if (ar[i][2]==true)
41            printf("%d %d\n", ar[i][0],ar[i][1]);
42    }
43}