조회 수 1930 추천 수 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 587
공지 키보드 화살표값 출력 좋은아빠되기 2016.11.19 1364
공지 원하는 좌표에 값 출력하기 좋은아빠되기 2016.11.19 2680
공지 Python(파이썬) 학습 자료 PDF 1 file 좋은아빠되기 2014.12.10 10847
공지 dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) 좋은아빠되기 2014.06.07 5012
공지 DEV-C++ 기본 코드 좋은아빠되기 2013.06.19 8720
공지 무료 C++ 컴파일러(윈도우용) DEV-C++ 좋은아빠되기 2013.06.18 19261
공지 이클립스 C++ 설치 파일들 좋은아빠되기 2013.06.18 38152
210 정올 - 실력키우기 - 나는 학급회장이다(투표) 조정미 2017.12.02 534
209 정올 - 실력키우기 - 연속부분최대곱 조정미 2017.12.02 237
208 정올 - 실력키우기 - 연속부분최대곱(리스트 출력) 조정미 2017.12.02 229
207 정올 - 실력키우기 - 2진수를 10진수로(숫자로 입력) 조정미 2017.12.02 1066
206 정올 - 실력키우기 - 2진수를 10진수로(문자열로 입력) 조정미 2017.12.02 177
205 2진수를 8진수로 조정미 2017.12.09 273
204 정올 - 실력키우기 - 수열(1998) 조정미 2017.12.09 312
203 정올 - 실력키우기 - 전화번호 속의 암호(1620) 조정미 2017.12.09 418
202 정올 - 실력키우기 - 색종이(중) 1671 조정미 2017.12.16 865
201 정올 - 실력키우기 - 10진수를 2 8 16진수로(1534) 조정미 2017.12.16 451
» 정올 - 실력키우기 - 카드게임(1311) 조정미 2017.12.23 1930
199 정올 - 실력키우기 - 버블정렬(1157) 조정미 2017.12.23 280
198 정올 - 실력키우기 - 색종이(초) (1438) 조정미 2017.12.23 665
197 정올 - 실력키우기 - 주사위 던지기1(1169) 조정미 2017.12.23 941
196 정올 - 실력키우기 - 주사위 던지기2(1175) 조정미 2017.12.27 607
195 정올 - 실력키우기 - 마방진(2074) 조정미 2017.12.27 320
194 정올 - 실력키우기 - 별삼각형1(1523) 조정미 2017.12.27 274
193 정올 - 실력키우기 - 별삼각형3(1329) 조정미 2017.12.27 274
192 정올 - 실력키우기 - 숫자삼각형(1641) 조정미 2017.12.27 992
191 정올 - 실력키우기 - 그릇(2604) 조정미 2017.12.27 588
Board Pagination Prev 1 ... 11 12 13 14 15 16 17 18 19 20 ... 26 Next
/ 26