01-29 07:13
벤치마킹
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 커피쏟음
- DFS
- 당근마켓중고차
- 종이캐리어
- 영통칠프로칠백식당
- 고마워다음
- 푸르지오포레피스
- 양양솔비치 뷔페
- 파이썬
- 양양솔비치아침
- 양양솔비치조식
- 에어아시아
- 검색완료
- 주차넉넉
- 오트눈썰매장
- 편도수술
- 사진문자추출
- 영통외식
- 싱가폴중학교수학문제
- 사진에서 글자추출
- 사진문자추출하기
- 가족소고기외식
- 커피
- 양양솔비치세프스키친
- 결항
- 결항전문
- 영통역소고기
- 아이혼자다녀옴
- 홍시스무디
- 중학교입학수학문제
Archives
- Today
- Total
너와나의 관심사
참고 뿌요뿌요 본문
#include <bits/stdc++.h>
using
namespace
std;
int
dx[]={0,1,0,-1};
int
dy[]={1,0,-1,0};
vector<vector<
char
>> board(6,vector<
char
>(13,
'.'
));
int
vis[6][12];
int
vcnt=1;
vector<pair<
int
,
int
>> founded;
vector<pair<
int
,
int
>> tmp;
void
dfs(
int
cx,
int
cy)
{
vis[cx][cy]=vcnt;
tmp.push_back(make_pair(cx,cy));
for
(
int
i=0;i<4;++i){
int
nx=cx+dx[i];
int
ny=cy+dy[i];
if
(0<=nx && nx<6 && 0<=ny && ny<12 && vis[nx][ny]!=vcnt && board[nx][ny]==board[cx][cy])dfs(nx,ny);
}
}
int
main()
{
for
(
int
i=0;i<12;++i){
for
(
int
j=0;j<6;++j){
char
c;
cin>>c;
board[j][11-i]=c;
}
}
int
cnt=0;
while
(
true
){
for
(
int
i=0;i<6;++i){
for
(
int
j=0;j<12;++j){
tmp.clear();
if
(board[i][j]!=
'.'
&& vis[i][j]!=vcnt){
++vcnt;
dfs(i,j);
}
if
(tmp.size()>=4){
for
(
int
k=0;k<tmp.size();++k){
founded.push_back(tmp[k]);
}
}
}
}
if
(founded.empty()){
printf
("%d
",cnt);
return
0;
}
sort(founded.begin(),founded.end());
founded.erase(unique(founded.begin(),founded.end()),founded.end());
reverse(founded.begin(),founded.end());
++cnt;
for
(
int
k=0;k<founded.size();++k){
int
x=founded[k].first;
int
y=founded[k].second;
board[x].erase(board[x].begin()+y);
}
for
(
int
k=0;k<6;++k)board[k].resize(13,
'.'
);
founded.clear();
}
}
Comments