Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 은행원 알고리즘
- Reentrant
- 모니터(Monitor)
- 커널 모드의 동기화
- 교착 상태
- The Banker's Algorithm
- Heap영역
- 동기 비동기
- Activity
- 스레드
- The DIning Philosopher Problem
- Non-Preemptive
- 프로세스 제어 블록
- Light Weight Process
- 커널 모드
- 프로세스 상태 전이도
- 방금 그 곡
- 경량 프로세스
- Stack영역
- 유저 모드의 동기화
- 프로세스
- Process Control Block
- Multi-level Queue
- 스레드 동기화
- 블로킹 논블로킹
- 임계 구역
- 문맥 교환
- 유저 모드
- 인터락 함수
- 뮤텍스(Mutex)
Archives
Blog For Me
백준 10816 숫자 카드 2 본문
문제 링크: https://www.acmicpc.net/problem/10816
입력
첫째 줄: 상근이가 가지고 있는 숫자 카드의 개수 N
둘째 줄: 각 숫자 카드에 적혀있는 정수(-10,000,000보다 크거나 같고 10,000,000보다 작거나 같음)
셋째 줄: 숫자 M (1 <= M <= 500,000)
넷째 줄: 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수 (-10,000,000보다 크거나 같고 10,000,000보다 작거나 같음)
출력
입력으로 주어진 M개의 수에 대하여, 각 수가 적힌 숫자 카드를 상근이가 몇 개 가지고 있는지 공백으로 구분해 출력
해결 방법
문제 입력과 출력 예제
- 위에 나와있는 조건대로 모두 입력을 받는다.
- 이분탐색을 위해 각 숫자 카드에 적힌 정수들을 정렬한다.
위의 예제에서 '6 3 2 10 10 10 -10 -10 7 3'으로 카드 숫자들을 입력하면 이를 '-10 -10 2 3 3 6 7 10 10 10'으로 정렬한다. - 정렬된 배열에서 upper_bound와 lower_bound 함수를 이용하여 문제를 해결한다.
upper_bound(arr, arr+n, value)
upper_bound 함수는 배열에서 처음으로 특정 value 값을 초과하는 원소의 주소를 반환하고, 그러한 원소가 없으면 end값을 반환하는 함수
lower_bound(arr, arr+n, value)
lower_bound 함수는 배열에서 범위 내의 원소들 중 value 값보다 크거나 같은 첫 번째 원소의 주소를 반환하는 함수. 없으면 end값 반환
아래 예제를 살펴보면 다음과 같다.
- 위의 예제에서 숫자 -10의 개수를 알고 싶다면 upper_bound(-10) - lower_bound(-10)을 하면 -10의 개수를 구할 수 있다.
전체 소스코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int n,m, num;
cin>>n;
vector<int> card(n);
for(int i=0;i<card.size();i++) {
cin>>card[i];
}
sort(card.begin(), card.end());
cin>>m;
for(int i=0;i<m;i++) {
cin>>num;
auto start = lower_bound(card.begin(), card.end(), num);
auto end = upper_bound(card.begin(), card.end(), num);
cout<<end-start<<" ";
}
return 0;
}
'알고리즘 문제 > 백준' 카테고리의 다른 글
백준 1654번 랜선 자르기 (0) | 2021.11.19 |
---|---|
백준 1920번 수 찾기 (0) | 2021.11.04 |
Comments