프로그래머스 - 바탕화면 정리
프로그래머스 문제 링크
바탕화면은 (세로 좌표, 가로 좌표)로 표현하며 가장 왼쪽 위 (0, 0)부터 시작한다.
파일이 있는 칸을 #으로 표현할 때 바탕화면에 있는 모든 파일을 최단 거리로 드래그할 수 있는 시작 좌표(lux, luy)와 끝 좌표(rdx, rdy)를 정수 배열{lux, luy, rdx, rdy}에 넣어 반환하는 solution 함수를 작성해라.
제한사항
wallpaper의 모든 원소의 길이는 동일하다.wallpaper 길이 ≤ 50wallpaper[i] 길이 ≤ 50wallpaper[i][j]는 '#'이나 '.'의 값만 가진다.👉예시
wallpaper = {".#...", "..#..", "...#."}
answer = {0, 1, 3, 4}
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<string> wallpaper) {
vector<int> answer;
for(int i=0; i<wallpaper.size(); i++)
{
for(int j=0; j<wallpaper[i].size(); j++)
{
if(wallpaper[i][j] == '#')
{
// 파일 처음 찾았을 때
if(answer.size()==0)
{
answer.push_back(i);
answer.push_back(j);
answer.push_back(i+1);
answer.push_back(j+1);
continue;
}
// rdx 비교
if(i + 1 > answer[2]) answer[2] = i + 1;
// luy, rdy
if(j < answer[1]) answer[1] = j;
else if (j + 1 > answer[3]) answer[3] = j + 1;
}
}
}
return answer;
}
wallpaper[i][j]=='#' 일때 answer의 크기가 0이면 파일을 처음 찾은 것 이므로 answer에 {i, j, i+1, j+1}값을 넣는다.