BabyGin 이란?
- (0~9)사이의 수 중 6가지 수를 입력하여 순차적으로(예를들어 0,1,2 - 1,2,3 - 2,3,4 - 3,4,5 - 4,5,6 - 5,6,7 - 6,7,8 - 7,8,9 ) 입력되면
Run
(0~9)사이의 수 중 6가지 수를 입력하여 연속된 수가 3개 일 때 Triple
Run + Triple의 수가 2 이상일 때 BabyGin
아니면 Lose 형태의 프로그램입니다.
여기서 저의 방법은 0~9사이의 수를 체크하는 경우라는 것을 보고
카운트 소트(Count Sort)를 적용하게 됐습니다.
* Count Sort
array[10]를 잡아서 ex) 123666입력 시
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
0 |
1 |
1 |
1 |
0 |
0 |
3 |
0 |
0 |
0 |
의 값을 저장하게 되고 여기서 값을 뽑아서 triple와 run을 조건을 가지고 비교해서 체크를 한 후 문제를 해결 하면 됩니다.!!!
#include <stdio.h>
#include <stdlib.h>
void main() {
int count[10] = { 0 };
int num[6] = { 0 };
int tri = 0;
int run = 0;
for (int i = 0; i < 6; i++) {
printf("%d.number input : ", i + 1);
scanf("%d", num + i);
while (num[i] < 0 || num[i] > 9) {
printf("input number ERR - write again : ");
scanf("%d", num + i);
}
count[*(num + i)]++;
}
for (int i = 0; i < 10; i++) {
if (count[i] == 6) {
tri += 2;
count[i] -= 6;
}
else if (count[i] >= 3 && count[i] < 6) {
tri++;
count[i] -= 3;
}
}
for (int i = 0; i < 8; i++) {
if (count[i] + count[i + 1] + count[i + 2] >= 3 && count[i] + count[i + 1] + count[i + 2] < 6) {
count[i] --; count[i + 1] --; count[i + 2] --;
run++;
}
else if (count[i] + count[i + 1] + count[i + 2] == 6) {
count[i] -= 2; count[i + 1] -= 2; count[i + 2] -= 2;
run += 2;
}
}
printf("┌──────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬──────────┐\n│ ");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 10; j++) {
if (i == 0) {
printf(" count[%d] ", j);
if (j == 9) {
printf("│\n", count[j]);
printf("├──────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬──────────┤\n│");
}
}
else {
if (j >= 1&&j<9) {
printf(" %d │", count[j]);
}else
printf(" %d │", count[j]);
}
}
}
puts("");
printf("└──────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴──────────┘\n");
if (tri + run == 2) {
printf("\ntri = %d\t run = %d\n", tri, run);
printf("tri+run = %d ∴ Baby-Gin\n", tri + run);
}
else {
printf("tri+run = %d ∴ Lose\n", tri, run, tri + run);
exit(-1);
}
}
변수의 정체와 역할 파악 (0) | 2018.01.10 |
---|---|
Pointer 분석 (1) - 값과 주소의 이동파악 (0) | 2018.01.05 |
C언어 #include 지시어의 <> 와 ""의 차이점 (1) | 2017.12.27 |
포인터주소이동 개념 손코딩으로 출력값 알아보기 (0) | 2017.10.02 |
pointer's pointer로 결합도 낮추기 void로 (0) | 2017.10.02 |
댓글 영역