Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 텍스트 검색
- 파이썬
- 초대장
- BeautifulSoup
- 확률공부
- CSV
- 티스토리
- Arduino
- 파이썬 장고
- ssh전송
- 파이썬 가상환경
- non block
- 스케치
- 머신러닝
- 초음파
- ultrawave sensor
- Python
- 파이썬 웹 개발
- 파이참 가상환경
- 베이즈법칙
- 웹 크롤링
- 베이즈이론
- urlretrieve
- MEGA2560
- ssh원격
- 아두이노 스케치
- 아두이노
- ssh파일
- 확률모델
- bs4
Archives
- Today
- Total
잡
baekjoon 7569 본문
#include <stdio.h>
#include <queue>
#define MAX_SIZE 100
char Boxes[MAX_SIZE][MAX_SIZE][MAX_SIZE] = {0,};
int N,M,H = 0;
struct box
{
char r;
char c;
char h;
};
std::queue<box> mBox;
int dr[6] = {1, 0, -1, 0, 0, 0};
int dc[6] = {0,-1,0,1,0,0};
int dh[6] = {0,0,0,0,1,-1};
void check(int r,int c,int h)
{
for(int i=0; i<6 ; i++)
{
int nh = h + dh[i];
int nc = c + dc[i];
int nr = r + dr[i];
if(nh < 0 || nc < 0 || nr < 0) continue;
if(nh >= H || nc >= M || nr >= N) continue;
if(Boxes[nh][nr][nc] == 0) {
box in = {(char)nr,(char)nc,(char)nh};
mBox.push(in);
Boxes[nh][nr][nc]++;
}
}
}
int main()
{
scanf("%d %d %d", &M, &N, &H);
for(int h_=0; h_<H; h_++)
{
for(int row=0; row<N; row++)
{
for(int col=0; col<M; col++)
{
int buf;
scanf("%d", &buf);
Boxes[h_][row][col] = (char)buf;
if(buf > 0)
{
box b = {(char)row, (char)col, (char)h_};
mBox.push(b);
}
}
}
}
int days = 0;
while(true) {
if (mBox.empty()) break;
int count = mBox.size();
for(int i=0; i<count; i++)
{
box outBox;
outBox = mBox.front();
mBox.pop();
check(outBox.r, outBox.c, outBox.h);
}
days ++;
}
bool notFinish = false;
for(int hei=0; hei<H; hei++) {
for (int row = 0; row < N; row++) {
for(int col =0; col< M ; col++)
{
if(Boxes[hei][row][col] == 0)
notFinish = true;
}
}
}
if(notFinish) printf("-1\n");
else printf("%d\n", --days);
return 0;
}