
상 : height
하 : 0
좌 : width
우 : 0
처럼 각 인덱스의 최대 반대에 위치한 좌표로부터 갱신해서 답을 구한다. 이때, 오른쪽 아래 좌표인 rdx, rdy의 경우 인덱스 가장자리 값을 가져야 하므로 +1을 해 답을 구한다.
#include <string>
#include <vector>
#include <iostream>
//#include <cstdlib>
using namespace std;
vector<int> solution(vector<string> wallpaper) {
vector<int> answer;
int width = wallpaper[0].size(), height = wallpaper.size();
int up = height, down = 0, right = 0, left = width;
int i, j;
for(i = 0; i < height; i++){
for(j = 0; j < width; j++){
if(wallpaper[i][j] == '#'){
cout << "현 위치 : " << i << ", " << j << "\n";
if(i < up){//상부 갱신
up = i;
}
if(i > down){//하부 갱신
down = i;
}
if(j < left){//좌측 갱신
left = j;
}
if(j > right){//우측 갱신
right = j;
}
cout << "up : " << up << " down : " << down << " left : " << left << " right : " << right << "\n";
}
}
}
answer.push_back(up);
answer.push_back(left);
answer.push_back(down + 1);
answer.push_back(right + 1);
return answer;
}