[원본 링크]
코딩테스트 연습 - 가장 큰 수
- 첫 번째 접근 → 숫자끼리 비교
- 잦은 추가와 삭제가 예상돼서 배열을 List로 복사하는
arrayToList()
- 최대 수를 찾아 temp 리스트에서 제거하여 list 리스트에 추가
- temp 리스트가 빌 때까지 반복한다.
- 각 숫자의 맨 앞자리 수를 비교하여 최대 수를 선택하는
addMaxNum()
- ex) 31과 7 → 3과 7을 비교하여 둘 중 큰 숫자를 선택
- 단, 이 방법은 34, 3, 7 이 있을 경우 7343이 아닌 7334로 되므로
첫째 자리 수 이후에 둘째 자리 수도 비교하는 과정이 필요
- 이후에 3자리 수, 4자리 수가 있다면? → 마지막 자리 수까지 비교하는 과정이 필요
- 두번째 접근 → 문자열로 비교
- 정수열 배열을 문자열 배열로 복사
- 이후 Comparator 인터페이스를 이용해
compare()
호출
- 단, 배열이 {0, 0, 0 ,,,} 등과 같이 0만으로 주어질 경우는 000이 아닌 0으로 리턴