문제 출처 :
https://www.acmicpc.net/problem/2799
은근 신경써줘야 할 부분이 많은 까다로운 문제였습니다. 저는 이번 문제를 이전 string의 값을 가진 preStr과 새롭게 읽어온 str이라는 두 변수를 활용하였습니다. 벽과 창문으로 이루어진 아파트는 5N+1, 5M+1의 규칙성을 가지기때문에 이를 활용하였습니다.
#include <iostream>
#include <string>
using namespace std ;
int main(){
ios::sync_with_stdio();
cin.tie(NULL);
cout.tie(NULL);
int answer[5] = {0, 0, 0, 0, 0} ;
int N, M ;
cin >> M >> N;
string str, preStr ;
for(int i = 0 ; i < 5*M+1 ; i++){
cin >> str ;
if(i%5==0){
preStr = str ;
continue ;
}
for(int j = 1 ; j < 5*N ; j+=5){
if(preStr[j]!='.'){
if(str[j]=='.')
answer[i%5-1] += 1 ;
else if(str[j]=='*' && i%5==4)
answer[4] += 1 ;
}
}
preStr = str ;
}
cout << answer[0] ;
for(int i = 1 ; i < 5 ; i++){
cout << " " << answer[i];
}
cout << endl ;
return 0 ;
}
https://github.com/gurcks8989/CodingTest/blob/master/BackJoon/HPS/P2799_Blind.cpp
훈수, 조언 언제나 환영입니다.