#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)
조회 수 1897 추천 수 0 댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 글쓰기는 하루 5개, 댓글은 10개만 가능합니다. | 좋은아빠되기 | 2019.02.15 | 553 |
공지 | 키보드 화살표값 출력 | 좋은아빠되기 | 2016.11.19 | 1327 |
공지 | 원하는 좌표에 값 출력하기 | 좋은아빠되기 | 2016.11.19 | 2637 |
공지 | Python(파이썬) 학습 자료 PDF 1 | 좋은아빠되기 | 2014.12.10 | 10639 |
공지 | dev C++ 텍스트 색상변경 WinApi사용(textcolor 대용) | 좋은아빠되기 | 2014.06.07 | 4971 |
공지 | DEV-C++ 기본 코드 | 좋은아빠되기 | 2013.06.19 | 8567 |
공지 | 무료 C++ 컴파일러(윈도우용) DEV-C++ | 좋은아빠되기 | 2013.06.18 | 19211 |
공지 | 이클립스 C++ 설치 파일들 | 좋은아빠되기 | 2013.06.18 | 38112 |
330 | 삼각형 넓이구하기.(승민) | 승민 | 2016.03.05 | 1008 |
329 | 반복문 몇번 하는지 초기치(승민) | 승민 | 2016.03.05 | 112 |
328 | for문(승민) | 승민 | 2016.03.05 | 92 |
327 | 홀수 짝수 for문(스민) | 승민 | 2016.03.05 | 554 |
326 | 1부터10까지 더하기(승민) | 승민 | 2016.03.05 | 584 |
325 | 2016-03-05 첫번째 | 뚜디 | 2016.03.05 | 1608 |
324 | 정올 반복제어문2 형성평가4 | 선우 | 2016.03.11 | 227 |
323 | 정올 반복제어문2 형성평가 6 | 선우 | 2016.03.11 | 284 |
322 | A 20번 반복해서 출력하기(승민) | 승민 | 2016.03.12 | 88 |
321 | 1부터 10까지 더하기 | 승민 | 2016.03.12 | 964 |
320 | 정올 반복제어문3 자가진단4 | 선우 | 2016.03.12 | 213 |
319 | 입력한 숫자 이하 짝수만 출력하기(승민) | 승민 | 2016.03.12 | 1427 |
318 | 제어문 연습(완성) | 선우 | 2016.03.12 | 114 |
317 | 짝수 홀수 갯수구하기(승민) | 승민 | 2016.03.12 | 1201 |
316 | for문 입력한숫자만큼 입력받고 평균구하기(승민) | 승민 | 2016.03.19 | 4426 |
315 | 반복제어문3 형성평가 1 | 선우 | 2016.03.19 | 285 |
314 | 반복제어문3 형성평가 2 | 선우 | 2016.03.19 | 302 |
313 | 반복제어문3 형성평가 3 | 선우 | 2016.03.19 | 211 |
312 | 반복제어문3 형성평가 4 | 선우 | 2016.03.19 | 300 |
311 | 반복제어문3 형성평가 5 | 선우 | 2016.03.19 | 350 |