Simple&Natural

정렬 - 가장 큰 수 본문

코딩테스트 풀이/프로그래머스

정렬 - 가장 큰 수

Essense 2022. 4. 30. 23:33
728x90

Java 풀이

 

한 가지 개선할 점이 있다면,

내 코드에서는 set을 만들어 0 으로만 이루어져 있는지 확인하는 방법을 썼는데

0 으로만 이루어진 수를 체크할 때 단순히 첫 번째 원소가 0 인지만 확인하면 된다. 

 

또한 우선순위 큐를 사용하는 방법도 있는데 로직상으로는 comparator와 유사하다.

 

내 코드들을 보면 메소드 내 임시 변수 사용량이 많아 불필요한 메모리 사용이 많아 보이는 것 같다.

 

일단 제한된 시간 안에 테스트를 통과하는 것이 목표인 만큼 효율성이나 깔끔한 코드보다는 직관적으로 떠오르는 풀이를 통해 정확도를 우선적으로 고려하고 있고 나중에 코드리뷰를 하며 개선 예정이다.

 

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        StringBuilder answer = new StringBuilder();
        Integer[] integers = Arrays.stream(numbers).boxed().toArray(Integer[]::new);
        Arrays.sort(integers, (num1, num2) -> {
            int sum1 = Integer.parseInt(num1 + num2.toString());
            int sum2 = Integer.parseInt(num2 + num1.toString());
            return Integer.compare(sum1, sum2);
        });
        List<Integer> integerList = Arrays.asList(integers);
        Collections.reverse(integerList);

        HashSet<Integer> set = new HashSet<>(integerList);
        if (set.size() == 1 && set.toArray(new Integer[0])[0]==0) {
            return "0";
        }

        for (Integer number : integers) {
            answer.append(number);
        }

        return answer.toString();
    }
}
728x90

'코딩테스트 풀이 > 프로그래머스' 카테고리의 다른 글

해시 - 위장  (0) 2022.05.03
정렬 - H-index  (0) 2022.05.01
Hash - 전화번호 목록  (0) 2022.04.24
Hash - 베스트 앨범  (0) 2022.04.24
Hash - 완주하지 못한 선수  (0) 2022.04.23