※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 14647번 문제인 준오는 조류혐오야!!이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/14647 

 

14647번: 준오는 조류혐오야!!

첫째 줄에 직사각형 빙고판의 크기를 뜻하는 n(1 ≤ n ≤ 500)과 m(1 ≤ m ≤ 500)이 주어진다. 다음 줄부터 n개의 줄에 걸쳐 각 줄마다 m개의 숫자들이 주어진다. 이는 크기가 n×m인 짝꿍의 빙고판의

www.acmicpc.net

각 칸의 9의 개수를 세고, 행과 열마다 9가 몇 개씩 들어있는지를 세는 문제이다.

 

9의 개수를 세는 것은 10으로 나눈 나머지가 9인지 확인하고 10으로 나누는 것을 주어진 수가 0이 될 때까지 반복하는 것으로 구현할 수 있다.

 

모든 수를 저장할 필요 없이 각 행에 들어있는 9를 각 행과 열의 9 개수를 세는 배열에 바로 더해 문제를 해결할 수도 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int rowsum[500], colsum[500];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int R, C; cin >> R >> C;

	for (int r = 0; r < R; r++) {
		for (int c = 0; c < C; c++) {
			int x; cin >> x;
			while (x) {
				if (x % 10 == 9) rowsum[r]++, colsum[c]++;
				x /= 10;
			}
		}
	}

	int total = 0, mx = -1000000007;
	for (int r = 0; r < R; r++) {
		total += rowsum[r];
		mx = max(mx, rowsum[r]);
	}
	for (int c = 0; c < C; c++) mx = max(mx, colsum[c]);

	cout << total - mx;
}
728x90

+ Recent posts