Recent Posts
Notice
No Rules Rules
빙고 (feat. 백준, 2578번) 본문
728x90
반응형
빙고
https://www.acmicpc.net/problem/2578
// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;
pair<int, int> arr[26];
bool chk[6][6];
bool check(){
register int cnt = 0, ans = 0;
// (1,1)에서 (5,5) 대각선 빙고 여부
for(register int i = 1; i <= 5; ++i)
if(chk[i][i])
++cnt;
if(cnt == 5)
++ans;
// (5,1)에서 (1,5) 대각선 빙고 여부
cnt = 0;
for(register int i = 1; i <= 5; ++i)
if(chk[i][6 - i])
++cnt;
if(cnt == 5)
++ans;
// 가로줄 빙고 여부
for(register int i = 1, j; i <= 5; ++i){
cnt = 0;
for(j = 1; j <= 5; ++j)
if(chk[i][j])
++cnt;
if(cnt == 5)
++ans;
}
// 세로줄 빙고 여부
for(register int j = 1, i; j <= 5; ++j){
cnt = 0;
for(i = 1; i <= 5; ++i)
if(chk[i][j])
++cnt;
if(cnt == 5)
++ans;
}
// 빙고 3줄 이상시 리턴
if(ans >= 3)
return true;
return false;
}
int main(){
ios::sync_with_stdio(false), cin.tie(NULL);
memset(chk, false, sizeof(chk));
for(register int i = 1, j, v; i <= 5; ++i)
for(j = 1; j <= 5; ++j)
cin >> v, arr[v] = make_pair(i, j);
queue<int> q;
for(register int x = 0, n, v; x < 5; ++x)
for(n = 0; n < 5; ++n)
cin >> v, q.push(v);
register int cnt = 0;
while(!q.empty()){
auto p = q.front(); q.pop(); ++cnt;
chk[arr[p].first][arr[p].second] = true;
if(check()){
cout << cnt; // 빙고 성공시 번호 순서 출력 후 종료
break;
}
}
return 0;
}
// *&)*@*
반응형
노가다성 구현 문제입니다.
풀이는 주석으로 대체합니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
정복자 (feat. 백준, 14950번) (0) | 2023.03.10 |
---|---|
전기가 부족해 (feat. 백준, 10423번) (0) | 2023.03.10 |
증가 배열 만들기 (feat. 백준, 27648번) (0) | 2023.03.08 |
행성 터널 (feat. 백준, 2887번) (0) | 2023.03.06 |
별자리 만들기 (feat. 백준, 4386번) (0) | 2023.03.03 |
Comments