프로그래머스의 가장 큰 수(Lv2) 문제이다.
[ 문제풀이 ]
1) 주어진 수열에서 배치를 바꿔서 가장 큰 수를 찾아내야 하는 문제이다.
본인은 정렬을 이용해서 이 문제를 접근했는데, 정렬을 할 때 단순 오름차순 / 내림차순이 아닌, 새로운 기준을
만들어서 그 기준에 따라 정렬을 진행해 주었다.
문자열 2개를 비교 하는데, 2개를 합쳤을 때 더 큰 문자열 순서대로 정렬이 되도록 구현하였다.
예를 들어서, 입력 예제인 [ 6, 10, 2 ] 를 정렬한다고 가정했을 때,
가장 먼저 '6'과 '10'을 비교를 한다고 생각해보면, 2개를 합쳐보는 것이다.
610과, 106 2개의 값이 나올 수 있는데 610이 더 크기 때문에, 6이 더 앞에 오도록 !
10과 2를 비교할 때, 102과 210이 나올 수 있는데, 210이 더 크기 때문에 2가 더 앞에 올 수 있도록
6과 2를 비교할 때, 62와 26이 나올 수 있는데, 62가 더 크기 때문에 6이 더 앞에 올 수 있도록 기준을 정해주었다.
이 후, 정렬은 sort함수를 이용해서 정렬시켜 주었다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include<string> #include<vector> #include<algorithm> using namespace std; bool Standard(string A, string B) { if (A + B > B + A) return true; return false; } string solution(vector<int> numbers) { string Answer = ""; vector<string> Array; for (int i = 0; i < numbers.size(); i++) Array.push_back(to_string(numbers[i])); sort(Array.begin(), Array.end(), Standard); for (int i = 0; i < Array.size(); i++) Answer = Answer + Array[i]; if (Answer[0] == '0') Answer = "0"; return Answer; } | cs |
'[ Programmers Code ] > # PG - Level2' 카테고리의 다른 글
[ 프로그래머스 더 맵게 (Lv2) ] (C++) (2) | 2020.02.14 |
---|---|
[ 프로그래머스 괄호 변환 (Lv2) ] (C++) (0) | 2020.02.13 |
[ 프로그래머스 카카오 프렌즈 컬러링북 (Lv2) ] (C++) (4) | 2020.02.10 |
[ 프로그래머스 주식가격 (Lv2) ] (C++) (0) | 2020.02.10 |
[ 프로그래머스 다리를 지나는 트럭 (Lv2) ] (C++) (2) | 2020.02.10 |