가장 큰 수를 만드려면 앞자리에 큰수가 올수록 좋기때문에 numbers
의 각 원소마다 첫번째 자리를 비교하여 큰 순서대로 숫자를 이어붙이면 될 듯 하다. 중간중간에 형변환만 잘 해주면 쉽게 풀 수 있지 않을까??
new
를 선언한다.numbers
의 원소를 iterator로 하나씩 꺼내어 new
에 저장한다.new
에 sorted
함수를 이용하여 크기순으로 정렬하되map
함수를 이용하여 각 원소의 첫번째 자리를 비교하는 조건을 만든다.new
를 iterator로 하나씩 꺼내어 answer
에 더해준다.레고레고
map
함수를 이용하여 첫번째자리를 비교하는 조건문을 넣는게 아니고 sortedBy
를 이용하여 조건에 맞는 값들을 가져오는게 맞는 방향같았다. 그러나 이런식으로하면 자릿수가 다른 (ex.10 과 100) 경우에 제대로된 비교를 하지 못한다. 그래서 인터넷을 좀 찾아보기로 했다.
source : https://bcp0109.tistory.com/298
sortwith
에 compareBy
를 사용하여 비교하는 원소의 길이가 같을때와 다를때를 각각 다르게 계산해주는 방식을 알게되었다.
다시 레고레고
11번 테스트케이스만 실패가 떠서 질문하기를 찾아봤는데 numbers
에 0만으로 이루어진 경우라는 글을 보았다. 그래서 비교가 끝난 후에 if(new[0] == "0") return "0"
의 0일때 처리를 따로 해주었다.
테스트도 통과~~