프로그래머스/lv1/161990. 바탕화면 정리

SITY·2023년 9월 26일
0

Cpp_Algorithm

목록 보기
14/43

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<string> v) {
    int xMin = 50, yMin = 50, xMax = -1, yMax = -1;
    for (int i = 0; i < v.size(); i++)
        for (int j = 0; j < v[0].size(); j++)
            if (v[i][j] == '#') {
                xMin = min(xMin, i);
                yMin = min(yMin, j);
                xMax = max(xMax, i);
                yMax = max(yMax, j);
            }

    return {xMin, yMin, xMax + 1, yMax + 1};
}

간단히 좌표상의 조건으로 답을 구할 수 있다.
x축의 가장 작은 값, y축의 가장 작은 값 그리고 x축의 가장 큰 값, y축의 가장 큰 값을 구해야한다.

가장 작은 윗면 좌표 -> 0,1
가장 작은 왼쪽면 좌표 -> 1,0
가장 큰 오른쪽면 좌표 -> 2,8
가장 큰 아랫면 좌표 -> 6,4
.##...##.
#..#.#..#
#...#...#
.#.....#.
..#...#..
...#.#...
....#....
답 -> 0 0 / 7 9

가장 작은 윗면 좌표의 x축 , 가장 작은 왼쪽면 좌표 y축이 시작 위치이고,
가장 큰 아랫면 좌표의 x축, 가장 큰 오른쪽면 좌표의 y축이 끝나는 위치다.
단순히 x,y축의 min max값 4개만 2중 for문을 돌면서 구하면 되는 문제다.
끝쪽 드래그 좌표는 각각의 변수에 1씩 더한 값을 vector에 할당하여 return해준다.

profile
·ᴗ·

0개의 댓글