728x90
문제
심술쟁이 해커 임준오(동탄 주민)는 새를 싫어한다. 특히 비둘기를 싫어한다.
준오는 수업시간에 옆자리 짝꿍과 빙고게임을 하기로 했다. 준오와 짝꿍은 각자 원하는 숫자를 n×m 격자의 빙고판에 적었다. 그러고는 서로의 빙고판을 교환했는데, 준오는 짝꿍의 빙고판을 확인하자마자 화가 치밀어 올랐다. 짝꿍의 빙고판에 9가 들어간 숫자들이 엄청 많아서 비둘기가 떠올랐기 때문이다. 그래서 준오는 짝꿍의 빙고판을 부숴버렸다.
하지만 준오의 폭동에는 특별한 룰이 있다. 바로 모든 행과 열을 통틀어서 9가 가장 많이 쓰여 있는 행 또는 열을 단 하나만 부수는 것이다!
빙고판을 부수는 순간 준오와 선생님의 눈이 마주쳤고, 선생님은 빙고판에 남아있는 9의 개수만큼 준오를 때리기로 했다. 준오는 몇 대를 맞아야 할까?
입력
첫째 줄에 직사각형 빙고판의 크기를 뜻하는 n(1 ≤ n ≤ 500)과 m(1 ≤ m ≤ 500)이 주어진다. 다음 줄부터 n개의 줄에 걸쳐 각 줄마다 m개의 숫자들이 주어진다. 이는 크기가 n×m인 짝꿍의 빙고판의 상태를 나타내며, 빙고판에는 10,000 이하의 음이 아닌 정수가 적힌다.
출력
준오가 몇 대 맞아야 하는지 출력한다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()), m = Integer.parseInt(st.nextToken());
int[][] arr = new int[n + 1][m + 1];
int maxn = 0, maxm = 0, maxi = 0, maxj = 0;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) {
int cnt = 0, tmp = Integer.parseInt(st.nextToken());
while (tmp > 0) {
if (tmp % 10 == 9)
cnt++;
tmp /= 10;
}
arr[i][j] = cnt;
arr[i][m] += cnt;
arr[n][j] += cnt;
if (maxn < arr[i][m]) {
maxi = i;
maxn = arr[i][m];
}
if (maxm < arr[n][j]) {
maxj = j;
maxm = arr[n][j];
}
}
}
int sum = 0;
if (maxn > maxm)
for (int i = 0; i < n; i++) {
if (i == maxi)
continue;
sum += arr[i][m];
}
else
for (int j = 0; j < m; j++) {
if (j == maxj)
continue;
sum += arr[n][j];
}
System.out.println(sum);
}
}
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 18228 펭귄추락대책위원회 JAVA (0) | 2022.01.28 |
---|---|
Baekjoon 14626 ISBN JAVA (0) | 2022.01.28 |
Baekjoon 4732 조옮김 JAVA (0) | 2022.01.28 |
Baekjoon 1193 분수찾기 JAVA (0) | 2022.01.27 |
Baekjoon 11723 집합 JAVA (0) | 2022.01.27 |
댓글