#include <stdio.h>
#include <stdlib.h>
char color[5]; //색깔 입력받을 배열
int num[5]; //숫자 입력받을 배열
int line_num[4][2]={0};
int color_same(void);
int line(void);
void count(void);
void pr(void);
int main(void)
{
int i, col, li;
for(i=0; i<5; i++)
scanf(" %c %d", &color[i], &num[i]);
col=color_same();
li=line();
if(col==5 && li==5) //1. 카드 5장이 모두 같은 색이면서 숫자가 연속적일 때
printf("%d", num[4]+900);
else if(col==5) //4. 카드 5장이 모두 같은 색일 때
printf("%d", num[4]+600);
else if(li==5) //5. 카드 5장의 숫자가 연속적일 때
printf("%d", num[4]+500);
else
{
count();
if(line_num[0][1]==4) //2. 카드 4장의 숫자가 같을 때
printf("%d", line_num[0][0]+800);
else if(line_num[0][1]==3)
{
if(line_num[1][1]==2) //3. 카드 3장의 숫자가 같고 나머지 2장도 숫자가 같을 때
printf("%d", (line_num[0][0]*10)+line_num[1][0]+700);
else //6. 카드 3장의 숫자가 같을 때
printf("%d", line_num[0][0]+400);
}
else if(line_num[0][1]==2)
{
if(line_num[1][1]==2) //7. 카드 2장의 숫자가 같고 또 다른 2장의 숫자가 같을 때
printf("%d", (line_num[1][0]*10)+line_num[0][0]+300);
else //8. 카드 2장의 숫자가 같을 때
printf("%d", line_num[0][0]+200);
}
else //어떤 경우도 해당하지 않을 때
printf("%d", num[4]+100);
}
return 0;
}
int color_same(void) //숫자가 모두 같은가?
{
int i, c=1;
for(i=1; i<5; i++)
{
if(color[0]!=color[i])
break;
c++;
}
return c;
}
int line(void)
{
int i, j, aa, c=1;
char bb;
for(i=0; i<4; i++) //숫자 크기 순으로 정렬
{
for(j=i+1; j<5; j++)
{
if(num[i]>num[j])
{
aa=num[i];
num[i]=num[j];
num[j]=aa;
bb=color[i];
color[i]=color[j];
color[j]=bb;
}
}
}
for(i=0; i<4; i++) //숫자가 연속적인가?
{
if(num[i]+1!=num[i+1])
break;
c++;
}
return c;
}
void count(void) //같은 숫자의 개수
{
int i, j, a=0, aa;
//printf("start \n");
//pr();
for(i=0; i<5;)
{
// printf("for i= %d\n", i);
line_num[a][0]=num[i];
line_num[a][1]=1;
for(j=i+1; j<5; j++)
{
if(num[i]==num[j])
line_num[a][1]++;
else
{
i=j;
a++;
break;
}
}
// printf("j= %d \n", j);
// printf("for \n");
// pr();
// system("pause");
if(a>3 || j>4)
break;
}
for(i=0; i<3; i++)
{
for(j=i+1; j<4; j++)
{
if(line_num[i][1]<line_num[j][1])
{
aa=line_num[i][0];
line_num[i][0]=line_num[j][0];
line_num[j][0]=aa;
aa=line_num[i][1];
line_num[i][1]=line_num[j][1];
line_num[j][1]=aa;
}
}
}
// printf("finish \n");
// pr();
}
void pr(void)
{
int i;
for(i=0; i<4; i++)
{
printf("[%d] - %d %d \n", i, line_num[i][0], line_num[i][1]);
}
printf("\n\n");
}
2017.12.23 11:11
정올 - 실력키우기 - 카드게임(1311)
조회 수 2009 추천 수 0 댓글 0