반응형
* 개인 공부를 위하여 간단하게 정리한 것입니다.
* 틀린 부분 지적은 늘 환영입니다.
@ 프로그래머스 정렬 문제를 풀기위한 노트입니다.
int형 배열 {5,9,11,5,42,3}을 나열한 숫자 중 가장 큰 수는 95542311 이 될 것입니다. 어떻게 구할까요? 한참을 고민하고 풀어봐도 못 풀어서 구글 선생님의 힘을 빌렸습니다...ㅠㅠ
1. string형 배열 생성
vector<int> strs = { 5,9,11,5,42,3 };
string ans = solution(strs);
2. solution 함수는 다음과 같습니다.
2.2. to_string을 이용하여 strs 배열의 원소들을 int형으로 변환합니다.
2.2. sort 함수에 cmp라는 조건을 추가합니다. -> (3.으로)
2.3. vector를 다시 재배열한뒤(reverse) string을 쭉 이어줍니다.
string solution(vector<int> strs) {
string ans;
vector<string> temp;
for (int i = 0; i < strs.size(); i++)
temp.push_back(to_string(strs[i]));
sort(temp.begin(), temp.end(), cmp);
reverse(temp.begin(), temp.end());
for (int i = 0; i < strs.size(); i++)
ans += temp[i];
//if (ans.empty())
// return "0";
return ans;
}
3. sort 함수
3.1. str1 + str2 가 str2 + str1보다 크면 true -> 오름차순 정렬
3.2. str1 + str2 가 str2 + str1보다 작으면 false -> 오름차순 정렬하지 않음
3.3. 이러한 조건을 sort 함수에 추가
bool cmp(string& str1, string& str2) {
return str1 + str2 < str2 + str1 ? true : false;
}
4. 전체 코드
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(string& str1, string& str2) {
return str1 + str2 < str2 + str1 ? true : false;
}
string solution(vector<int> strs) {
string ans;
vector<string> temp;
for (int i = 0; i < strs.size(); i++)
temp.push_back(to_string(strs[i]));
sort(temp.begin(), temp.end(), cmp);
reverse(temp.begin(), temp.end());
for (int i = 0; i < strs.size(); i++)
ans += temp[i];
if (ans.empty())
return "0";
return ans;
}
int main() {
vector<int> strs = { };
string ans = solution(strs);
cout << ans << endl;
return 0;
}
그런데,,, 프로그래머스에 위 코드를 실행입력하지 11번 테스트에서 오류가 뜨는군요,, 좀 더 고민해봐야겠습니다.
+ sort에 저런 조건을 추가하는 기능이 있는지 처음 알았습니다.ㅠㅠ
반응형
'공부 > C++' 카테고리의 다른 글
10. C++ 타겟넘버, DFS, 깊이우선탐색 (0) | 2021.09.08 |
---|---|
9. C++ 미로찾기(Queue, Maze) (0) | 2021.08.19 |
8. C++ 동적프로그래밍, 재귀, Top Down, Bottom Up, 피보나치 (0) | 2021.08.19 |
7. C++ 오름차순 정렬 (vector, sort, ascending, descending) (0) | 2021.08.19 |
5. C++ string 크기 비교 (compare, cmp) (0) | 2021.08.19 |
4. C++ Vector 공백 제거 (0) | 2021.08.19 |
3. C++ 배열 생성 (0) | 2021.08.19 |
2. C++ vector 1차원, 2차원 초기화 및 출력 (0) | 2021.08.19 |