[프로그래머스/알고리즘 고득점 Kit/JAVA] 정렬
2024. 9. 18. 01:16ㆍ코딩 테스트(Coding Test)/프로그래머스
K번째수
나의 답)
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] ans = new int[commands.length];
for (int i = 0; i < commands.length; i++) {
int start = commands[i][0] - 1;
int end = commands[i][1];
int k = commands[i][2] - 1;
int[] temp = Arrays.copyOfRange(array, start, end);
Arrays.sort(temp);
ans[i] += temp[k];
}
return ans;
}
}
// commands[i]번 반복
// 배열 i ~ j 자르기
// 정렬하기
// k번째 수 출력
* Arrays.copyOfRange( 원본 배열, 복사하려는 시작 요소의 인덱스, 복사하려는 마지막 요소의 인덱스의 바로 다음 인덱스)
: 특정 배열의 원하는 범위만큼 복사하여 새로운 배열을 만드는 메소드
가장 큰 수
나의 답)
import java.util.*;
class Solution {
public String solution(int[] numbers) {
// int 배열을 String 배열로 변환
String[] strNums = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
strNums[i] = String.valueOf(numbers[i]);
}
// 두 숫자를 이어 붙였을 때 더 큰 순서대로 정렬
Arrays.sort(strNums, (a, b) -> (b + a).compareTo(a + b));
// 정렬된 값이 모두 "0"일 경우 "0" 반환
if (strNums[0].equals("0")) return "0";
// 정렬된 숫자를 순서대로 이어 붙여 가장 큰 수 생성
StringBuilder sb = new StringBuilder();
for (String n : strNums) {
sb.append(n);
}
return sb.toString();
}
}
문자열 비교를 통한 정렬
Arrays.sort(strNums, (a, b) -> (b + a).compareTo(a + b));
- 각 문자열 a, b를 이어 붙였을 때 어떤 조합(b + a vs a + b)이 더 큰지를 비교하여 내림차순으로 정렬한다.
- 예를 들어, a = "3", b = "30"일 경우:
- b + a = "303"
- a + b = "330"
- 330이 더 크기 때문에 a가 앞에 와야 한다.
- 두 숫자를 이어 붙였을 때 더 큰 순서를 먼저 나오도록 정렬하여, 최종적으로 배열을 이어 붙였을 때 가장 큰 수를 만들 수 있다.
H-Index
나의 답)
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
Arrays.sort(citations); // 인용 횟수를 정렬
int n = citations.length;
for (int i = 0; i < n; i++) {
int h = n - i; // 현재 h는 남은 논문 수
if (citations[i] >= h) {
return h; // 조건을 만족하는 최댓값을 찾으면 반환
}
}
return 0; // H=Index를 찾지 못한 경우 0 반환
}
}
'코딩 테스트(Coding Test) > 프로그래머스' 카테고리의 다른 글
[프로그래머스/SQL 고득점 Kit] IS NULL (1) | 2024.09.17 |
---|---|
[프로그래머스/SQL 고득점 Kit] SUM, MAX, MIN (0) | 2024.09.17 |
[프로그래머스/SQL 고득점 Kit] SELECT (1) | 2024.09.17 |
[java] 프로그래머스 문자열 반복해서 출력하기 / .repeat() (0) | 2024.04.10 |
[프로그래머스/js] 직각삼각형 출력하기 (0) | 2023.04.03 |