본문 바로가기
공부/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
반응형