코딩테스트

[백준 / 브론즈1] 1236 : 성 지키기 (JAVA)

lyndaa 2023. 3. 17. 15:57

문제


풀이 방법

  • 모든 행과 모든 열에 한명 이상씩 있어야하므로 아무도 없는 행과 열의 수를 각각 구한다.
  • 이 중 최대값을 출력한다.

코드

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));
    }
}