[알고리즘] 10709번: 기상캐스트

0. 문제

10709번: 기상캐스터


1. 문제 이해

  1. 0 : 처음에 ‘c’인 경우
  2. 1 ~ 99 : 처음은 ‘.’이지만 시간이 지나면서 구름이 뜨는 경우 → 처음은 ‘.’이고 왼쪽에 ‘c’가 있음.
  3. -1 : 처음은 ‘.’이지만 시간이 지나도 구름이 뜨지 않음 → 처음은 ‘.’이고 왼쪽에 ‘c’가 없음.
  4. ~H*W~크기의 배열에 입력값을 저장하고[0][0]에서부터 순회하면서 처리한다.
    1. ‘.’에 대한 각 행의 기본값은 -1이다.
    2. ‘c’를 만나면 그곳은 0으로 처리하고 recent=j로 설정한다.
    3. 앞으로 ‘.’에 대한 값은 recent-j다.
    4. 모든 행에 대하여 반복한다.

2. 제출

//백준 10709번: 기상캐스터
#include <iostream>
#define MAXHW 100

using namespace std;

int H, W, ret[MAXHW][MAXHW];

int main(){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL); cout.tie(NULL);

  cin >> H >> W;
  for(int i=0; i<H; i++){
    bool isClody = false;
    int cnt = 0;
    for(int j=0; j<W; j++){
      char input; cin >> input;
      cnt++;
      if(input == 'c'){
        ret[i][j]=0;
        isClody=true;
        cnt=0;
      }else if(isClody){
        ret[i][j]=cnt;
      }else{
        ret[i][j]=-1;
      }
    }
  }
  for(int i=0; i<H; i++){
    for(int j=0; j<W; j++){
      cout << ret[i][j] << " ";
    }
    cout <<"\n";
  }

  return 0;
}
Code language: PHP (php)

댓글 남기기