원본 문제 : https://programmers.co.kr/learn/courses/30/lessons/42747
풀이
1. citations[]를 Arrays의 sort메서드로 오름차순으로 정렬한다.
2. 배열의 가장 마지막(큰 수)부터 차례로
3. Math의 min메서드를 사용하여 citations[i]의 값과 순차적 값(?)을 확인
citations.length - i == citations.length - (citations.length - 1) => +1
after i-- : citations.length - (--i) == +2
결과적으로 "citations.length - i" 는 1부터 citations.length까지 1씩 증가하는 수
4. citations[i]와 citations.length - i를 비교하여 최솟값을 반환하고
5. Math의 max메서드로 max값과 min 값 중 최대값을 반환.
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
Arrays.sort(citations);
int max = 0;
for(int i = citations.length-1; i > -1; i--){
int min = Math.min(citations[i], citations.length - i);
// 11,9,7,6,0 1, 2, 3, 4, 5
// 1,2,3,4,0
max = Math.max(max, min);
//if(max < min) max = min;
// 0 < 1 : min = 1
// 1 < 2 : min = 2
// 2 < 3 : min = 3
// 3 < 4 : min = 4
// 4 < 0 : min = 4
}
return max;
}
}
'프로그래머스 > 코딩연습1' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 찾기 (java)(12905) (0) | 2019.06.05 |
---|---|
[프로그래머스] 타겟 넘버(43165)(java) (0) | 2019.06.04 |
[프로그래머스] (못품)조이스틱 (42860)(java) (0) | 2019.06.04 |
[프로그래머스] 더 맵게 (42626)(java) (0) | 2019.06.03 |
[프로그래머스] 직사각형 별찍기(java)(12969) (0) | 2019.06.03 |
댓글