본문 바로가기
카테고리 없음

[C] 백준 - 1253번: 좋다

by C0MPAS 2024. 6. 19.

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;
}

댓글