티스토리 뷰

programmers.co.kr/learn/courses/30/lessons/42747

1. 문제

2. 풀이

import java.util.*;
class Solution {
    public int solution(int[] citations) {
        int result = 0;
        // sorting하고
        Arrays.sort(citations);
        for (int i = 0; i <= citations[citations.length-1]; i++) {
            int cnt = 0;
            for (int j = 0; j < citations.length; j++) {
                if (citations[j] >= i) {
                    cnt++;
                }
            }
            if (i <= cnt && i > result) {
                result = i;
            }
        }
        return result;
    }
}

문제가 어렵다기보다 이해가 잘 안되서 버벅였던 문제.

추가 테스트 케이스를 고려해보자면 { 10, 11, 12, 13 } => 4가 나와야함.

4편 중 4번 이상 인용된 논문이 4편 이상이므로 4가 정답.

처음에 배열을 오름차순으로 정렬 후, 이중 for문을 이용해서 i를 0 ~ 최대인용회수까지 증가시키면서 배열에 있는 인용횟수랑 차례대로 비교하여 i보다 크거나 같은 경우 cnt++를 해주고, 내부 for문이 끝나면 cnt가 i보다 크거나 같으면서 i가 result보다 큰 경우 result값에 i를 할당해주는 식으로 최대값을 구함.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함