https://www.acmicpc.net/problem/2578
빙고 게임을 하는 방법은 누구나 잘 알고 있다.
어떻게 빙고 게임을 하는지 생각해보면 쉽게 문제를 풀 수 있다.
1.우선 자신의 보드를 만들기 위해 5x5만큼의 수들을 입력 받는다.
2.사회자가 부른 수 하나를 입력 받고 내 빙고판에 해당 수가 있는 지 검사한다.
2-1.내 빙고판에 해당하는 수가 있다면 그 위치에 CHECK를 저장한다.
3.자신의 보드가 빙고인지 검사한다.
빙고인지 검사하기 위해 일렬로 CHECK가 나열되어 있는지 검사한다.
CHECK는 0에 이름을 붙인 것인데, 보드의 어떤 수를 합하더라도 0보다 크다.
그래서 한 줄에 CHECK로 나열되어 있다면 그 라인의 합은 0이다.
라인 검사를 통해 라인 합이 0이 되는 경우를 카운팅한다.
이 갯수가 3 이상일 때 사회자가 수를 부른 횟수를 킵하고 출력한다.
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 | #include<stdio.h> #define CHECK 0 #define ROW 5 #define COL 5 typedef enum _BOOL { FALSE = 0, TRUE = 1 }BOOL; int checkBingo(int board[ROW][COL]) { int count = 0; int sum = 0; for (int i = 0; i < ROW;i++) { for (int j = 0; j < COL;j++) { sum += board[i][j]; } if (sum == 0) count++; sum = 0; } for (int i = 0; i < COL; i++) { for (int j = 0; j < ROW; j++) { sum += board[j][i]; } if (sum == 0) count++; sum = 0; } for (int i = 0; i < ROW;i++) { sum += board[i][i]; } if (sum == 0) count++; sum = 0; for (int i = 0; i < ROW; i++) { sum += board[i][(ROW-1) - i]; } if (sum == 0) count++; sum = 0; return count; } int main() { int board[ROW][COL]; int num; int count = 0; int keepCnt; BOOL isChecked = FALSE; BOOL isBingo = FALSE; for (int i = 0; i < ROW;i++) { for (int j = 0; j < COL;j++) { scanf("%d",&board[i][j]); } } for (int k = 0; k < ROW*COL; k++) { scanf("%d", &num); count++; isChecked = FALSE; for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { if (board[i][j] == num) { board[i][j] = CHECK; isChecked = TRUE; break; } } if (isChecked) break; } if (!isBingo && checkBingo(board) >= 3) { isBingo = TRUE; keepCnt = count; } } printf("%d\n", keepCnt); return 0; } | cs |
'백준' 카테고리의 다른 글
10158)개미 (0) | 2019.02.14 |
---|---|
10159)저울 (0) | 2019.02.13 |
2607)비슷한 단어 (0) | 2019.02.12 |
2606)바이러스 (0) | 2019.02.12 |
2605)줄 세우기 (0) | 2019.02.11 |