728x90
가장 큰 수
- 정렬의 기초를 연습하기에 좋은 문제
class Solution {
public String solution(int[] numbers) {
String[] strs = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
strs[i] = String.valueOf(numbers[i]);
}
Arrays.sort(strs, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
String answer = "";
for (String s :
strs) {
answer += s;
}
if (answer.charAt(0) == '0') return "0";
return answer;
}
}
// 스트림 활용
public String solution(int[] numbers) {
String answer = IntStream.of(numbers)
.mapToObj(String::valueOf)
.sorted((s1, s2) -> (s2 + s1).compareTo(s1 + s2))
.collect(Collectors.joining());
if (answer.startsWith("0")) return "0";
return answer;
}
마법의 엘리베이터
- 사실 정렬 문제라고 하기에는 애매함
- 1로 가는 케이스와, 10의 보수로 만들어서 + 1 한 다음 연산하는 케이스를 잘 구분해서 재귀로 처리
class Solution {
public int solution(int storey) {
return elevate(storey);
}
public int elevate(int storey) {
if (storey <= 1) return storey;
int remain = storey % 10;
int share = storey / 10;
int c1 = remain + elevate(share);
int c2 = (10 - remain) + elevate(share + 1);
return Math.min(c1, c2);
}
}
300x250
'알고리즘' 카테고리의 다른 글
[프로그래머스] Greedy (0) | 2023.07.29 |
---|---|
[프로그래머스] 최댓값 만들기 (1) (0) | 2023.07.16 |
[프로그래머스] 구슬을 나누는 경우의 수 (0) | 2023.07.11 |
[프로그래머스] 분수의 덧셈 (0) | 2023.03.19 |
[프로그래머스] 옹알이(1) (0) | 2023.03.19 |