본문 바로가기

Programming/CodeUp

<코드업> 4040 : 펜션

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
	int n, m;
	string a;
	cin >> n >> m;
	int **schedule = new int*[n];
	for (int i = 0; i < n; i++)
	{
		schedule[i] = new int[m];
		cin >> a;
		for (int j = 0; j < m; j++)
		{
			if (a[j] == 'O')
				schedule[i][j] = 1;
			else
				schedule[i][j] = 0;
		}
	}
	int s, t;	// 시작 , 종료
	cin >> s >> t;
	s--;
	t -= 2 ;
	int *cnt_ary = new int[m];
		int a1 = s; /// 탐색 시작구간 임시로 a1로 잡음
		int cnt = 0;	// 방 옮긴 횟수
	int tmp[2];
	while (s <= t) {	// 시작일로부터 종료일까지 전체 탐색
		
		for (int i = 0; i < m; i++) // CNT_ARY 초기화
			cnt_ary[i] = 0;
		
		for (int i = 0; i < m; i++)
		{
			a1 = s;
			while (a1 <= t) { // 시작 == 종료 값으면 종료
				if (schedule[a1][i] == 1)
				{
					cnt_ary[i] ++;
					a1++;
				}
				else
					break;
			}
		}
		/*cnt_ary 가장 큰 값의 인덱스을 뽑는다. k
		s += (cnt_ary[k]-1)
		 cnt_ary 모두 0이면 -1 출력*/
		tmp[1] = cnt_ary[0];	// value
		tmp[0] = 0;				// index
		//cnt_ary 가장 큰 값 탐색.
		for (int i = 1; i < m; i++)
		{
			if (cnt_ary[i] > tmp[1])
			{
				tmp[0] = i;
				tmp[1] = cnt_ary[i];
			}
		}
		if (tmp[1] == 0)//cnt_ary 모두 0이면 -1 출력
		{
			cnt = 0;
			break;
		}
		else {
			s += (tmp[1]);
			cnt++;
		}
		
	}
	cout << cnt-1 << endl;
}

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

<코드업> 4713 : 공주님의 정원  (0) 2019.07.23
<코드업> 4684 : 자물쇠  (0) 2019.07.23
<코드업> 3321 : 최고의 피자  (0) 2019.07.23
<코드업> 3301 : 거스름돈  (0) 2019.07.23
<코드업> 3120 : 리모컨  (0) 2019.07.23