본문 바로가기
Algorithm

[백준 10709] 기상캐스터

by YEON-DU 2020. 1. 19.
반응형

https://www.acmicpc.net/problem/10709

 

10709번: 기상캐스터

문제 JOI시는 남북방향이 H 킬로미터, 동서방향이 W 킬로미터인 직사각형 모양이다. JOI시는 가로와 세로의 길이가 1킬로미터인 H × W 개의 작은 구역들로 나뉘어 있다. 북쪽으로부터 i 번째, 서쪽으로부터 j 번째에 있는 구역을 (i, j) 로 표시한다. 각 구역의 하늘에는 구름이 있을 수도, 없을 수도 있다. 모든 구름은 1분이 지날 때마다 1킬로미터씩 동쪽으로 이동한다. 오늘은 날씨가 정말 좋기 때문에 JOI시의 외부에서 구름이 이동해 오는 경우

www.acmicpc.net

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int H, W;
vector<string> JOI;
int cloud[100][100];

// 구름이 있는 경우 c, 구름이 없는 경우 .
// 모든 구름은 1분이 지날 때마다 1킬로미터씩 동쪽(오른쪽)으로 이동
// 각 구역에 구름이 몇 분 뒤에 처음으로 오는지.
// 처음에 구름이 떠있던 경우 0

void setCloud()
{

	for (int i = 0; i < H; i++)
		for (int j = 0; j < W; j++)
		{
			cloud[i][j] = -1;
		}

	for (int i = 0; i < H; i++)
		for (int j = 0; j < W; j++)
		{
			for (int k = W - 1; k > 0; k--)
			{
				if (j >= k)
					if (JOI[i][j - k] == 'c') // k분 전에 왼쪽에 구름이 있던 경우
						cloud[i][j] = k;
			}

			if (JOI[i][j] == 'c') // 처음에 구름이 떠있던 경우
			{
				cloud[i][j] = 0;
				continue;
			}
		}
}

void printCloud()
{
	for (int i = 0; i < H; i++)
	{
		for (int j = 0; j < W; j++)
			cout << cloud[i][j] << " ";

		cout << endl;
	}
}

int main()
{
	
	cin >> H >> W;

	for (int i = 0; i < H; i++)
	{
		string st;
		cin >> st;
		JOI.push_back(st);
	}

	setCloud();
	printCloud();

	return 0;
}
반응형

'Algorithm' 카테고리의 다른 글

[백준 1780] 종이의 개수  (0) 2020.01.26
[백준 1756] 피자 굽기  (0) 2020.01.19
[백준 2823] 유턴 싫어  (0) 2020.01.19
[백준 1008] A/B  (0) 2020.01.17
[백준 1260] DFS와 BFS  (0) 2020.01.16

댓글