fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 29516 (C++) Королевский сад
최초 업로드: 2025-11-20 16:38:40
최근 수정 시간: 2025-11-20 16:38:40
게시자: rlatjwls3333
카테고리: 백준
조회수: 7
# [Bronze II] Королевский сад [문제 링크](https://www.acmicpc.net/problem/29516) ## 문제 설명 <p>Королевский парк широко известен своей коллекцией редких деревьев. Он состоит из $a$ рядов по $b$ деревьев в каждом.</p> <p>Однажды у короля появилась неизвестная аллергия. В тот же вечер королевскому садовнику было поручено вырубить некоторые деревья в саду так, чтобы остались деревья только одного типа, а времени на это было дано до утра. Так как он ни разу в жизни не рубил деревья (он все же садовник, а не дровосек), то он обратился к знакомому волшебнику за помощью. Волшебник согласился помочь и вырубить один произвольный ряд деревьев.</p> <p>У садовника есть план, на котором парк изображен в виде прямоугольника $a$ на $b$ клеток, в каждой из которых записано, какое дерево растет в этом месте. Перед садовником стоит сложная задача --- ему надо указать волшебнику на плане вертикальный или горизонтальный ряд, и он вырубит на нем все деревья. После вырубки все оставшиеся деревья в парке должны быть одинаковы.</p> <p>А Ваша задача состоит в том, чтобы узнать может ли волшебник помочь садовнику или нет.</p> ## 입력 <p>В первой строке входного файла содержится два целых числа $a$ и $b$ ($1 \le a, b \le 10$) --- размеры парка. Каждая из следующих $a$ строк описывает один ряд парка. Строка содержит ровно $b$ маленьких латинских букв --- виды деревьев в соответствующем ряду.</p> ## 출력 <p>В выходной файл выведите <<<code>Yes</code>>>, если садовник может нужным образом выбрать ряд, и <<<code>No</code>>> в противном случае.</p> ## 풀이 한 열, 한 행을 제외하고 모든 문자가 같은지 브루트포스로 확인해보면 됩니다. ``` c++ #include<bits/stdc++.h> using namespace std; int a, b; string board[10]; bool chkRow(int skip) { char ch=0; for(int i=0;i<a;i++) { if(skip==i) continue; for(int j=0;j<b;j++) { if(!ch) ch=board[i][j]; else if(ch!=board[i][j]) return false; } } return true; } bool chkCol(int skip) { char ch=0; for(int i=0;i<a;i++) { for(int j=0;j<b;j++) { if(skip==j) continue; if(!ch) ch=board[i][j]; else if(ch!=board[i][j]) return false; } } return true; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> a >> b; for(int i=0;i<a;i++) cin >> board[i]; for(int i=0;i<a;i++) { if(chkRow(i)) { cout << "Yes"; return 0; } } for(int i=0;i<b;i++) { if(chkCol(i)) { cout << "Yes"; return 0; } } cout << "No"; } ```