728x90
문제
https://www.acmicpc.net/problem/1388
풀이
주어진 보드에서 ‘|’ 또는 ‘-’ 모양의 타일을 각각 세로와 가로로 전부 연결해서 만들어지는 판자들이 몇개 인지 구하는 문제다.
판자가 아닌 타일들을 방문하면서 규칙에 따라 하나의 판자로 만들어주는 횟수를 세면 된다.
// Solve
int cnt = 0;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
if (board[i][j] != VISITED) {
++cnt;
connect(i, j, board[i][j]);
};
}
}
// Output
System.out.println(cnt);
}
}
현재 타일의 종류에 따라 가로 또는 세로로 연결된 동일한 종류의 타일들을 모두 방문해주자.
만약 다른 종류의 타일이 나온다면 더 이상 연결할 수 없으므로 탐색을 중단해야 한다.
private static void connect(int x, int y, char type) {
if (type == '-') {
for (int ny = y; ny < M; ++ny) {
if (board[x][ny] == '-') {
board[x][ny] = VISITED;
} else {
break;
}
}
} else if (type == '|') {
for (int nx = x; nx < N; ++nx) {
if (board[nx][y] == '|') {
board[nx][y] = VISITED;
} else {
break;
}
}
}
}
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/01388.java
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 14335] 서로 다른 부분 수열의 개수 [Java] (0) | 2025.04.03 |
---|---|
[백준 32184] 디미고에 가고 싶어! [Java] (0) | 2025.04.02 |
[백준 32154] SUAPC 2024 Winter [Java] (0) | 2025.03.27 |
[백준 13022] 늑대와 올바른 단어 [Java] (0) | 2025.03.26 |
[백준 27370] 친구와 배달하기 [Java] (0) | 2025.03.26 |