조회 수 1882 추천 수 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 1075
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2390
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10272
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 4710
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8234
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 18945
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 37837
230 정올 - 실전대비 - Duel(1312) 조정미 2018.06.09 47
229 정올 - 실전대비 - 3가지 숫자 정렬하기(1016) 조정미 2018.06.02 284
228 정올 - 실력키우기 - 후위표기법(1221) 조정미 2018.02.03 1054
227 정올 - 실력키우기 - 팩토리얼(1309) 조정미 2018.01.02 414
226 정올 - 실력키우기 - 타일교체(2810) 조정미 2018.01.20 172
» 정올 - 실력키우기 - 카드게임(1311) 조정미 2017.12.23 1882
224 정올 - 실력키우기 - 최대공약수와 최소공배수(1658) 조정미 2018.01.02 1311
223 정올 - 실력키우기 - 참외밭(2259) 조정미 2018.01.27 572
222 정올 - 실력키우기 - 줄자접기(1112) 조정미 2018.01.06 360
221 정올 - 실력키우기 - 주사위 쌓기(1147) 조정미 2018.01.27 244
220 정올 - 실력키우기 - 주사위 던지기2(1175) 조정미 2017.12.27 569
219 정올 - 실력키우기 - 주사위 던지기1(1169) 조정미 2017.12.23 923
218 정올 - 실력키우기 - 전화번호 속의 암호(1620) 조정미 2017.12.09 407
217 정올 - 실력키우기 - 이진탐색(1295) 조정미 2018.01.06 216
216 정올 - 실력키우기 - 이진수(2814) 조정미 2018.01.03 201
215 정올 - 실력키우기 - 윤년(2085) 조정미 2017.12.30 226
214 정올 - 실력키우기 - 오목(1733) 조정미 2018.01.20 1326
213 정올 - 실력키우기 - 연속부분최대곱(리스트 출력) 조정미 2017.12.02 217
212 정올 - 실력키우기 - 연속부분최대곱 조정미 2017.12.02 221
211 정올 - 실력키우기 - 숫자삼각형(1641) 조정미 2017.12.27 979
Board Pagination Prev 1 ... 10 11 12 13 14 15 16 17 18 19 ... 26 Next
/ 26