코드 복사/붙여넣기 하는 당신이 아름답습니다.

3085 : 사탕 게임

풀이

맵의 크기가 50*50밖에 되지 않는다 (!)

인접한 칸을 swap하는 경우도 최대 50*49*2번밖에 되지 않는다 (!!)

모든 (x, y)를 돌면서 스왑 놀이를 해보자~!

코드

#include <stdio.h>
#include <algorithm>
using namespace std;

const int dx[] = { 0,1 };
const int dy[] = { 1,0 };

int n, ans;
char a[55][55];

int check() {
	int ret = 1, cnt = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j < n; j++) {
			if (a[i][j] == a[i][j + 1]) cnt++;
			else ret = max(ret, cnt), cnt = 1;
		}
		ret = max(ret, cnt), cnt = 1;
		for (int j = 1; j < n; j++) {
			if (a[j][i] == a[j + 1][i]) cnt++;
			else ret = max(ret, cnt), cnt = 1;
		}
		ret = max(ret, cnt), cnt = 1;
	}
	return ret;
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%s", a[i] + 1);
	}

	for (int x = 1; x <= n; x++) {
		for (int y = 1; y <= n; y++) {
			for (int d = 0; d < 2; d++) {
				int nx = x + dx[d], ny = y + dy[d];
				if (!a[nx][ny]) continue;
				swap(a[x][y], a[nx][ny]);
				ans = max(ans, check());
				swap(a[x][y], a[nx][ny]);
			}
		}
	}

	printf("%d", ans);

	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-01-30 18:30

Read more posts by this author