문제
풀이 방법
- 모든 행과 모든 열에 한명 이상씩 있어야하므로 아무도 없는 행과 열의 수를 각각 구한다.
- 이 중 최대값을 출력한다.
코드
package boj1236;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
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 x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int count =0,count2= 0,max=0;
boolean iscol = false;
String[] str = new String[x];
for (int i = 0; i < x; i++) {
str[i] = br.readLine();
if (str[i].contains("X")==false) {
count++;
}
}
for (int i = 0; i < y; i++) {
iscol = false;
for (int j = 0; j < x; j++) {
if(String.valueOf(str[j].charAt(i)).equals("X")){
iscol = true;
}
}
if(iscol == false){
count2++;
}
}
max = Math.max(count,count2);
System.out.println(max);
}
}
👇🏻 SET 이용
import java.io.*;
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());
Set<Integer> rowSet = new HashSet<>();
Set<Integer> colSet = new HashSet<>();
int x = n;
int y = m;
for (int i = 0; i < n; i++) {
String line = br.readLine();
for (int j = 0; j < m; j++) {
char c = line.charAt(j);
if (c == 'X') {
if (!rowSet.contains(i)) {
rowSet.add(i);
x--;
}
if (!colSet.contains(j)) {
colSet.add(j);
y--;
}
}
}
}
System.out.println(Math.max(x, y));
}
}
'코딩테스트' 카테고리의 다른 글
[백준 / 실버5] 2581 : 소수 (JAVA) (0) | 2023.03.17 |
---|---|
[백준 / 실버5] 1251 : 단어 나누기 (JAVA) (0) | 2023.03.17 |
[프로그래머스 / lv 2] 전화번호 목록 (JAVA_해시) (1) | 2023.03.16 |
[프로그래머스 / lv 1] 완주하지 못한 선수 (JAVA_해시) (0) | 2023.03.16 |
[프로그래머스 / lv 1] 폰켓몬 (JAVA_해시) (0) | 2023.03.12 |