[HackerRank] Big Sorting

아르당·2023년 12월 15일
0

HackerRank

목록 보기
47/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

문제

문자열로 된 수의 배열이 주어지는데, 각 문자열은 1에서 10^6 자리까지의 양의 정수이다. 배열의 요소를 오름차순으로 정렬하고 정렬된 배열을 반환해라.

Example

unsorted = ['1', '200', '150', '3']

배열 ['1', '3', '150', '200']이 반환한다.

Function Description

bigSorting 함수를 완성해라.
bigSorting 함수는 아래와 같은 매개변수를 가지고 있다.

  • String unsorted[n]: 문자열 정수의 정렬되지 않은 배열

Return

  • String[n]: 숫자 순서로 정렬된 배열

Constraints

  • 1 <= n <= 2 * 10^5
  • 각 문자열은 양의 정수를 보장한다.
  • unsorted에 있는 모든 문자열의 총 자릿수는 1과 10^6 사이이다.

풀이

String 배열을 정렬하는 것이라서 Comparator을 오버라이드했다. 아마 단순히 문자열 배열을 정렬해 본 사람들이라면 문자열을 그냥 정렬하면 문자의 자리수와 상관없이 오름차순으로 정렬된다는 것을 알고 있다.

Comparator을 생성한다. 그리고 compare를 재정의 할 것인데 조건문을 통해 문자열의 길이에 따라 정렬한다.

Comparator<String> comp = new Comparator<String>(){

	@Override
	public int compare(String o1, String o2) {
		if(o1.length() > o2.length()){
			return 1;
		}

		if(o1.length() < o2.length()){
			return -1;
		}

		return o1.compareTo(o2);
	}
};

새롭게 정의한 Comparator로 unsorted를 정렬하고 반환한다.

unsorted.sort(comp);

return unsorted;

전체 코드

public static List<String> bigSorting(List<String> unsorted) {
	Comparator<String> comp = new Comparator<String>(){

		@Override
		public int compare(String o1, String o2) {
			if(o1.length() > o2.length()){
				return 1;
			}

			if(o1.length() < o2.length()){
				return -1;
			}

			return o1.compareTo(o2);
		}
	};

	unsorted.sort(comp);

	return unsorted;
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글