티스토리 뷰
반응형
수 찾기 성공
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 | 128 MB | 173245 | 51820 | 34415 | 29.846% |
문제
N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.
출력
M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.
예제 입력 1 복사
5
4 1 5 2 3
5
1 3 7 9 5
예제 출력 1 복사
1
1
0
0
1
#include <iostream>
using namespace std;
#include <iostream>
using namespace std;
void quickSort(int arr[], int L, int R) {
int left = L, right = R;
int pivot = arr[(L + R) / 2]; // pivot 설정 (가운데)
int temp;
do
{
while (arr[left] < pivot) // left가 pivot보다 큰 값을 만나거나 pivot을 만날 때까지
left++;
while (arr[right] > pivot) // right가 pivot보다 작은 값을 만나거나 pivot을 만날 때까지
right--;
if (left <= right) // left가 right보다 왼쪽에 있다면 교환
{
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
/*left 오른쪽으로 한칸, right 왼쪽으로 한칸 이동*/
left++;
right--;
}
} while (left <= right); // left가 right 보다 오른쪽에 있을 때까지 반복
/* recursion */
if (L < right)
quickSort(arr, L, right); // 왼쪽 배열 재귀적으로 반복
if (left < R)
quickSort(arr, left, R); // 오른쪽 배열 재귀적으로 반복
}
int binary(int arr[], int low,int high,int x)
{
int mid = 0;
if (low > high)
{
printf("0\n");
return 0;
}
else
mid = (low + high) / 2;
if (x == arr[mid])
{
printf("1\n");
return 1;
}
else if (x<arr[mid])
return binary(arr, low, mid - 1, x);
else
return binary(arr, mid+1, high, x);
}
int main(void)
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int n, m,k;
int arr1[100001];
cin >> n;
for (int i = 0; i < n; i++)
cin >> arr1[i];
quickSort(arr1,0, n-1);
cin >> m;
for (int i = 0; i < m; i++)
{
cin >> k;
binary(arr1, 0, n - 1, k);
}
return 0;
}
cin.tie(NULL)이랑 ios_base::sync_with_stdio(false);
이거 안하면 시간초과난다.
이거때문에 몇번을 했다.
반응형
'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글
백준 11659 구간 합 구하기 C/C++ (0) | 2023.01.05 |
---|---|
백준 10090 counting inversions C/C++ (0) | 2022.12.16 |
백준 2740 행렬 곱셈 C/C++ (0) | 2022.11.16 |
백준 11404 폴로이드 C/C++ (0) | 2022.11.14 |
백준 11050 이항 계수 1 C/C++ (0) | 2022.11.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 윤성우
- Python
- 코딩테스트
- 인지부조화
- 인프런
- 통계학
- EBS
- 회계
- K-MOOC
- C
- 통계
- 데이터분석
- 오블완
- stl
- 파이썬
- c++
- 심리학
- 백준
- 일본어
- 일본어문법무작정따라하기
- 류근관
- jlpt
- 뇌와행동의기초
- 여인권
- 일문따
- 보세사
- 열혈프로그래밍
- C/C++
- 사회심리학
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형