Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- spring security
- JVM
- re.split
- JPA
- 백준 파이썬
- Coroutine
- 백준 17626
- 파이썬
- 프로그래머스
- java 기술면접
- 프로래머스
- 백준 16235
- spring oauth
- 백준 16719
- 백준 19238
- Spring Boot
- sql 기술면접
- MSA
- 백준 17779
- 백준
- java
- Spring
- 웹어플리케이션 서버
- MySQL
- 백준 15685
- Kotlin
- spring cloud
- springboot
- 백준 16236
- with recursive
Archives
- Today
- Total
시작이 반
[프로그래머스] 가장 큰 수 (Java 자바) 본문
SMALL
https://programmers.co.kr/learn/courses/30/lessons/42746?language=java#
문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
numbers | return |
[6, 10, 2] | "6210" |
[3, 30, 34, 5, 9] | "9534330" |
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] sa = new String[numbers.length];
for (int i = 0; i < numbers.length; i++){
sa[i] = String.valueOf(numbers[i]);
}
Arrays.sort(sa, (o1, o2) -> {
if(o1.charAt(0)>o2.charAt(0)) return -1;
else if(o1.charAt(0)<o2.charAt(0)) return 1;
else{
return (o2 + o1).compareTo(o1 + o2);
}
});
for(int i =0; i< sa.length; i++) {
if(answer.equals("")){
if(sa[i].equals("0")) continue;
}
answer += sa[i];
}
if(answer.equals("")) answer = "0";
return answer;
}
}
핵심 코드, 푸는법:
Arrays.sort
int타입인 numbers배열을 String타입으로 바꾼다.
정렬 - compator 사용
숫자로 이루어진 문자열 2개를 합쳐서 큰 경우를 알고싶을때
-> 맨 앞자리로 정렬 후 앞자리가 같으면 (o1 + o2).compareTo(o2 + o1) 이용
ex) 앞자리가 같을경우 "2325", "243" 두 문자열 합친 경우 비교
2325243, 2432425 비교
레벨2인데 어렵다......
LIST
'알고리즘 > Programmers' 카테고리의 다른 글
[프로그래머스] 조이스틱 (Java 자바) (0) | 2021.08.24 |
---|---|
[프로그래머스] 소수찾기 (Java 자바) (0) | 2021.08.24 |
[프로그래머스] 프린터 (Java 자바) (0) | 2021.08.24 |
[프로그래머스] 전화번호 목록 (Java 자바) (0) | 2021.08.23 |
[프로그래머스] 튜플 (Java 자바) (0) | 2021.08.23 |