그냥 구간 안의 숫자 개수를 구하면 되겠다 싶었다. 그래서 n이 포함된 구간을 구하고 그 구간의 길이를 사용해서 답을 구했다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int l, n;
vector<int> v(1, 0);
scanf("%d", &l);
for(int i = 0; i < l; i++){
int tmp;
scanf("%d", &tmp);
v.push_back(tmp);
}
scanf("%d", &n);
sort(v.begin(), v.end());
int c = 0;
for(int i = 0; i < v.size() - 1; i++){
if(v[i] < n && n < v[i+1])
c = v[i+1] - v[i] - 2;
}
printf("%d", c);
return 0;
}
코드는 이렇게 짰다. 그리고 틀렸음
내 생각에는 n을 포함하는 구간의 개수를 구하라고 했으니
1 3 7 9가 lucky set이고 n = 5라면 [4, 6]도 n을 포함하는 구간이니 이런 경우도 생각해야 할 것 같다. 이건 밥 먹고 생각해봐야지
규칙 찾는 건 그리 어렵지 않았다. 순서쌍 그려보면서 얼마나 하면 되는지 찾아서 코드에 추가했다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int l, n;
vector<int> v(1, 0);
scanf("%d", &l);
for(int i = 0; i < l; i++){
int tmp;
scanf("%d", &tmp);
v.push_back(tmp);
}
scanf("%d", &n);
sort(v.begin(), v.end());
int c = 0;
for(int i = 0; i < v.size() - 1; i++){
if(v[i] < n && n < v[i+1]){
int a = n-v[i]-1;
int b = v[i+1]-n-1;
c = (a+1)*b+a;
}
}
printf("%d", c);
return 0;
}
이렇게 하니 맞았음~~ 어렵지 않은 문제였다.
'백준' 카테고리의 다른 글
1252 이진수 덧셈 (0) | 2019.11.23 |
---|---|
1790 수 이어 쓰기2 (미완) (0) | 2019.11.20 |
7795 먹을 것인가 먹힐 것인가 (0) | 2019.11.17 |
6236 용돈관리 (미완) (0) | 2019.11.10 |
2792 보석상자 (0) | 2019.11.10 |