Computer Science/Algorithm Problem

백준] 4641 - Doubles(ACM-ICPC Regional)

TwinParadox 2018. 1. 4. 23:22
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

입력은 여러 개의 테스트 케이스로 주어져 있으며, 입력의 끝에는 -1이 하나 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 2~15개의 서로 다른 자연수가 주어진다. 각 자연수는 100보다 작으며, 리스트의 끝은 0으로 판별한다(0은 리스트에 속하지 않는다).




출력

각 테스트 케이스마다 한 줄에 걸쳐 정답을 출력한다.




소스코드

#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
	vector<int> arr;
	int tmp, cnt = 0, size;
	while (1)
	{
		cin >> tmp;
		if (tmp == -1)
			break;
		else if (tmp == 0)
		{
			size = arr.size();
			for (int i = 0; i < size; i++)
				for (int j = i + 1; j < size; j++)
					if (arr[i] == arr[j] * 2 || arr[j] == arr[i] * 2)
						cnt++;
			cout << cnt << '\n';
			cnt = 0;
			arr.clear();
		}
		else
			arr.push_back(tmp);
	}
}




Tip

입력 크기가 작기 때문에 정말 단순 무식하게(브루트 포스) 2배가 되는 케이스를 파악해나가면 된다.


728x90