본문 바로가기

코딩테스트/프로그래머스

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

728x90
반응형


🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/161990

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

👩‍💻 코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<string> wallpaper) {
    vector<int> answer;
    int lux = 50;
    int luy = 50;
    int rdx = 0;
    int rdy = 0;
    
    for(int i=0; i<wallpaper.size(); i++){
        for(int j=0; j<wallpaper[i].size(); j++){
            if(wallpaper[i][j] != '#'){
                continue;
            }
            
            if(i < lux){
                lux = i;
            }
            
            if(j < luy){
                luy = j;
            }
            
            if(i > rdx){
                rdx = i;
            }
            
            if(j > rdy){
                rdy = j;
            }
        }
    }
    
    answer.push_back(lux);
    answer.push_back(luy);
    answer.push_back(rdx+1);
    answer.push_back(rdy+1);
    
    return answer;
}

✏️풀이

문제 풀이를 가장 왼쪽, 오른쪽, 위쪽, 아래쪽에 있는 바탕화면 파일을 찾는 것으로 접근하였다.

lux와 luy는 최소값을 찾아야 하니 최대값부터 시작하고 rdx와 rdy는 최대값을 찾아야 하니 최소값부터 시작했다.

- 가장 왼쪽 index값(i)은 lux 👉 index가 작을 때

- 가장 오른쪽 index값(i)은 rdx 👉 index가 클 때

- 가장 위쪽 index값(j)은 luy 👉 index가 작을 때

- 가장 아래쪽 index값(j)은 rdy 👉 index가 클 때

 

왼쪽 위부터 시작하기 때문에 

주의 할 점은 마지막에 rdx와 rdy에 +1을 해주어야 가장 오른쪽과 가장 아래쪽 위치의 파일도 포함시킬 수 있다.

 

728x90
반응형