-
백준 : 3273번 : 두 수의 합 (C 언어)c c++ 언어 공부 2023. 4. 4. 23:40
https://www.acmicpc.net/problem/3273
3273번: 두 수의 합
n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는
www.acmicpc.net
Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include <stdio.h>#include <stdlib.h>int n,x;int arr[100001] = { 0, };int compare(const void* a, const void* b){if (*(int*)a > *(int*)b)return 1;else if (*(int*)a > *(int*)b)return -1;else return 0;}int binary(int num){int start = 0;int end = n - 1;while (start <= end){int mid = (start + end) / 2;if (num + arr[mid] == x){return arr[mid];}else if (num + arr[mid] < x){start = mid + 1;}else{end = mid - 1;}}return 0;}int main(){scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d", &arr[i]);}int count = 0;scanf("%d", &x);qsort(arr, n, sizeof(int), compare);for (int i = 0; i < n; i++){int temp = 0;temp= binary(arr[i]);if (arr[i]<temp){count++;}}printf("%d", count);}cs 문제풀이:
배열에 값을 받은 뒤 qsort로 정렬 후 이분탐색을 이용해서 원하는 수를 만들 수 있는 지 판단하였다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 24416번 : 알고리즘 수업 - 피보나치 수 1 (C 언어) (0) 2023.04.07 백준 17103번 : 골드바흐 파티션 (C 언어) (0) 2023.04.06 백준 19532번 : 수학은 비대면강의입니다 (C 언어) (0) 2023.04.03 백준 7785번 : 회사에 있는 사람 (C 언어) (0) 2023.04.03 백준 5073번 : 삼각형과 세 변 (C 언어) (0) 2023.04.02