#include <bits/stdc++.h>
using namespace std;
char arr[104][104];
int ret[104][104];
int h,w,d;
bool cloud;
vector <char> v;
vector <int> v2;
int main(){
cin >> h >> w;
for(int i = 0; i < h; i++){
for(int j = 0; j < w; j++){
cin >> arr[i][j];
}
}
for(int i = 0; i < h; i++){
for(int j = 0; j< w; j++){
v.push_back(arr[i][j]);
}
auto a = find(v.begin(), v.end(), 'c');
d = 0;
cloud = 0;
if(a != v.end()){
for(char k : v){
if(k == 'c'){
d = 0;
cloud = 1;
v2.push_back(d);
}else{
if(cloud){
d++;
v2.push_back(d);
}else{
d = -1;
v2.push_back(d);
}
}
}
for(int k = 0; k < w; k++){
ret[i][k] = v2[k];
}
}else{
for(int k = 0; k < w; k++){
ret[i][k] = -1;
}
}
v.clear();
v2.clear();
}
for(int i = 0; i < h; i++){
for(int j = 0; j < w; j++){
cout << ret[i][j] << " ";
}
cout << "\n";
}
}
#include<bits/stdc++.h>
using namespace std;
int n,m, a[104][104];
string s;
int main(){
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;
else a[i][j] = 0;
}
}
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';
}
}
이번 문제는 구현 문제였다.
설계의 중요성을 깨닫는 중이었기 때문에 최대한 간단하게 하려고 노력해봤다.
특별한 규칙이 없어서 크게 어렵지는 않았다.
첫 번째 풀이는 너무 여러 번의 조건을 검사하기에 보기에도 힘들고 코드를 구현 하면서도 시간이 꽤 걸렸다.
하지만 두 번째 풀이는 훨씬 간단하게 많은 조건 검사없이 성공할 수 있었던 것 같다.
최대한 간단하게 꼼꼼하게 구현하려고 노력해야겠다.