YJ/C++

[백준/BOJ/C++] 4641번 Doubles

Team DAON 2021. 12. 31. 10:24

[문제]

2~15개의 서로 다른 자연수로 이루어진 리스트가 있을 때, 이들 중 리스트 안에 자신의 정확히 2배인 수가 있는 수의 개수를 구하여라.

예를 들어, 리스트가 "1 4 3 2 9 7 18 22"라면 2가 1의 2배, 4가 2의 2배, 18이 9의 2배이므로 답은 3이다.

[입력]

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

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

[출력]

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

[Source Code]

#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;


int main() {
	while(true){
		vector<int> vector;
		int input;
		cin >> input;
		if(input == -1) break;
		vector.push_back(input);

		while(true){
			cin >> input;
			if(input == 0) break;
			vector.push_back(input);
		}

		sort(vector.begin(), vector.end());

		int count = 0, i = 0;
		while(true){
			if(vector[i] * 2 > vector[vector.size() - 1])
				break;
			
			if(find(vector.begin(), vector.end(), vector[i] * 2) != vector.end())
				count++;
			i++;
		}
		cout << count << "\n";
	}
}

[결과 화면]