본문 바로가기
공부/2024 항해99코딩클럽

99클럽 코테 스터디 7일차 TIL + 정렬/프로그래머스 [가장 큰 수]/JAVA

by 푸딩코딩 2024. 5. 26.
728x90
반응형

 

 

 

 

 

 

1. 오늘의 학습 키워드


정렬

JAVA

 

 

2. 오늘의 학습 문제 


문제


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

 

프로그래머스

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

programmers.co.kr

 

 

 

코드


import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        String answer = "";
         String[] strNumbers = new String[numbers.length];
        for (int i = 0; i < numbers.length; i++) {
            strNumbers[i] = String.valueOf(numbers[i]);
        }

        // 문자열을 비교하여 더 큰 순서로 정렬
        Arrays.sort(strNumbers, new Comparator<String>() {
            public int compare(String o1, String o2) {
                // 두 문자열을 합쳐서 비교
                String s1 = o1 + o2;
                String s2 = o2 + o1;
                // 내림차순으로 정렬
                return s2.compareTo(s1);
            }
        });

        // 정렬된 문자열을 이어붙여서 결과 생성
        StringBuilder sb = new StringBuilder();
        for (String str : strNumbers) {
            sb.append(str);
        }

        // 배열이 모두 0으로 이루어진 경우 예외 처리
        if (sb.charAt(0) == '0') {
            return "0";
        }

        return sb.toString();
    }
}

 

number에 있는 int 요소를 String.valueOf() 메서드를 통해 문자열 변환하여 문자열 배열 strNumber에 저장하였다.

Arrays.sort()메서드로 strNumber 배열을 정렬하는데, Comparator 인터페이스를 구현한 익명 클래스를 사용해 비교 기준을 정의하였다. 두 문자열을 합치고 비교하여 큰 것을 리턴한다. 

이후 문자열을 이어붙여 결과를 생성하고, 리턴한다. 

배열이 모두 0으로 이루어진 경우는 예외 처리한다. 

 

 

3. 오늘의 회고


 

  •  
  • 인터페이스를 사용해봤는데, 좀 더 연습해봐야겠다. 

 

 

 

728x90
반응형