https://www.acmicpc.net/problem/1388
#include <bits/stdc++.h>
using namespace std;
int main()
{
std::cin.tie(NULL);
std::cout.tie(NULL);
std::ios::sync_with_stdio(false);
int n, m;
int c = 0;
string s[105];
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> s[i];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (s[i][j] == '-')
{
if (j == m - 1 || s[i][j + 1] == '|')
c++;
}
if (s[i][j] == '|')
{
if (i == n - 1 || s[i + 1][j] == '-')
c++;
}
}
}
cout << c;
}
#include <bits/stdc++.h>
using namespace std;
char arr[50][50];
bool visited[50][50];
int n, m;
void dfs(int y, int x, int dir)
{
if (y >= n || x >= m)
return;
if (visited[y][x])
return;
if (dir == 0)
{
if (arr[y][x] != '-')
return;
}
else
{
if (arr[y][x] != '|')
return;
}
visited[y][x] = 1;
if (dir == 0)
dfs(y, x + 1, dir);
else
dfs(y + 1, x, dir);
}
int main()
{
std::cin.tie(NULL);
std::cout.tie(NULL);
std::ios::sync_with_stdio(false);
int count = 0;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cin >> arr[i][j];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (!visited[i][j])
{
count++;
if (arr[i][j] == '-')
dfs(i, j, 0);
else
dfs(i, j, 1);
}
}
}
cout << count;
return 0;
}
'백준 문제풀이 > 실버3' 카테고리의 다른 글
백준 1002번 - 터렛 (0) | 2022.08.18 |
---|---|
백준 3273번 - 두 수의 합 (0) | 2022.08.18 |
백준 11659번 - 구간 합 구하기 4 (0) | 2022.08.04 |
백준 1213번 - 팰린드롬 만들기 (0) | 2022.07.05 |
백준 14425번 - 문자열 집합 (0) | 2022.06.08 |