💻STUDY/BOJ

[BOJ] 14647. 준오는 조류 혐오야! (C)

coldNoodlePigeon 2022. 3. 9.
  • 코딩 초보

14647. 준오는 조류 혐오야!

 

심술쟁이 해커 임준오(동탄 주민)는 새를 싫어한다. 특히 비둘기를 싫어한다.

준오는 수업시간에 옆자리 짝꿍과 빙고게임을 하기로 했다. 준오와 짝꿍은 각자 원하는 숫자를 n×m 격자의 빙고판에 적었다. 그러고는 서로의 빙고판을 교환했는데, 준오는 짝꿍의 빙고판을 확인하자마자 화가 치밀어 올랐다. 짝꿍의 빙고판에 9가 들어간 숫자들이 엄청 많아서 비둘기가 떠올랐기 때문이다. 그래서 준오는 짝꿍의 빙고판을 부숴버렸다.

하지만 준오의 폭동에는 특별한 룰이 있다. 바로 모든 행과 열을 통틀어서 9가 가장 많이 쓰여 있는 행 또는 열을 단 하나만 부수는 것이다!

빙고판을 부수는 순간 준오와 선생님의 눈이 마주쳤고, 선생님은 빙고판에 남아있는 9의 개수만큼 준오를 때리기로 했다. 준오는 몇 대를 맞아야 할까?

 

첫째 줄에 직사각형 빙고판의 크기를 뜻하는 n(1 ≤ n ≤ 500)과 m(1 ≤ m ≤ 500)이 주어진다. 다음 줄부터 n개의 줄에 걸쳐 각 줄마다 m개의 숫자들이 주어진다. 이는 크기가 n×m인 짝꿍의 빙고판의 상태를 나타내며, 빙고판에는 10,000 이하의 음이 아닌 정수가 적힌다.

 

준오가 몇 대 맞아야 하는지 출력한다.

 


(문제가 너무 재치있고 웃기다)

 

행렬을 입력받고 

전체 9의 개수를 세서 (sum) 가장 9가 많은 행 또는 열의 9 개수를 (max)를 빼주면 된다. 

 

#include <stdio.h>

main() {
	int n, m,temp,count=0,max=0,sum=0; 
	scanf("%d %d", &n, &m); 
	int num[500][500];

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			scanf("%d", &num[i][j]); 
		}
	}

	for (int i = 0; i < n; i++) { //행별로 
		for (int j = 0; j < m; j++) {
			temp = num[i][j];
			while (temp > 0) {
				if (temp % 10 == 9) count++; 
				temp /= 10; 
			}
		}
		sum += count; 
		if (count > max) max = count; 
		count = 0; 
	}

	for (int i = 0; i < m; i++) { //열별로 
		for (int j = 0; j < n; j++) {
			temp = num[j][i];
			while (temp > 0) {
				if (temp % 10 == 9) count++;
				temp /= 10;
			}
		}
		if (count > max) max = count; 
		count = 0; 
	}
	printf("%d", sum - max); 
}

'💻STUDY > BOJ' 카테고리의 다른 글

[BOJ] 1357. 뒤집힌 덧셈 (C)  (0) 2022.03.12
[BOJ] 5585. 거스름돈 (C)  (0) 2022.03.10
[BOJ] 9093. 단어 뒤집기 (C)  (0) 2022.03.08
[BOJ] 11653. 소인수분해 (C)  (0) 2022.03.07
[BOJ] 5622. 다이얼 (C)  (0) 2022.03.06

댓글