본문 바로가기

백준

10816 숫자 카드 2

lower_bound와 익숙해지기 2..

반환값이 iterator인 건 알겠는데 여기서 index는 어떻게 구하지...?에서 막혔다. 알고보니 iterator끼리 뺄셈 가능해서 v.begin()을 빼면 구할 수 있었다. 

 

아.. 그리구 iterator 변수 만들고 싶어서 iterator tmp 이런 식으로 선언했는데 에러가 떴다. 검색해보니 std::vector<int>::iterator tmp 이렇게 써야 하는 것 같다.. 얘는 왜 이렇게 생겼지

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    int n;
    scanf("%d", &n);
    vector <int> v(n);
    
    for(int i = 0; i < n; i++)
        scanf("%d", &v[i]);
        
    sort(v.begin(), v.end());
    
    int m;
    scanf("%d", &m);
    
    for(int i = 0; i < m; i++){
        int input;
        scanf("%d", &input);
        int tmp = upper_bound(v.begin(), v.end(), input) - lower_bound(v.begin(), v.end(), input);
        printf("%d ", tmp);
    }
    
    return 0;
}

'백준' 카테고리의 다른 글

2003 수들의 합 2  (0) 2019.11.30
16510 Predictable Queue  (0) 2019.11.25
10815 숫자 카드  (0) 2019.11.25
15885 고장난 시계  (0) 2019.11.23
1252 이진수 덧셈  (0) 2019.11.23