코테/프로그래머스

[프로그래머스/Lv. 2] 가장 큰 수 (JAVA)

imname1am 2023. 10. 17. 01:15
반응형

🔺 문제

 

프로그래머스

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

programmers.co.kr

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.*;
 
class Solution {
    public String solution(int[] numbers) {
        
        // int형 배열을 String형 배열로 바꾸기
        String[] str = new String[numbers.length];
        for(int i = 0 ; i < numbers.length ; i++) {
            str[i] = Integer.toString(numbers[i]);
        }
        
        // 🔔 내림차순 정렬
        Arrays.sort(str, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return (b+a).compareTo(a+b);    // 오름차순 정렬 : (a+b).compareTo(a+b);
            }
        });
        
        // 첫 번쨰 값이 0인 경우, 0 리턴
        if(str[0].equals("0"))  return "0";
        
        StringBuilder sb = new StringBuilder();
        for(String s : str)  {
            sb.append(s);
        }
        
        return sb.toString();
    }
}
cs
 

 

 

🧩  해결 아이디어

• 정렬

1. int형 배열을 String형 배열로 변환한다.

2. String형 배열을 내림차순으로 정렬한다. (비교하는 대상인 숫자 2개를 앞뒤로 번갈아가며 이어붙여서 비교)

Arrays.sort(str, new Comparator<String>() {
    @Override
    public int compare(String a, String b) {
    	return (b + a).compareTo(a + b);
        // 오름차순 정렬 : return (a + b).compareTo(a + b);
    }
});

 

3. 첫 번쨰 값이 0인 경우는 [0,0,0,... , 0]인 경우밖에 없으므로, 0을 리턴한다.

그게 아니라면, 결과로 출력한다.

(참고)

 


🔺 다른 풀이들

- 배열 정렬을 람다식으로 하셨다.

 

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

코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를

bellog.tistory.com

Arrays.sort(str, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));

 

 

- 복습용으로 아주 굿...

 

[프로그래머스 / Level2] 가장 큰 수 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진

bada744.tistory.com


💬 느낀 점

배열 정렬.... 자주 안 쓰면 진짜 주기적으로 까먹는 것 같다.

이번 문제를 풀면서 Comparable Comparator 차이도 좀 알게 되었고...

담엔 꼭 기억하자,,, Comparator - compare() !!

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

✔ 자바 배열 정렬 (Comparator vs Comparable)

 

[java] 자바 배열 / 객체 정렬 (comparable, comparator도 같이 알아보자)

배열에 값을 넣는 방법은 알겠는데 프로그래밍을 하다 보면 배열의 정렬이 때때로 필요로 합니다. 또한 타입이 객체 타입인 경우에도 원하는 기준대로 정렬을 할 수 있도록 알아보도록 하겠습

junlab.tistory.com

 

 

✔ 풀이 참고

 

[프로그래머스 Lv.2] 가장 큰 수 java

문제설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중

ivory-room.tistory.com

 

 

반응형