반응형
1) 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42747
2) 내가 구현한 코드
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int solution(int[] citations) {
// 배열 정렬 (내림차순)
Arrays.sort(citations);
int[] reversed = IntStream.range(0, citations.length)
.map(i -> citations[citations.length - 1 - i])
.toArray();
// H-Index 계산
// => 정렬된 배열을 순회하며, 현재 값 ≥ 현재 인덱스 + 1 조건을 확인
// => 이 조건을 만족하는 최대의 h를 찾음
// => h보다 큰 수의 개수는 배열 내에서 현재 인덱스 이후의 원소 개수와 동일하므로
// => 인덱스 + 1이 h를 나타냄
int h = 0;
for (int i = 0; i < reversed.length; i++) {
if (reversed[i] >= i + 1) {
h = i + 1;
} else {
break;
}
}
return h;
}
}
정렬
Arrays.sort(citations);
int[] reversed = IntStream.range(0, citations.length)
.map(i -> citations[citations.length - 1 - i])
.toArray();
1) Arrays.sort(citations)
설명: citations 배열을 오름차순으로 정렬
- 특징
- 기본적으로 작은 값부터 큰 값으로 정렬
- 내부적으로 Dual-Pivot Quicksort 알고리즘(기본적인 경우)을 사용
int[] citations = {3, 0, 6, 1, 5};
Arrays.sort(citations); // {0, 1, 3, 5, 6}
2) IntStream.range(0, citations.length)
설명: [0, 1, 2, ..., citations.length - 1]의 정수를 생성함
- 특징
- IntStream은 Java 8의 스트림 기능으로, 원시 타입 int를 처리하는 스트림
- range(start, end)는 start부터 end-1까지의 정수 시퀀스를 생성
IntStream.range(0, 5).toArray(); // {0, 1, 2, 3, 4}
3) map(i -> citations[citations.length - 1 - i])
설명: 배열의 인덱스를 역순으로 매핑
- 작동 방식
- i는 IntStream이 생성한 인덱스 값(0, 1, 2, ...)
- 배열의 끝부터 시작하도록 인덱스를 변환
citations.length - 1 - i는 배열의 마지막 요소부터 첫 번째 요소로 접근하게 만듬
int[] citations = {0, 1, 3, 5, 6};
IntStream.range(0, citations.length)
.map(i -> citations[citations.length - 1 - i])
.toArray(); // {6, 5, 3, 1, 0}
4) toArray()
설명: 스트림을 배열로 변환
특징: 모든 변환 작업(map)이 끝난 뒤, 결과를 배열 형태로 저장
3) 추가 문제
미들러 - 가장 큰 바이토닉 부분 수열
https://www.acmicpc.net/problem/11054
챌린저 - 표현 가능한 이진트리
https://school.programmers.co.kr/learn/courses/30/lessons/150367
반응형
'coding_test' 카테고리의 다른 글
[99클럽 4기 코테 스터디 TIL 34일차] 햄버거 만들기 (feat. StringBuilder로 추가하면서 숫자 체크) (0) | 2024.12.01 |
---|---|
[99클럽 4기 코테 스터디 TIL 33일차] 탕수육 (feat. String의 길이가 짝수/홀수) (1) | 2024.11.29 |
[99클럽 4기 코테 스터디 TIL 31일차] 숫자놀이 (feat. HashMap, ArrayList) (0) | 2024.11.27 |
[99클럽 4기 코테 스터디 TIL 30일차] 세준세비 (feat. 최소힙) (1) | 2024.11.26 |
[99클럽 4기 코테 스터디 TIL 29일차] 2231. Largest Number After Digit Swaps by Parity (1) | 2024.11.26 |