-
[프로그래머스/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}; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 1] 가장 많이 받은 선물 (1) 2024.01.07 [프로그래머스/Level 1] 대충 만든 자판 (1) 2024.01.04 [프로그래머스/Level 1] 공원 산책 (0) 2024.01.02 [프로그래머스/Level 1] 달리기 경주 (0) 2023.12.27 [프로그래머스/Level 1] 개인정보 수집 유효기간 (0) 2023.04.10