-
[프로그래머스/Level 2] 가장 큰 수 (C++)알고리즘 문제풀이/프로그래머스 2020. 11. 1. 18:55
programmers.co.kr/learn/courses/30/lessons/42746
numbers 벡터의 원소들을 to_string을 통해 문자열로 바꾼 후, 새로운 벡터에 넣어준다.
내림차순을 해주는데, 이 때 앞의 문자열과 뒤의 문자열을 합쳤을 때 어떤게 더 값이 큰지 비교한다.
ex) "6", "15" 일 때, "615" 가 "156" 보다 크다.
이때 [0, 0, 0]이 입력되었을 때, 값이 "000"으로 나오게 되는데, 예외처리가 필요하다.
벡터의 앞에 "0"이 나왔을 경우, "0"이 가장 큰 경우 이므로 뒤에도 전부 "0"일 것이다. 따라서 "0" 하나만을 리턴하게 만든다.
#include <string> #include <vector> #include <algorithm> using namespace std; // 문자열을 내림차순하는데, 앞의 문자열과 뒤의 문자열을 합쳤을 때 어떤게 더 큰지 비교 int cmp(string a, string b) { return a+b > b+a; } string solution(vector<int> numbers) { string answer = ""; vector<string> v; for(int i = 0; i < numbers.size(); i++) { v.push_back(to_string(numbers[i])); } sort(v.begin(),v.end(),cmp); if(v[0]=="0") return v[0]; for(int i=0; i < numbers.size(); i++) { answer+=v[i]; } return answer; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 2] 소수 찾기 (C++) (0) 2020.11.03 [프로그래머스/Level 2] 카카오프렌즈 컬러링북 (C++) (0) 2020.11.03 [프로그래머스/Level 2] 프린터 (C++) (0) 2020.11.01 [프로그래머스/Level 2] 다리를 지나는 트럭 (C++) (0) 2020.11.01 [프로그래머스/SQL] String, Date (MySQL) (0) 2020.10.31