도시의 기상상태를 저장할 2차원배열 a와 기상예측을 저장할 2차원배열 ret를 선언하고
입력을 a에 저장한 뒤 a를 탐색하면서 해당요소의 좌측에 구름이 있는지를 확인한다.
인덱스를 줄여가며 탐색하다가 범위를 초과하면 ret배열에 -1을 저장하고 break한다.
범위 내에서 구름을 찾으면 요소와 구름의 거리를 ret에 저장하고 break한다.
#include <bits/stdc++.h>
using namespace std;
int H,W;
char a[104][104];
int ret[104][104];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> H >> W;
for(int i=0; i<H; i++){
for(int j=0; j<W; j++){
cin >> a[i][j];
}
}
for(int i=0; i<H; i++){
for(int j=0; j<W; j++){
int idx = j;
while(true){
if(idx < 0) { ret[i][j] = -1; break; }
if(a[i][idx] == 'c') { ret[i][j] = j-idx; break; }
idx--;
}
}
}
for(int i=0; i<H; i++){
for(int j=0; j<W; j++){
cout << ret[i][j] << " ";
}
cout << "\n";
}
return 0;
}
이런 문제들이 나오면 원본배열을 최대한 유지시켜서 문제를 풀려고 노력중이다.
이유는 바꾼 원본배열을 다시 탐색하거나 값을 읽으면서 생길 수 있는 여러가지 실수와 오류를 방지하기 위해서.