https://www.acmicpc.net/problem/1236
문제
- 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. ( 1 <= N, M <= 50 ) 이 입력된다.
- 둘째 줄부터 N개의 줄에 M개씩 성의 상태가 주어지는데, .은 빈 곳이고 X는 경비원이 있는 칸이다.
- 모든 행과 열에 한 명 이상의 경비원을 배치해야 할 때 최소 몇 명의 경비원을 추가해야 되는 지 출력하라.
정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
String[][] list = new String[N][M];
for (int i = 0; i < N; i++) {
list[i] = br.readLine().split("");
}
int row = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (Objects.equals(list[i][j], "X")) {
break;
}
if (j == M - 1) {
row++;
}
}
}
int column = 0;
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
if (Objects.equals(list[j][i], "X")) {
break;
}
if (j == N - 1) {
column++;
}
}
}
int result = Math.max(row, column);
System.out.println(result);
}
}
경비원이 없는 행과 열을 따로 세어 더 큰 쪽에 경비원을 세우면 답이 나온다.
만약 행이 더 많다면 경비원이 없는 행과 열이 교차되는 부분에 경비원을 추가로 투입하면 행 부분에 추가됐다고 했을 때 열 부분에는 추가가 필요하지 않기 때문이다.
'백준 문제 풀이 > 백준 (JAVA)' 카테고리의 다른 글
JAVA 백준 14425 문자열 집합 (집합과 맵) (0) | 2025.05.04 |
---|---|
JAVA 백준 10158 개미 (수학) (0) | 2025.05.03 |
JAVA 백준 13223 소금 폭탄 (문자열) (1) | 2025.05.01 |
JAVA 백준 2744 대소문자 바꾸기 (문자열) (0) | 2025.05.01 |
JAVA 백준 1543 문서 검색 (문자열) (0) | 2025.04.30 |