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;
}