코락 CoRock
코딩하는 락스타
코락 CoRock
  • 분류 전체보기 (394)
    • frameworks (19)
      • spring (19)
      • spring-boot (0)
      • testing (0)
    • languages (94)
      • java (39)
      • kotlin (0)
      • python (42)
      • r (13)
    • libraries (0)
    • programming (239)
      • android (13)
      • c (17)
      • cpp (22)
      • database (18)
      • design-pattern (4)
      • data-structures (11)
      • git (8)
      • hadoop (6)
      • html-css (7)
      • issue (4)
      • javascript (26)
      • jsp (34)
      • os (29)
      • php (6)
      • preferences (19)
      • etc (15)
    • discography (37)
      • k-pop (18)
      • pop (19)
    • blog (4)

블로그 메뉴

  • Programming
  • Java
  • JavaScript
  • Discography
  • K-Pop Songs
  • Pop Songs
  • Blog
  • Guestbook

공지사항

인기 글

태그

  • javascript
  • 자바스크립트
  • jsp
  • oracle
  • Android
  • 파이썬
  • python
  • Spring
  • r
  • CentOS
  • linux
  • Java

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
코락 CoRock

코딩하는 락스타

programming/c

[Algorithm] Baby Gin

2018. 1. 29. 14:28
반응형

Baby Gin은 카드로 게임을 한다.

각 카드는 0 에서 9 까지의 수가 쓰여져 있다.

게이머는 6 장의 카드를 받는다.


받는 사람이 Baby Gin을 가진다면 이 게이머가 이기고 아니면 진다.

Baby Gin을 가지기 위해서는 모든 6장의 카드가

런(runs)이거나, 트리플리트(tripletes) 이여야 한다.


• 런이라는 말은 3장의 카드가 연속적인 번호를 말한다.

ex. 345 혹은 789 .., 단, 901 은 런이아니다.

• 트리플리트는 같은 번호를 가지는 세장의 카드를 말한다.

ex. 000 혹은 444, ...


몇 가지 예를 보면,

• 667767 은 Baby Gin이다. 두 개의 트리플리트(666, 777)

• 054060 은 Baby Gin이다. 하나의 런과 하나의 트리플리트

• 101123 은 Baby Gin이 아니다.


6 개의 숫자를 입력으로 받아

Baby Gin 인지 아닌지를 판별하는 프로그램을 작성하는것이 일이다.


<입력>

0 에서 9 사이의 6 개의 숫자가 입력으로 주어진다.


<출력>

Baby Gin 이면 gin, 아니면 lose를 출력한다.


<입출력 예>

입력 : 6 6 7 7 6 7

출력 : gin


입력 : 0 5 4 0 6 0

출력 : gin


입력 : 1 0 1 1 2 3

출력 lose


입력 : 2 2 1 1 0 0

출력 : gin




Program    Counting Sort를 이용한 Baby Gin구현



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
    Thursday, January 4, 2018
    DAY 07 : Homework (Baby Gin)
*/
 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
 
void InputNum(int *p);
void BabyGin(int data[], int *runsCount, int *triCount);
void Output(int *runsCount, int *triCount);
 
int main(void)
{
    int data[6];
    int runsCount = 0;
    int triCount = 0;
 
    InputNum(data);
    BabyGin(data, &runsCount, &triCount);
    Output(&runsCount, &triCount);
 
    return 0;
}
 
void InputNum(int *data)
{
    int i;
 
    printf("Input data : ");
    for (i = 0; i < 6; i++) {
        scanf("%d", &data[i]);
        if (data[i] < 0 || data[i] > 9) {
            puts("You entered wrong data!");
            exit(-1);
        }
    }
}
 
void BabyGin(int data[], int *runsCount, int *triCount)
{
    int NumCntArr[10] = { 0 };
    int ActionCount = 0;
    int i;
 
    while (ActionCount != 6) {
        switch (*(data + ActionCount))
        {
        case 0: NumCntArr[0]++; ActionCount++; continue;
        case 1: NumCntArr[1]++; ActionCount++; continue;
        case 2: NumCntArr[2]++; ActionCount++; continue;
        case 3: NumCntArr[3]++; ActionCount++; continue;
        case 4: NumCntArr[4]++; ActionCount++; continue;
        case 5: NumCntArr[5]++; ActionCount++; continue;
        case 6: NumCntArr[6]++; ActionCount++; continue;
        case 7: NumCntArr[7]++; ActionCount++; continue;
        case 8: NumCntArr[8]++; ActionCount++; continue;
        case 9: NumCntArr[9]++; ActionCount++; continue;
        }
    }
 
    for (i = 0; i < 10; i++) {
        if (NumCntArr[i] == 3) {
            *runsCount += 1;
            NumCntArr[i] = 0;
        }
    }
 
    for (i = 1; i < 9; i++) {
        if (NumCntArr[i - 1] == 2 && NumCntArr[i] == 2 && NumCntArr[i + 1] == 2) {
            *triCount += 2;
            NumCntArr[i - 1] = 0;
            NumCntArr[i] = 0;
            NumCntArr[i + 1] = 0;
        } else if (NumCntArr[i - 1] == 1 && NumCntArr[i] == 1 && NumCntArr[i + 1] == 1) {
            *triCount += 1;
            NumCntArr[i - 1] = 0;
            NumCntArr[i] = 0;
            NumCntArr[i + 1] = 0;
        }
    }
}
 
void Output(int *runsCount, int *triCount)
{
    if (*runsCount + *triCount == 2)
        puts("Baby Gin!");
    else
        puts("Failed!");
}
Colored by Color Scripter
cs


반응형
저작자표시 비영리 변경금지 (새창열림)
    'programming/c' 카테고리의 다른 글
    • Inheritance
    • 주말숙제
    • [Core C] Functions (함수)
    • [DAY 03] Program Looping
    코락 CoRock
    코락 CoRock
    A COder dreaming of being a ROCKstar

    티스토리툴바