알고리즘 문제풀이/프로그래머스
[프로그래머스/Level 1] 바탕화면 정리
노력의천재
2024. 1. 2. 22:56
https://school.programmers.co.kr/learn/courses/30/lessons/161990
최소한의 이동거리를 갖는 한 번의 드래그로 모든 파일을 선택하기 위해선 규칙이 존재하는데,
각 파일의 x좌표와 y좌표의 최소값, 최대값을 찾은 후 시작점은 최소값들의 좌표로 구성하고, 끝점은 최대값들의 좌표로 구성한 후 각각 +1을 해주면 된다.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<int> solution(vector<string> wallpaper) {
vector<int> xPos, yPos;
for (int i = 0; i < wallpaper.size(); i++) {
for (int j = 0; j < wallpaper[i].size(); j++) {
if (wallpaper[i][j] == '#') {
xPos.push_back(i);
yPos.push_back(j);
}
}
}
int xMin = *min_element(xPos.begin(), xPos.end());
int yMin = *min_element(yPos.begin(), yPos.end());
int xMax = *max_element(xPos.begin(), xPos.end());
int yMax = *max_element(yPos.begin(), yPos.end());
return {xMin, yMin, xMax + 1, yMax + 1};
}