#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)
조회 수 1923 추천 수 0 댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. | 좋은아빠되기 | 2019.02.15 | 577 |
공지 | 키보드 화살표값 출력 | 좋은아빠되기 | 2016.11.19 | 1358 |
공지 | 원하는 좌표에 값 출력하기 | 좋은아빠되기 | 2016.11.19 | 2670 |
공지 | Python(파이썬) 학습 자료 PDF 1 | 좋은아빠되기 | 2014.12.10 | 10770 |
공지 | dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) | 좋은아빠되기 | 2014.06.07 | 5001 |
공지 | DEV-C++ 기본 코드 | 좋은아빠되기 | 2013.06.19 | 8647 |
공지 | 무료 C++ 컴파일러(윈도우용) DEV-C++ | 좋은아빠되기 | 2013.06.18 | 19248 |
공지 | 이클립스 C++ 설치 파일들 | 좋은아빠되기 | 2013.06.18 | 38144 |
450 | 정올 배열1 형성평가9 | 정승준 | 2018.09.15 | 105 |
449 | 정올 배열2 자가진단3 | 정승준 | 2018.10.27 | 106 |
448 | 정올 배열1 자가진단5 | 정승준 | 2018.09.01 | 109 |
447 | 123 : 선택제어문 - 형성평가4 | adbdcd123 | 2018.08.25 | 110 |
446 | 정올 반복제어문3 자가진단6 | 정승준 | 2018.08.18 | 111 |
445 | 정올 반복제어문3 자가진단7 | 정승준 | 2018.08.25 | 111 |
444 | 정올 배열2 자가진단7 | 정승준 | 2018.11.10 | 111 |
443 | 반복문 몇번 하는지 초기치(승민) | 승민 | 2016.03.05 | 112 |
442 | 정올 배열2 형성평가A | 정승준 | 2018.12.01 | 112 |
441 | 배열 3가지 | 선우 | 2016.03.19 | 113 |
440 | 536 : 반복제어문1 - 자가진단1 | adbdcd123 | 2018.08.25 | 113 |
439 | 정올 반복제어문3 형성평가5 | 정승준 | 2018.08.25 | 114 |
438 | 정올 배열2 형성평가9 | 정승준 | 2018.12.01 | 115 |
437 | 121 : 선택제어문 - 형성평가2 | adbdcd123 | 2018.08.25 | 116 |
436 | 제어문 연습(완성) | 선우 | 2016.03.12 | 117 |
435 | 정올 - 문제은행 - 생성 불능 숫자(1184) | 조정미 | 2018.06.23 | 117 |
434 | 정올 배열1 형성평가1 | 정승준 | 2018.09.08 | 118 |
433 | 함수(승민) | 승민 | 2016.08.06 | 119 |
432 | 정올 배열1 자가진단1 | 정승준 | 2018.09.01 | 120 |
431 | 전전항-전항 계속해서 음수나올때까지 구하기(승민) | 승민 | 2016.05.28 | 121 |