Deff_Dev
[프로그래머스] 바탕화면 정리 (C++) 본문
문제
풀이
이 문제는 상황에 맞게 정렬하여 풀이했다.
일단 pair<int, int> 벡터에 정리할 파일들의 좌표를 저장한다.
저장한 후, 드래그 시작 좌표와, 끝 좌표를 구한다.
드래그 시작
Y 좌표
→ Y축으로 오름차순 정렬 후, 0 번째 좌표의 Y값
X 좌표
→ X축으로 오름차순 정렬 후, 0 번째 좌표의 X값
드래그 끝
Y 좌표
→ Y축으로 내림차순 정렬 후, 0 번째 좌표의 Y + 1값
X 좌표
→ X축으로 내림차순 정렬 후, 0 번째 좌표의 X + 1값
순서대로 answer에 Push 해주고 Return
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
bool cmp_HighY (pair<int,int> a, pair<int,int> b){
return a.first > b.first;
}
bool cmp_HighX (pair<int,int> a, pair<int,int> b){
return a.second > b.second;
}
bool cmp_LowX (pair<int,int> a, pair<int,int> b){
return a.second < b.second;
}
vector<int> solution(vector<string> wallpaper) {
vector<int> answer;
vector <pair<int, int>> fileVec;
for(int i = 0; i < wallpaper.size(); i++){
for(int j = 0; j < wallpaper[i].length(); j++){
if(wallpaper[i][j] == '#')
fileVec.push_back({i, j});
}
}
// 드래그 시작 좌표 구하기
sort(fileVec.begin(), fileVec.end());
answer.push_back(fileVec[0].first);
sort(fileVec.begin(), fileVec.end(), cmp_LowX);
answer.push_back(fileVec[0].second);
// 드래그 종료 좌표 구하기
sort(fileVec.begin(), fileVec.end(),cmp_HighY);
answer.push_back(fileVec[0].first + 1);
sort(fileVec.begin(), fileVec.end(), cmp_HighX);
answer.push_back(fileVec[0].second + 1);
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 등굣길 (C++) (0) | 2024.09.05 |
---|---|
[프로그래머스] 키패드 누르기 (C++) (1) | 2024.09.05 |
[프로그래머스] 의상 (C++) (0) | 2024.08.18 |
[프로그래머스] 폰켓몬 (C++) (0) | 2024.08.18 |
[프로그래머스] 단어 변환 (C++) (0) | 2024.08.16 |