-
백준 1236번 : 성 지키기c c++ 언어 공부 2023. 8. 21. 10:27
https://www.acmicpc.net/problem/1236
1236번: 성 지키기
첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다
www.acmicpc.net
Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include <stdio.h>int main() {char arr[51][51] = { 0, };int n, m;int flag = 0;scanf("%d %d", &n, &m);int le = n, he = m;int i = 0, j = 0;int count = 0;for (i = 0; i < n; i++){scanf("%s", arr[i]);}for (i = 0; i < n; i++){flag = 0;for (j = 0; j < m; j++){if (arr[i][j] == '.'){continue;}else{flag = 1;break;}}if (flag == 1){le -= 1;}}for (i = 0; i < m; i++){flag = 0;for (j = 0; j < n; j++){if (arr[j][i] == '.'){continue;}else{flag = 1;break;}}if (flag == 1){he -= 1;}}count = (le > he) ? le : he;printf("%d", count);}cs 문제 설명
주어진 직사각형 성의 크기와 각 칸의 상태가 주어집니다. 성은 빈 칸(.)과 경비원(X)으로 이루어져 있습니다. 성의 모든 행과 모든 열에 적어도 하나의 경비원이 있어야 합니다. 이때, 최소한으로 추가해야 하는 경비원의 수를 계산하는 문제입니다.
알고리즘 설명
우리의 목표는 모든 행과 모든 열에 경비원이 있는지 확인하고, 필요한 경비원의 수를 계산하는 것입니다. 이를 위해 다음과 같은 알고리즘을 사용합니다:
- 성의 크기와 상태를 입력받습니다.
- 각 행에 대해, 그 행에 하나 이상의 경비원이 있는지 확인하고, 필요한 경비원 수를 계산합니다.
- 각 열에 대해, 그 열에 하나 이상의 경비원이 있는지 확인하고, 필요한 경비원 수를 계산합니다.
- 행과 열에서 필요한 경비원 수 중 더 큰 값을 최종 필요한 경비원 수로 선택합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 11557번 : Yangjojang of The Year(C 언어) (0) 2023.08.22 백준 1233번 : 주사위 (0) 2023.08.21 백준 5347번 : LCM(C 언어) (0) 2023.07.02 백준 2530번 : 인공지능 시계 (C 언어) (0) 2023.07.02 백준 2910번 : 빈도 정렬 (C++) (0) 2023.07.01