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
- 호스트 주소
- 백준
- list
- List 제거
- 기본 게이트웨이
- list 사용법
- c# list
- Visual Studio
- TCP/IP
- OSI 3계층
- BFS
- C# Contains
- List 정렬
- DP
- List 찾기
- C++
- 호스트
- 서브넷
- C# Find
- 알고리즘
- c#
- 네트워크
- 네트워크 용어
- Tostring 사용법
- AddRange
- 서브넷 마스크
- IP주소
- List 추가
- Parse 사용법
- InsertRange
Archives
- Today
- Total
CodeLabs
[백준 / C#] 2667 : 단지번호붙이기 본문
using System;
using System.Collections.Generic;
namespace _2667
{
class Program
{
static int n, cnt;
static int[] dx = { 0, 1, 0, -1 }, dy = { -1, 0, 1, 0 }; //상하좌우 표현
static string[] input = new string[25];
static bool[,] vi = new bool[25, 25];
static List<int> result = new List<int>();
static void DFS(int i, int j)
{
vi[i, j] = true;
cnt++;
for(int k=0; k<4; k++)
{
int newY = i + dy[k];
int newX = j + dx[k];
if (0 <= newX && newX < n && 0 <= newY && newY < n)
if ((input[newY])[newX] == '1' && !vi[newY, newX])
DFS(newY, newX);
}
}
static void Input()
{
n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++) input[i] = Console.ReadLine();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if ((input[i])[j] == '1' && !vi[i, j])
{
cnt = 0;
DFS(i, j);
result.Add(cnt);
}
}
}
result.Sort();
Console.WriteLine(result.Count);
for (int i = 0; i < result.Count; i++)
Console.WriteLine(result[i]);
}
static void Solve()
{
Input();
}
static void Main(string[] args)
{
Solve();
}
}
}
'백준 > 1000 ~' 카테고리의 다른 글
[백준 / C#] 2805 : 나무 자르기 (0) | 2023.08.09 |
---|---|
[백준 / C#] 2630 : 색종이 만들기 (0) | 2023.08.04 |
[백준 / C#] 2606 : 바이러스 (0) | 2023.08.02 |
[백준 / C#] 2579 : 계단 오르기 (0) | 2023.07.30 |
[백준 / C#] 2178 : 미로탐색 (0) | 2023.07.28 |