HyeM

[백준 3085]사탕게임_C++ 본문

Programming/Algorithm

[백준 3085]사탕게임_C++

Hailey_HyeM207 2020. 11. 10. 21:23

브루트포스 유형

문제, 입출력

 

입출력 예제

 

문제 설명 :

인접한 두 칸의 사탕을 바꾼 후, 보드(배열)에서 같은것이 최대로 연속된 것을 구한다. 

 

풀이 :

생각해야 될 것이 2가지 였다.

하나는 바꾸기, 두번째는 연속된 거 카운트 하기 이다

 - 바꾸기 : 좌우로 바꾸는 경우와 위아래 바꾸기로 2가지 있음  --> 구현 : main() 안에  

 - 연속된 거 카운트 :  에서 연속된 것과 로 연속된 거 2가지 있음  --> 구현 : Count() 함수

 

 

c++ 코드

#include<iostream>
using namespace std;

int n = 0;
char arr[51][51] = { 0, };
int dap = 0;  //최종 리턴값

void Count();



int main() {
	
	
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
			cin >> arr[i][j];
	}
	
	//cout << Count();
	char tmp; //자리 swap 할때 

	//1. 행(가로)에서만 바꾸기
	for (int i = 0; i < n; i++) {
		for (int j = 0; j<n-1; j++) {
			//arr[i][j]와 arr[i][j+1]를 swap 
			tmp = arr[i][j];
			arr[i][j] = arr[i][j + 1];
			arr[i][j + 1] = tmp;

			Count();

			//원위치 시켜줌.
			tmp = arr[i][j];
			arr[i][j] = arr[i][j + 1];
			arr[i][j + 1] = tmp;

		}
	}


	//2. 열(세로)에서만 바꾸기
	for (int j = 0; j< n; j++) {
		for (int i = 0; i < n - 1; i++) {
			//arr[i][j]와 arr[i][j+1]를 swap 
			tmp = arr[i][j];
			arr[i][j] = arr[i+1][j];
			arr[i+1][j] = tmp;

			Count();

			//원위치 시켜줌.
			tmp = arr[i][j];
			arr[i][j] = arr[i + 1][j];
			arr[i + 1][j] = tmp;

		}
	}

	cout << dap;

}


void  Count() {  //함수 : 해당 배열에서 인접한 칸 최대 개수 카운트
	char prev;
	int count = 0; //카운트

	// 1. 한 행(가로)에서 같은거 count
	for (int i = 0; i < n; i++) {
		prev = arr[i][0];
		count = 1;
		for (int j = 1; j < n; j++)
		{
			if (arr[i][j] == prev) {
				count += 1;
			}
			else {
				count = 1;
			}
			prev = arr[i][j];
			if (dap < count)
				dap = count;
		}
	
	}


	// 2. 한 열(세로)에서 같은 거 count
	for (int j = 0; j < n; j++) {
		prev = arr[0][j];
		count = 1;
		for (int i = 1; i < n; i++) {
			if (arr[i][j] == prev) {
				count += 1;
			}
			else {
				count = 1;
			}
			prev = arr[i][j];
			if (dap < count)
				dap = count;
		}
		
	}
}

'Programming > Algorithm' 카테고리의 다른 글

[백준2847]게임을 만든 동준이_C++  (0) 2020.11.12
[백준2828]사과담기게임_C++  (0) 2020.11.10
[백준 1439]뒤집기_C++  (0) 2020.11.10
[백준 2798]블랙잭_C++  (0) 2020.11.10
Comments