Koala - 11기/코딩테스트 준비 스터디
[백준/C++] 13423번 : Three Dots
Langerak
2023. 7. 16. 01:41
문제
13423번: Three Dots (acmicpc.net)
풀이방법
처음엔 vector에 넣어서 정렬 후 풀었는데 시간 초과가 나왔다.
그래서 입력된 점들을 자동으로 오름차순으로 정렬하는 Set에 넣었다.
간격이 같은 세 점을 각각 A, B, C라고 한다면 A와 B를 지정하고 B + B - A인 C가 Set에 있다면 +1.
지금보니까 왜 변수 명을 i, j로 안하고 iter_i, iter_j로 했지?? 코드가 더러워졌다
코드
#include <iostream>
#include <set>
using namespace std;
int T; // test case
int N; // Number of Dots
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> T;
for (int i = 0; i < T; i++) {
int answer = 0;
cin >> N;
set<int> dot;
int x;
for (int i = 0; i < N; i++) {
cin >> x;
dot.insert(x);
}
for (auto iter_i = dot.begin(); iter_i != dot.end(); iter_i++) {
auto temp_iter_i = iter_i;
for (auto iter_j = ++temp_iter_i; iter_j != dot.end(); iter_j++)
if (dot.count(*iter_j + *iter_j - *iter_i)) answer++;
}
cout << answer << endl;
}
return 0;
}