조회 수 1886 추천 수 0 댓글 0

#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");
}



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. 좋은아빠되기 2019.02.15 298
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1079
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2393
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10297
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4713
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8255
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 18954
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 37857
290 정올 - 실력키우기 - 주사위 쌓기(1147) 조정미 2018.01.27 244
289 정올 - 실력키우기 - 줄자접기(1112) 조정미 2018.01.06 360
288 정올 - 실력키우기 - 참외밭(2259) 조정미 2018.01.27 575
287 정올 - 실력키우기 - 최대공약수와 최소공배수(1658) 조정미 2018.01.02 1311
» 정올 - 실력키우기 - 카드게임(1311) 조정미 2017.12.23 1886
285 정올 - 실력키우기 - 타일교체(2810) 조정미 2018.01.20 172
284 정올 - 실력키우기 - 팩토리얼(1309) 조정미 2018.01.02 415
283 정올 - 실력키우기 - 후위표기법(1221) 조정미 2018.02.03 1054
282 정올 - 실전대비 - 3가지 숫자 정렬하기(1016) 조정미 2018.06.02 284
281 정올 - 실전대비 - Duel(1312) 조정미 2018.06.09 51
280 정올 - 실전대비 - PERKET(1127) 조정미 2018.06.02 152
279 정올 - 실전대비 - RESETO(1232) 조정미 2018.06.02 155
278 정올 - 실전대비 - 개미수열(1354) - Runtime Error 조정미 2018.06.09 344
277 정올 - 실전대비 - 단어맞추기(1034) 조정미 2018.05.26 701
276 정올 - 실전대비 - 비밀번호(1344) 조정미 2018.06.16 186
275 정올 - 실전대비 - 선 긋기 게임(1094) - Accepted(92) 조정미 2018.06.02 220
274 정올 - 실전대비 - 소수369(1011) 조정미 2018.05.26 328
273 정올 - 실전대비 - 오류교정(1037) 조정미 2018.06.09 178
272 정올 - 실전대비 - 줄 세우기(1003) 조정미 2018.05.26 568
271 정올 - 실전대비 - 질량계산(1091) 조정미 2018.06.02 304
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 26 Next
/ 26