본문 바로가기

백준

1059 수2

그냥 구간 안의 숫자 개수를 구하면 되겠다 싶었다. 그래서 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