[문제보기]
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[풀이과정]
입력값으로 들어오는 dia의 크기를 배열로 받아서 오름차순으로 정렬을 해준다. 그 후 이중 for문을 사용하여
기준값으로부터 한 칸씩 차이를 검사를 해서 k보다 이하가 나오면 res값을 증가해준다.
반대로 k보다 초과 값이 나오면 break를 해주는데, 오름차순으로 정렬을 해줬기 때문에 그 뒤에 있는 데이터에
대해서는 신경을 안 써줘도 되기 때문이다.
이후 max() 함수를 사용하여 최댓값을 업데이트해준다.
[소스보기]
#include <iostream>
#include <algorithm>
using namespace std;
int dia[10000];
int main(){
cin.tie(0);
cout.sync_with_stdio(false);
int T;
cin >> T;
for(int test = 1; test <= T; test++){
int n, k;
cin >> n >> k;
for(int i=0; i<n; i++){
cin >> dia[i];
}
sort(dia, dia+n);
int res, ans = 0;
for(int i=0; i<n; i++){
res = 1;
for(int j = i+1; j<n; j++){
if(dia[j] - dia[i] <= k)
res++;
else
break;
}
ans = max(ans, res);
}
cout << "#" << test << " " << ans << "\n";
}
}
[해결과정 중 실수한 부분]
'알고리즘 스터디 > SW_Expert_Academy' 카테고리의 다른 글
| [SWEA 2007][C++] 패턴 마디의 길이(D2) (0) | 2020.09.16 |
|---|---|
| [SWEA 8934][C++] 팰린드롬 공포증(D4) (0) | 2020.08.09 |
| [SWEA 8998][C++] 세운이는 내일 할거야(D4) (0) | 2020.08.08 |
| [SWEA 7088][C++] 은기의 송아지 세기(D4) (0) | 2020.08.01 |
| [SWEA 7465][C++] 창용 마을 무리의 개수(D4) (0) | 2020.07.24 |