YJ/C++
[백준/BOJ/C++] 5217번 쌍의 합
Team DAON
2021. 10. 8. 15:03
[문제]
1보다 크거나 같고 12보다 작거나 같은 자연수 n이 주어졌을 때, 합이 n이 되는 두 자연수의 쌍을 찾는 프로그램을 작성하시오.
예를 들어, 5가 주어진 경우 가능한 쌍은 1,4와 2,3이 있다. 두 수는 항상 달라야 한다. 즉, 3,3은 올바른 쌍이 아니다. 또, 첫 번째 수가 두 번째 수보다 작아야 한다.
출력하는 쌍은 항상 사전순으로 출력해야 한다. 즉, 각 쌍의 작은 수로 비교를 해야 한다. 예를 들어 1,5는 2,4보다 사전순으로 앞선다.
[입력]
첫째 줄에 테스트 케이스의 수 (< 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.
[출력]
각 테스트 케이스마다 n을 만드는 쌍을 사전순으로 출력한다. n을 만드는 쌍이 없는 경우에는 아무것도 출력하지 않는다.
예제 출력 형식을 참고해 출력한다.
[Source Code]
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
void answer(int n){
int middle = n/2;
if(n % 2 == 0)
middle--;
cout << "Pairs for " << n << ": ";
if(n > 2){
if(middle == 1){
cout << 1 << " " << n - 1;
}
else{
for(int i = 1; i <= middle; i++){
cout << i << " " << n - i;
if(i < middle)
cout << ", ";
}
}
}
}
int main() {
int n;
cin >> n;
vector<int> vector;
for(int i = 0; i < n; i++){
int input;
cin >> input;
vector.push_back(input);
}
for(int i = 0; i < n; i++){
answer(vector[i]);
cout << "\n";
}
}
[결과 화면]