반응형
코딩하기 전 생각하기
/*
숫자를 이어 붙인 값을 비교하기 위해 숫자 벡터를 문자열 벡터로 변환한다.
comp 함수를 선언한다.
두 숫자를 그대로 붙여본 것과 순서를 바꿔서 붙여본 것을 비교한다.
다른 숫자와 비교했을 때 더 큰 값이 만들어지는 숫자를 앞으로 오게한다.
sort 함수로 벡터를 정렬한다.
벡터를 문자열로 변환하고 문자열을 반환한다.
*/
코드
#include <bits/stdc++.h>
using namespace std;
bool comp(string a, string b) {
return a + b > b + a;
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> str_numbers;
for (int i : numbers)
str_numbers.push_back(to_string(i));
sort(str_numbers.begin(), str_numbers.end(), comp);
for (int i=0; i<str_numbers.size(); i++)
answer += str_numbers[i];
if (answer[0] == '0')
answer = "0";
return answer;
}
느낀점
배열에 0만 여러 개 있는 경우를 예외처리하지 않아서 테스트 11에서 실패가 나왔다. 0000과 같은 숫자는 0으로 바꿔줘야 한다.
이런 종류의 TC는 쉽게 생각이 안 나는 것 같다.
(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.
댓글 환영합니다!
반응형
'Algorithm > programmers' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 (C++) (0) | 2021.09.17 |
---|---|
[프로그래머스] H-Index (C++) (0) | 2021.09.16 |
[프로그래머스] 모의고사 (C++) (0) | 2021.08.02 |
[프로그래머스] 2016년 (C++) (0) | 2021.07.24 |
[프로그래머스] 콜라츠 추측 (C++) (0) | 2021.07.24 |
댓글