티스토리 뷰
"생각보다 간단했다." 고 말할 뻔했다. 인용 횟수를 저장할 h와 해당 h값보다 큰 인용 횟수를 가진 정수의 개수를 가지는 n을 선언해준 뒤, citations 배열을 오름차순 정렬해주고, h 값에 해당하는 iterator를 ciataions의 길이에 빼주면 h보다 큰 수의 개수를 구할 수 있고, h의 최대 값은 n이 h보다 같거나 커지는 최초의 순간이므로, 그렇게 코드를 작성해주면 끝날 줄 알았다.
package com.choonham;
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
int answer = 0;
int h = 0;
int n = 0;
Arrays.sort(citations);
for(int i = 0; i < citations.length; i++) {
h = citations[i];
n = citations.length - i;
if(h >= n) break;
}
answer = n;
return answer;
}
}
음.... 문제를 보자마자 짠 코드이고, 성공한다면 역대급 빠른 시간으로 LV2 문제를 푼 건데....
인생은 그렇게 만만하지가 않은 거 같다.... 위 코드가 실패할 단 한 가지의 반례를 이제 찾으면 되는데... 원래 2개 있는 거보다 1개 있는 게 더 찾기 힘든 법... 반례를 생각해보자...
어제도 마찬가지로, 마지막 케이스가 틀리는 경우의 대부분은 배열 전체가 0으로 들어오는 경우이다.
즉, 테스트 케이스에 {0,0,0}을 추가해보면,
Got you!! 0이 나오지 않고, 1이 나온다. 뭐.... 지금 생각해보니 당연하다. 0,0,0이 들어갔을 때, 오름차순 정렬은 의미가 없으니...
그럼 배열이 모두 0인 경우만 예외 처리해주면 될까?
package com.choonham;
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
int answer = 0;
int h = 0;
int n = 0;
Arrays.sort(citations);
for (int i = 0; i < citations.length; i++) {
h = citations[i];
n = citations.length - i;
if (h >= n)
break;
}
if(citations[citations.length-1] == 0) n = 0;
answer = n;
return answer;
}
}
ㄱㄴ??
ㅇㅇ 아주 잘 된다.
내 실력이 올라간 건지 뭔지 잘 모르겠는데, 정렬 문제가 점수가 아주 달달하다..ㅎㅎ
주말 포스팅 끝!
반응형
'[JAVA] > Programmers' 카테고리의 다른 글
[JAVA] Programmers <완전 탐색 LV2> 소수 찾기 (0) | 2021.04.05 |
---|---|
[JAVA] Programmers <완전 탐색 LV1> 모의고사 (0) | 2021.04.04 |
[JAVA] Programmers <Sort LV2> 가장 큰 수 (0) | 2021.04.02 |
[JAVA] Programmers <Sort LV1> K번째 수 (0) | 2021.04.01 |
[JAVA] Programmers <Heap LV3> 이중 우선순위 큐 (0) | 2021.04.01 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- 인천 구월동 이탈리안 맛집
- await
- 이탈리안 레스토랑
- redux
- javascript
- 파니노구스토
- Async
- 정보보안기사 #실기 #정리
- react-native
- redux-thunk
- 인천 구월동 맛집
- AsyncStorage
- react
- 맛집
- Promise
- Total
- Today
- Yesterday