[C++] 백준 10709번 풀이 (기상캐스터)

문제

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


입력 및 출력


풀이

변수, 함수 선언 및 초기화

int n, m; // 행과 열
string s; // 기상 정보(한 행)
int a[104][104] // 기상 예측 정보 저장
  • 구름(’c’)가 존재하지 않는 모든 지역(’.’)은 -1로 초기화 한다. a[i][j] = -1;
// 초기 배열 입력
for (int i = 0; i < n; i++)
{
    cin >> s;
    for (int j = 0; j < m; j++)
    {
        if (s[j] == '.')
        {
            a[i][j] = -1;
        }
    }
}

조건 체크하기

  • 현재 구름이 있는 지역부터 시작하여 다음 구름이 등장하기 전까지 예측시간을 1 증가 시킨다.
  • 후위연산자를 사용하기 때문에 0이 아닌 1부터 시작한다.(int ret = 1)
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            // 현재 구름이 있는 지역부터 시작
            if (a[i][j] == 0)
            {
                int cnt = 1;
                // 다음 구름이 등장하기 전까지 반복
                while (a[i][j + 1] == -1)
                {
                    a[i][j + 1] = cnt++;
                    j++;
                }
            }
        }
    }

결과 출력

  • 기상 예측 정보가 저장된 배열의 요소를 차례대로 출력한다.
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
    {
        cout << a[i][j] << " ";
    }
    cout << '\n';
}

전체 코드

#include <bits/stdc++.h>
using namespace std;
int n, m;
string s;
int a[104][104];
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin >> n >> m;
    // 초기 배열 입력
    for (int i = 0; i < n; i++)
    {
        cin >> s;
        for (int j = 0; j < m; j++)
        {
            if (s[j] == '.')
            {
                a[i][j] = -1;
            }
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            // 현재 구름이 있는 지역부터 시작
            if (a[i][j] == 0)
            {
                int cnt = 1;
                // 다음 구름이 등장하기 전까지 반복
                while (a[i][j + 1] == -1)
                {
                    a[i][j + 1] = cnt++;
                    j++;
                }
            }
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << '\n';
    }
    return 0;
}

결과