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 |
Tags
- 디베이스앤 인턴 후기
- ansi sql 장점
- 프로그래머스
- JPA
- 백트래킹
- IT 면접 준비
- 그리디
- 이중우선순위큐 java
- Java
- Gradle
- DBASE&
- 이중우선순위큐 자바
- 백준
- oracle ansi sql
- ansi sql 단점
- CJ DBASE&
- BFS
- 이분탐색
- 프로그래머스 이중우선순위큐 java
- DFS
- 면접 필수 질문
- 디베이스앤
- 프로그래머스 이중우선순위큐 자바
- oracle ansi
- DP
- 개발자 면접 준비
- 위상정렬
- Spring Boot
- SQL
- 프로그래머스 이중우선순위큐
Archives
- Today
- Total
쉬운 프로그래밍
[알고리즘] 프로그래머스 - 가장 큰 수 - JAVA 본문
https://programmers.co.kr/learn/courses/30/lessons/42746
문제 설명
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" |
풀이과정
처음에는 단순하게 백트래킹을 통해 numbers 조합으로 가능한 모든 숫자를 구하여 저장한 다음, 이를 정렬하는 방식으로 문제를 해결하려고 하였다.
이렇게 하면 당연히 시간 터진다... 반성해야겠다...
아래와 같이 문제를 해결할 수 있었다.
1. numbers를 String 배열로 캐스팅한다. (String.valueOf())
2. o1 + o2와 o2 + o1을 비교하여 String 배열을 내림차순으로 정렬한다.
3. 만든 숫자가 000....과 같은 경우를 고려한다.
소스코드
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] arr = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
arr[i] = String.valueOf(numbers[i]);
}
Arrays.sort(arr, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
StringBuilder sb = new StringBuilder();
for (String s : arr) {
sb.append(s);
}
answer = sb.toString();
if (answer.charAt(0) == '0') return "0";
return answer;
}
}
'알고리즘 > 구현' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 이중우선순위큐 - JAVA (1) | 2021.10.19 |
---|---|
[알고리즘] 프로그래머스 - K번째수 - JAVA (2) | 2021.09.27 |
[알고리즘] 프로그래머스 - 디스크 컨트롤러 - JAVA (0) | 2021.09.26 |
[알고리즘] 프로그래머스 - 더 맵게 - JAVA (2) | 2021.09.22 |
[알고리즘] 프로그래머스 - 위장 - JAVA (0) | 2021.08.24 |
Comments