Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- unity git
- NavMesh
- 유니티 해상도 설정
- 유니티 머지
- networkobject.networkid
- githubdesktopmerge
- M590
- nav거리
- networkbehaviourid
- unity 병합
- Unity
- 유니티 합치기
- Github DeskTop Merge
- 유니티 해상도 변경
- m585 수리
- networkobject
- 깃허브 데스크탑 병합
- 몬스터
- navigation
- m585
- 오브젝트 깜빡임
- 유니티 해상도
- m590 수리
- 깃허브 데스크탑 합치기
- 유니티
- unity merge
- stateauthority
- 유니티 브랜치 merge
- nav오브젝트사이거리
Archives
- Today
- Total
집게사장의 꿈
백준 C# 7576 토마토 2차원 본문
https://krapboss.tistory.com/120
문제
익은 토마토를 기준으로 4방면의 토마토를 1일마다 전염시킴
1 : 익은 토마토
0 : 안익은 토마토
-1 : 없음
최초로 모든 토마토가 익는 날을 출력하되, 일부 토마토가 익을 수 없는 위치에 있는 경우 -1을 출력
해결
2차원 배열의 BFS 문제인데,
List 1차원 배열로 평면화 시켜서 익은 토마토 기준으로 4방면의 토마토에 전파.
internal class E7576_토마토_2차원
{ // 토마토
static void Main(string[] args)
{
string input() => Console.ReadLine();
int[] MN = input().Split().Select(int.Parse).ToArray();
int m = MN[0];
List<int> list = new List<int>();
//토마토 박스 값 추가
for (int i = 0; i < MN[1]; i++)
{
list.AddRange(input().Split().Select(int.Parse));
}
//익은 토마토의 인덱트 저장
Queue<int> sel = new Queue<int>();
if (list.Contains(0))
{
for (int i = 0; i < list.Count; i++)
{
if (list[i] == 1) sel.Enqueue(i);
}
}
int days = 0;
while (sel.Count > 0)
{
if(!list.Contains(0)) { break; }
int count = sel.Count;
for (int iter = 0; iter < count; iter++)
{
int id = sel.Dequeue();
//각 4방면의 인덱스를 구합니다.
int left = (id % m) == 0 ? -1 : (id -1);
int right = (((id + 1) % (m)) == 0) ? -1 : (id + 1);
int up = id - m < 0 ? -1 : id - m;
int down = (id + m) >= list.Count ? -1 : id + m;
//각 4방면 인덱스에 익은 토마토를 전파합니다.
int[] arr = new int[4] { left, right, up, down };
for (int j = 0; j < arr.Length; j++)
{
if (arr[j] != -1)
{
if (list[arr[j]] == 1 || list[arr[j]] == -1) continue;
list[arr[j]] = 1;
sel.Enqueue(arr[j]);
}
}
}
days++;
}
if (list.Contains(0)) Console.WriteLine(-1);
else Console.WriteLine(days);
}
}
'기타 > 백준' 카테고리의 다른 글
백준 C# 10026 적록색약 (0) | 2024.08.01 |
---|---|
백준 C# 1655 가운데를 말해요 (0) | 2024.07.31 |
백준 C# 7569 토마토 3차원 (0) | 2024.07.31 |
백준 C# 5430 AC (0) | 2024.07.30 |
백준 C# 2751 수정렬하기2 (4) | 2024.07.23 |