※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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
'BOJ' 카테고리의 다른 글
[BOJ 25174 // C++] 힘겨운 쿠기의 식당 개업기 (0) | 2022.08.21 |
---|---|
[BOJ 2381 // C++] 최대 거리 (0) | 2022.08.21 |
[BOJ 25189 // C++] 시니컬한 개구리 (0) | 2022.08.20 |
[BOJ 25188 // C++] 1, 3, 모 나누기 (0) | 2022.08.19 |
[BOJ 25187 // C++] 고인물이 싫어요 (0) | 2022.08.18 |