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 |
29 | 30 |
Tags
- InsertRange
- list
- Parse 사용법
- Tostring 사용법
- List 추가
- 네트워크 용어
- 네트워크
- BFS
- AddRange
- C# Find
- 서브넷 마스크
- List 찾기
- 서브넷
- Visual Studio
- 알고리즘
- c#
- IP주소
- OSI 3계층
- List 정렬
- 기본 게이트웨이
- 백준
- 호스트 주소
- list 사용법
- TCP/IP
- C# Contains
- c# list
- C++
- 호스트
- DP
- List 제거
Archives
- Today
- Total
CodeLabs
[백준 / C#] 7569 : 토마토 본문
using System;
using System.Collections.Generic;
using System.Linq;
struct Tomato
{
public int x, y, z;
public Tomato(int h, int i, int j)
{
y = i;
x = j;
z = h;
}
}
class Program
{
static int[] M_N_Z = Console.ReadLine().Split().Select(int.Parse).ToArray();
static int m = M_N_Z[0], n = M_N_Z[1], h = M_N_Z[2], result = 0;
static int[] dx = { 1, 0, 0, -1, 0, 0 }, dy = { 0, 1, 0, 0, -1, 0 }, dz = { 0, 0, 1, 0, 0, -1 };
static int[,,] box = new int[h + 1, n + 1, m + 1];
static Queue<Tomato> q = new Queue<Tomato>();
static void BFS()
{
while (!q.Count.Equals(0))
{
int y = q.Peek().y;
int x = q.Peek().x;
int z = q.Peek().z;
q.Dequeue();
for (int i = 0; i < 6; i++)
{
int newY = y + dy[i];
int newX = x + dx[i];
int newZ = z + dz[i];
if (0 <= newX && newX < m && 0 <= newY && newY < n
&& 0 <= newZ && newZ < h && box[newZ,newY, newX] == 0)
{
box[newZ,newY, newX] = box[z,y, x] + 1;
q.Enqueue(new Tomato(newZ, newY, newX));
}
}
}
}
static void Soulution()
{
BFS();
for (int t = 0; t < h; t++)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (box[t, i, j] == 0)
{
Console.WriteLine("-1");
return;
}
if (result < box[t,i, j])
result = box[t,i, j];
}
}
}
Console.WriteLine(result - 1);
}
static void Input()
{
for (int t = 0; t < h; t++)
{
for (int i = 0; i < n; i++)
{
int[] input = Console.ReadLine().Split().Select(int.Parse).ToArray();
for (int j = 0; j < m; j++)
{
box[t, i, j] = input[j];
if (box[t,i, j] == 1)
q.Enqueue(new Tomato(t, i, j));
}
}
}
}
static void Solve()
{
Input();
Soulution();
}
static void Main(string[] args)
{
Solve();
}
}
'백준 > 5000~' 카테고리의 다른 글
[백준 / C#] 7576 : 토마토 (0) | 2023.06.30 |
---|---|
[백준 / C#] 9019 : DLSR (0) | 2023.06.24 |