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";
}
}
[결과 화면]