https://school.programmers.co.kr/learn/courses/30/lessons/12933
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제
함수 solution은 정수 n을 매개변수로 입력받습니다.
n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
2. 내가 푼 답안
1) Solution
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public long solution(long n) {
// 숫자를 문자열로 변환
String data = String.valueOf(n);
// 리스트에 담기
List<Integer> temp = new ArrayList<>();
// 시간복잡도 : O(n)
for (int i = 0; i < data.length(); i++) {
temp.add(Character.getNumericValue(data.charAt(i)));
}
// 정렬 - 시간복잡도 : O(nlon(n))
Collections.sort(temp, Collections.reverseOrder());
// 합치기 - 시간복잡도 : O(n)
String result = temp.stream().map(String::valueOf).collect(Collectors.joining());
// 정수로 변환
long answer = Long.parseLong(result);
return answer;
// 총 시간복잡도 : O(nlog(n))
}
}
2) Solution
class Solution {
public long solution(long n) {
String[] list = String.valueOf(n).split("");
Arrays.sort(list, Collections.reverseOrder());
String result = String.join("", list);
long answer = Long.parseLong(result);
return answer;
}
}
4. 문법 정리
- 이번에는 새로 배우는게 많았다.
1. Join
1) 스트링 배열, 리스트 -> 스트링 문자열로
import java.util.*;
public class Example {
public static void main(String[] args) {
String[] array = {"a", "b", "c"};
String result = String.join(", ", array);
System.out.println(result); // 출력: a, b, c
List<String> list = Arrays.asList("x", "y", "z");
String resultFromList = String.join(" - ", list);
System.out.println(resultFromList); // 출력: x - y - z
}
}
2) int 배열, 리스트 -> 스트링 문자열로
import java.util.*;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
// List<Integer>를 List<String>으로 변환
List<String> stringList = list.stream()
.map(String::valueOf)
.collect(Collectors.toList());
// 문자열 리스트를 결합
String result = String.join("", stringList);
System.out.println(result); // 출력: 12345
}
}
import java.util.Arrays;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
// int[]를 Stream으로 변환하고, 각 요소를 문자열로 변환 후 결합
String result = Arrays.stream(array)
.mapToObj(String::valueOf)
.collect(Collectors.joining(""));
System.out.println(result); // 출력: 12345
}
}'👩💻 코테 공부 > 코테 공부' 카테고리의 다른 글
| [코테 - Java] 프로그래머스 - 정수 제곱근 판별 (0) | 2024.09.21 |
|---|---|
| [코테 - py] 프로그래머스 - 연속된 부분 수열의 합 (2) | 2024.09.18 |
| [코테 - Java] 프로그래머스 - 자연수 뒤집어 배열로 만들기 (0) | 2024.09.11 |
| [코테 - Java] 프로그래머스 - 자릿수 더하기 (0) | 2024.09.11 |
| [코테 - Java] 프로그래머스 - 문자열 내 p와 y의 개수 (0) | 2024.09.11 |