의외로 고민했는데
원인이 되게 의미없는거엿다
테스트케이스가 하나밖에 없어서 좀 고민한 문제이다.
https://www.acmicpc.net/problem/1059
일단 첫번째 코너케이스
1
3
1
과 같은 경우에는 0을 가상의 left값으로 잡고 문제를 해결하면 된다.
두번째
1
998
999
과 같은 경우에는 1001을 가상의 right값으로 잡고 문제를 해결하면 된다
세번째
4
1 3 5 7
3
N이 Lucky Set 안에 있는 경우 답은 항상 0이다.
이 세가지 경우에 대한 코너케이스를 잘 처리해주면 AC가 나온다.
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int arr[100] = {0};
int main(){
int n,k;
int l=0,r=1001; // 첫번째와 두번째
int sum=0;
scanf("%d", &n);
for(int i=0; i<n; i++)scanf("%d", &arr[i]);
arr[n] = 0;
arr[n+1] = 1001;
scanf("%d", &k);
sort(arr, arr+n+2);
for(int i=0; i<=n+1; i++) if(arr[i]==k){ printf("0"); return 0; } // 세번째
for(int i=0; i<=n; i++){
if(arr[i]<k&&k<arr[i+1]){
l = arr[i];
r = arr[i+1];
}
}
printf("%d", (k-l)*(r-k)-1);
return 0;
}
반응형