6월 19일(수) - 이분 탐색(1253번)
https://www.acmicpc.net/problem/1253
최초 생각 정리
문제점
풀이
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <stdlib.h>
int arr[2001];
int compare(const void* a, const void* b)
{
int num1 = *(int*)a;
int num2 = *(int*)b;
if (num1 > num2)
{
return 1;
}
else if (num1 < num2)
{
return -1;
}
else
{
return 0;
}
}
int main(void)
{
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &arr[i]);
}
qsort(arr, N, sizeof(int), compare);
int answer = 0;
for (int i = 0; i < N; i++)
{
int left = 0;
int right = N - 1;
int target = arr[i];
while (left < right)
{
int sum = (arr[left] + arr[right]);
if (sum == target)
{
if (left != i && right != i)
{
answer++;
break;
}
else if (left == i)
{
left++;
}
else
{
right--;
}
}
else if (sum < target)
{
left++;
}
else
{
right--;
}
}
}
printf("%d", answer);
return 0;
}
댓글