티스토리 뷰

 

문제는 위와 같으며 x 와 y 인덱스 배열을 하나씩 만들고 경비원이 있는 인덱스를 제거하면서 최종적으로 x, y 중 더 많은 인덱스가 남은 배열의 길이를 출력함으로써 해결하였습니다.

 

파이썬 코드는 다음과 같습니다.

from sys import stdin

n, m = map(int, stdin.readline().split())
castle = [list(stdin.readline().strip()) for _ in range(n)]

x = [i for i in range(n)]
y = [i for i in range(m)]

for i in range(n):
    for j in range(m):
        if castle[i][j] == "X":
            if i in x:
                x.remove(i)
            if j in y:
                y.remove(j)

print(max(len(x), len(y)))

 

자바 코드는 다음과 같습니다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] nm = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        String[][] castle = new String[nm[0]][nm[1]];
        for (int i = 0; i < nm[0]; i++) {
            String[] tmp = br.readLine().split("");
            castle[i] = tmp;
        }

        List x = new ArrayList();
        for (int i = 0; i < nm[0]; i++) {
            x.add(i + "");
        }
        List y = new ArrayList();
        for (int i = 0; i < nm[1]; i++) {
            y.add(i + "");
        }

        for (int i = 0; i < nm[0]; i++) {
            for (int j = 0; j < nm[1]; j++) {
                if (castle[i][j].equals("X")) {
                    if (x.contains(i + "")) {
                        x.remove(i + "");
                    }

                    if (y.contains(j + "")) {
                        y.remove(j + "");
                    }
                }
            }
        }

        System.out.println(Math.max(x.size(), y.size()));
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함