바탕화면 정리

eunheelog·2023년 6월 7일
0

programmers

목록 보기
7/15

프로그래머스 - 바탕화면 정리

문제 요약


  • 컴퓨터 바탕화면 → 정사각형
  • 컴퓨터 바탕화면 상태 → wallpaper
  • 빈칸은 '.', 파일은 '#'로 나타냄
  • 드래그로 파일을 선택하는 방법
    - 드래그는 바탕화면의 S(lux, luy)에서 E(rdx, rdy)로 이동한다.
    → 이때, 점 S에서 점 E로 드래그한다고 표현하며 S는 시작점, E는 끝점이다.
    - 점 S(lux, luy) → 점 E(rdx, rdy)로 드래그를 할 때,
    드래그 한 거리는 |rdx - lux| + |rdy - luy|

💡Idea

  1. 문제를 간단하게 생각해보자.
    • 제일 왼쪽 위에 있는 파일부터 제일 오른쪽 아래에 있는 파일을 포함해야한다.
      → 좌상단 파일과 우하단 파일의 좌표를 저장하자.
  2. 드래그할 때 시작점과 끝점을 어떻게 처리할까?
    → 시작점은 같고 끝점은 x, y좌표에 각각 1씩 더해주자.

[ SourceCode ]

#include <string>
#include <vector>

using namespace std;

// 시작점은 그대로, 끝점은 각각 + 1씩

vector<int> solution(vector<string> wallpaper) {
    vector<int> answer;
    pair <int, int> start(51, 51), end(0, 0);
    for(int i=0; i<wallpaper.size(); i++) {
        for(int j=0; j<wallpaper[i].size(); j++) {
            if(wallpaper[i][j] == '#') {
                start.first = min(i, start.first);
                start.second = min(j, start.second);
                end.first = max(i, end.first);
                end.second = max(j, end.second);
            }
        }
    }
   
    answer.push_back(start.first);
    answer.push_back(start.second);
    answer.push_back(end.first + 1);
    answer.push_back(end.second + 1);
  
    return answer;
}
profile
⛧1일 1알고리즘⛧

0개의 댓글