부루투포스 알고리즘
알고리즘 기법[전체 탐색] - 브루트 포스(brute force)
암호학에서의 브루트 포스(brute force attack)가 아닌 알고리즘의 브루트 포스(brute force search)에 관한 것을 작성한다. 브루트 포스(brute force) brute: 무식한, force: 힘 무식한 힘으로 해석할 수 있다...
hcr3066.tistory.com
문제
상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다.
가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다.
사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 보드의 크기 N이 주어진다. (3 ≤ N ≤ 50)
다음 N개 줄에는 보드에 채워져 있는 사탕의 색상이 주어진다. 빨간색은 C, 파란색은 P, 초록색은 Z, 노란색은 Y로 주어진다.
사탕의 색이 다른 인접한 두 칸이 존재하는 입력만 주어진다.
출력
첫째 줄에 상근이가 먹을 수 있는 사탕의 최대 개수를 출력한다.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <stack>
#include <string>
using namespace std;
int n;
char map[50][50];
int eatCandy() {
int ret = 1;
for (int y = 0; y < n; y++) {
int count = 1;
for (int x = 1; x < n; x++) { //x축에서 비교를 해줌
if (map[y][x] == map[y][x - 1]) //전과 같은 것이 있으면
count++; //count 증가
else count = 1; //같은 거 없으면 1로 둠
ret = max(count, ret); //ret은 ret 그대로거나 count
}
}
for (int x = 0; x < n; x++) { //y축에서 비교를 해줌
int count = 1; //count=1로 초기화
for (int y = 1; y < n; y++) {
if (map[y][x] == map[y - 1][x]) //전과 같은 것이 있으면
count++; //count 증가
else
count = 1; //없으면 그대로 1
ret = max(count, ret); //ret 업데이트
}
}
return ret; //ret반환
}
int main()
{
cin >> n;
for (int y = 0; y < n; y++) {
for (int x=0; x < n; x++) {
cin >> map[y][x]; //맵을 입력받은 문자로 채워 둔다
}
}
int ans = 0;
for (int y = 0; y < n; y++) {
for (int x = 0; x < n; x++) {
if (x + 1 < n) {
swap(map[y][x], map[y][x + 1]); //바로 다음 (x축 옆)있는 것과 교환하고
ans = max(ans, eatCandy()); // ans 를 업데이트 해준다
swap(map[y][x], map[y][x + 1]); //그리고 다시 원래다로
}
if (y + 1 < n) {
swap(map[y][x], map[y + 1][x]); //바로 다음 (y축 옆)있는 것과 교환하고
ans = max(ans, eatCandy()); //ans를 업데이트 해준다
swap(map[y][x], map[y + 1][x]); //그리고 다시 원래대로
}
}
}
cout << ans; //ans출력
return 0;
}
'Programming > Algorithm (C++)' 카테고리의 다른 글
[백준 1260] c++ :: DFS와 BFS (0) | 2024.03.17 |
---|---|
[백준 5567] c++ :: 결혼식 (1) | 2021.04.07 |
rush02 정리 (0) | 2021.03.16 |
c08 (0) | 2021.03.11 |
c09 (0) | 2021.03.11 |