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