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 |
Tags
- 백준 1049번 기타줄
- C++ 9996
- 백준 패션왕 신해빈
- 운영체제
- 백준 K보다 큰 구간
- 백준 dfs
- c++ 조합
- 월곡중학교 학원추천
- OS
- 서울사대부고 학원
- 백준 2309번 일곱 난쟁이
- 관리형 학원
- 백준 14246번
- 백준 9375번 패션왕 신해빈
- 백준 1049번
- 백준 10709
- C++ 문자열
- 백준 한국이 그리울 땐 서버에 접속하지
- 성북구 학원
- 월곡역 학원
- 고정 소수점
- DFS
- C# 병합정렬
- 월곡중 학원
- 백준 14246번 K보다 큰 구간
- 백준 토마토
- c++ split
- 상월곡동 학원
- 상월곡역 학원
- 월곡동 학원추천
Archives
- Today
- Total
키베이루's diary
[C++] 백준 10815번 숫자 카드 본문
1) 문제설명
2) 아이디어
상근이가 가지고 있는 숫자 카드를 오름차순으로 정렬하고 이분 탐색을 통해 숫자카드를 가지고 있으면 1을 출력, 가지고 있지 않으면 0을 출력한다. 기본적인 이분 탐색 알고리즘을 알고 있다면 쉽게 풀 수 있다.
printf, scanf 함수를 사용해서 시간 초과가 나지 않도록 주의한다.
3) 코드
#include<iostream>
#include<queue>
#include<deque>
#include<string.h>
#include<math.h>
#include<cmath>
#include<stack>
#include<algorithm>
using namespace std;
int arr[500001];
int brr[500001];
int search(int start, int end, int key) {
if (start == end) {
if (arr[start] == key) { // 시작과 끝이 같을때 키값과 같다면 1 출력 후 리턴
printf("1 ");
return 0;
}
else { // 재귀를 끝까지 돌았음에도 키값이 나오지 않았다면 0 출력 후 리턴
printf("0 ");
return 0;
}
}
int mid = (start + end) / 2;
if (arr[mid] >= key) { // 중간보다 키값이 작다면 앞에서 찾기
return search(start, mid, key);
}
else { // 중간보다 키값이 크다면 뒤에서 찾기
return search(mid + 1, end, key);
}
}
int main() {
int n, m;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
sort(arr, +arr + n);
scanf("%d", &m);
for (int i = 0; i < m; i++) {
scanf("%d", &brr[i]);
search(0, n, brr[i]);
}
}
'알고리즘 > 기타' 카테고리의 다른 글
[C++] 백준 11659번 구간 합 구하기 4 (0) | 2022.07.06 |
---|---|
[C++] 백준 1920번 수 찾기 (0) | 2022.07.05 |
[C++] 백준 16953번 A -> B (0) | 2022.06.21 |
[C++] 백준 1655번 가운데를 말해요 (0) | 2022.06.20 |
[C++] 백준 11286번 절댓값 힙 (0) | 2022.06.09 |
Comments