※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 14911번 문제인 궁합 쌍 찾기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/14911
14911번: 궁합 쌍 찾기
첫째 줄에 빈 칸으로 구분된 정수가 2개 이상, 10개 이하 주어진다. 둘째 줄에는 정수가 하나 주어진다. 주어지는 정수는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
cin은 다음 수를 읽는 데에 성공하면 1, 실패하면 0을 리턴한다는 점을 이용해 while문과 cin을 이용해 입력으로 들어오는 모든 정수를 읽어들이자. 그리고 마지막 수를 제외한 다른 수를 배열의 원소, 마지막 수를 합해야하는 수로 생각해 문제를 해결하자.
궁합 쌍은 반복문을 이용하여 간단히 찾아낼 수 있다.
set을 이용하면 조건에 맞는 쌍들을 중복 없이 편하게 보관할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int N;
vector<int> vec;
set<pair<int, int>> st;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int tmp;
while (cin >> tmp) {
vec.emplace_back(tmp);
}
N = vec.size() - 1;
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
if (vec[i] + vec[j] == vec[N]) {
if (vec[i] < vec[j]) st.insert(make_pair(vec[i], vec[j]));
else st.insert(make_pair(vec[j], vec[i]));
}
}
}
for (auto& p : st) {
cout << p.first << ' ' << p.second << '\n';
}
cout << st.size();
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25045 // C++] 비즈마켓 (0) | 2022.10.03 |
---|---|
[BOJ 25044 // C++] 에어컨 (0) | 2022.10.02 |
[BOJ 6040 // C++] Hexadecimal Conversion (0) | 2022.09.30 |
[BOJ 14915 // C++] 진수 변환기 (0) | 2022.09.29 |
[BOJ 1233 // C++] 주사위 (0) | 2022.09.28 |