#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)
조회 수 1905 추천 수 0 댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. | 좋은아빠되기 | 2019.02.15 | 568 |
공지 | 키보드 화살표값 출력 | 좋은아빠되기 | 2016.11.19 | 1343 |
공지 | 원하는 좌표에 값 출력하기 | 좋은아빠되기 | 2016.11.19 | 2652 |
공지 | Python(파이썬) 학습 자료 PDF 1 | 좋은아빠되기 | 2014.12.10 | 10712 |
공지 | dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) | 좋은아빠되기 | 2014.06.07 | 4987 |
공지 | DEV-C++ 기본 코드 | 좋은아빠되기 | 2013.06.19 | 8597 |
공지 | 무료 C++ 컴파일러(윈도우용) DEV-C++ | 좋은아빠되기 | 2013.06.18 | 19233 |
공지 | 이클립스 C++ 설치 파일들 | 좋은아빠되기 | 2013.06.18 | 38130 |
450 | 겁나 쉬이이이이잉이이운 가위바위보 게임 | 갓초딩 | 2017.03.25 | 1969 |
449 | p.155 숙제 | 박윤택 | 2013.11.23 | 1969 |
448 | 문자 몇번째 알파벳 몇번나왔는지 숫자 세기(승민) | 승민 | 2016.05.14 | 1952 |
447 | ABCD | 박윤택 | 2013.12.07 | 1952 |
446 | c언어 p.221 | 하품팬더 | 2014.02.22 | 1949 |
445 | 숙제 | 박윤택 | 2013.12.21 | 1941 |
444 | 띄어쓰기까지 프로그램 출력하기(승민) | 승민 | 2016.04.02 | 1929 |
443 | 배열 | 하품팬더 | 2014.03.08 | 1907 |
» | 정올 - 실력키우기 - 카드게임(1311) | 조정미 | 2017.12.23 | 1905 |
441 | 짝수는 뒤에 홀수는 앞에 | killerjack | 2014.03.08 | 1886 |
440 | p.74 문제1~5 손동희 | 그냥학생 | 2014.01.10 | 1848 |
439 | 0이 입력되면 입력 중지하고 입력된 숫자 교환하기 | 박윤택 | 2013.12.28 | 1788 |
438 | 1부터 원하는 수까지의 2진법 출력하기 | killerjack | 2014.03.08 | 1739 |
437 | 윤년 | 하품팬더 | 2014.04.12 | 1718 |
436 | 대문자 입력받아서 입력받은 횟수 출력하기 (정올 배열2-자기진단1) | killerjack | 2014.05.31 | 1715 |
435 | 화살표 응용 | 박윤택 | 2013.11.30 | 1708 |
434 | >> | 박윤택 | 2013.12.07 | 1696 |
433 | p.76 1 | 박윤택 | 2013.11.12 | 1662 |
432 | 정올 기초다지기 (배열2-자가진단2) | killerjack | 2014.05.31 | 1648 |
431 | 집에가서할거 | killerjack | 2014.02.22 | 1634 |