Mini

백준 10709 //따닥따닥 입력받기 , 규칙발견, 구현 본문

Algorithm/boj

백준 10709 //따닥따닥 입력받기 , 규칙발견, 구현

Mini_96 2023. 5. 12. 16:23

10709번: 기상캐스터 (acmicpc.net)

 

10709번: 기상캐스터

출력은 H 행으로, 각 행에는 공백으로 구분된 W 개의 정수를 출력한다. 출력의 i 번째 행 j 번째 정수 (1 ≦ i ≦ H, 1 ≦ j ≦ W) 는, 지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시

www.acmicpc.net

* 따닥따닥 입력받기

1.문자열[index]

cin >> s; 
		for(int j = 0; j < m; j++){ 
			if(s[j] == '.')a[i][j] = -1;
			else a[i][j] = 0;
		}

2. s.at(index)

cin >> s;
        for (int j = 0; j < x; ++j)
        {
            c = s.at(j);
            if (c == 'c')
            {
                a[i][j] = 1;
                v[i][j] = 0;
            }
        }

 

* 규칙발견

구름오른쪽으로 1(k)씩증가 : 0,1,2

단, 구름이잇으면(a[][nx]) 정지

-구현

for (int i = 0; i < y; ++i)
    {
        for (int j = 0; j < x; ++j)
        {
            if (a[i][j])
            {
                for(int k=1;k<x;++k)
                {
                    nx = j + k;
                    if (nx >= x) { break;}
                    if (a[i][nx]) { break;}
                    v[i][nx] = v[i][j] + k;
                }
            }
           
        }
    }

 

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
int x, y,nx, a[104][104],v[104][104];
char c;
string s;

int main() {
    //ios_base::sync_with_stdio(0);
    //cin.tie(NULL); cout.tie(NULL);
    
    fill(&v[0][0], &v[0][0]+104*104, -1);
    cin >> y>>x;
    for (int i = 0; i < y; ++i)
    {
        cin >> s;
        for (int j = 0; j < x; ++j)
        {
            c = s.at(j);
            if (c == 'c')
            {
                a[i][j] = 1;
                v[i][j] = 0;
            }
        }
    }

    //for (int i = 0; i < y; ++i)
    //{
    //    for (int j = 0; j < x; ++j)
    //    {
    //        cout << a[i][j] << " ";
    //    }
    //    cout << "\n";
    //}

    for (int i = 0; i < y; ++i)
    {
        for (int j = 0; j < x; ++j)
        {
            if (a[i][j])
            {
                for(int k=1;k<x;++k)
                {
                    nx = j + k;
                    if (nx >= x) { break;}
                    if (a[i][nx]) { break;}
                    v[i][nx] = v[i][j] + k;
                }
            }
           
        }
    }

    for (int i = 0; i < y; ++i)
    {
        for (int j = 0; j < x; ++j)
        {
            cout << v[i][j] << " ";
        }
        cout << "\n";
    }
    
    return 0;
}