https://www.acmicpc.net/problem/9417
n개의 자연수를 입력받고, 두 수의 쌍중에서, 가장 큰 최대공약수를 출력하는 문제.
문자열로 받은 후에, 공백을 기준으로 문자열을 분리한 후에, 브루트포스로 가장 큰 최대공약수를 찾는다.
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
int gcd (int a, int b) {
return !b ? a : gcd(b, a % b);
}
int main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t;
int maxGcd = -1;
int temp;
string line;
string num;
vector<int> v;
cin >> t;
cin.ignore();
while (t--) {
v.clear();
maxGcd = -1;
getline(cin, line);
stringstream sstream(line);
while (getline(sstream, num, ' ')) // 문자열 분리
v.push_back(stoi(num));
for (int i = 0; i < v.size() - 1; ++i) { // 완전탐색
for (int j = i + 1; j < v.size(); ++j) {
temp = gcd(v[i], v[j]);
maxGcd = maxGcd < temp ? temp : maxGcd;
}
}
cout << maxGcd << '\n';
}
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 10815번 C++ 풀이 (0) | 2022.01.05 |
---|---|
백준 3613번 C++ 풀이 (3) | 2022.01.04 |
백준 8595번 C++ 풀이 (0) | 2022.01.04 |
백준 9093번 C++ 풀이 (0) | 2022.01.02 |
백준 12065번 C++ 풀이 (0) | 2022.01.02 |