백준 3273 c++

magicdrill·2024년 3월 16일
0

백준 문제풀이

목록 보기
158/655

백준 3273 c++

쉬운 정렬문제이다.
벡터를 오름차순으로 정렬하고
i는 1부터, j는 n부터 계산을 시작하여, j가 감소해온다.
계산에 맞는 i, j를 찾았다면 다음 j는 i가 현재 i보다 커질 것이기 때문에 현재 j보다 클 수 없다.

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int input_graph(vector <int>& v)
{
	int i, n, temp;

	cin >> n;
	for (i = 0; i < n; i++)
	{
		cin >> temp;
		v.push_back(temp);
	}
	sort(v.begin(), v.end());
	cin >> temp;

	return temp;
}

int find_answer(int x, vector <int> &v)
{
	int i, j, size = v.size(), j_start = size-1;
	int count = 0;

	for (i = 0; i < size - 2; i++)
	{
		for (j = j_start; j > i; j--)
		{
			if (v[i] + v[j] == x)
			{
				count++;
				j_start = j;
				break;
			}
		}
	}

	return count;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	vector <int> v;
	int x;

	x = input_graph(v);
	cout << find_answer(x, v) << "\n";

	return 0;
}

0개의 댓글