본문 바로가기
문제풀이/프로그래머스

[JAVA] 프로그래머스 - 가장 큰 수

by 그적 2023. 5. 9.

목차

  • 문제
  • 내가 푼 방법
  • 자바 코드
  • 결과 및 회고

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/42746#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


2. 내가 푼 방법

입력 값인 numbers를 리스트에 문자열 형태로 다시 담아서 정렬했다.

 

그 후에 Collections.sort를 사용했고, new Comparator를 사용해서 compare 함수를 오버라이딩했다.

두 문자열을 합친 sb1과 sb2를 비교할 때, 더 큰 값이 리턴되도록 해서 깔끔하게 작성한 것 같다.


3. 자바 코드

깃허브 풀이 주소

https://github.com/geujeog/Programmers/blob/main/Solution_%EA%B0%80%EC%9E%A5%ED%81%B0%EC%88%98.java

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        List<String> list = new ArrayList<>();
        for (int num : numbers) {
            list.add(String.valueOf(num));
        }
        
        Collections.sort(list, new Comparator<String>(){
            @Override
            public int compare(String s1, String s2) {
                StringBuilder sb1 = new StringBuilder();
                StringBuilder sb2 = new StringBuilder();
                
                sb1.append(s1).append(s2);
                sb2.append(s2).append(s1);
                
                return sb2.toString().compareTo(sb1.toString());
            }
        });
        
        if (list.get(0).equals("0")) return "0";
        
        StringBuilder sb = new StringBuilder();
        for (String num : list) {
            sb.append(num);
        }
        
        return sb.toString();
    }
}

4. 결과 및 회고

여러 문제를 풀어오면서 정렬할 때 new Comparator를 사용하는 방식은 확실하게 익혀진 것 같다. 

 

댓글