문제
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;
}
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준 / Python] 1051번 : 숫자 정사각형 (0) | 2023.07.16 |
---|---|
[프로그래머스/Java] 수식 최대화 lv2 (0) | 2023.07.16 |
[백준/C++] 1436번: 영화감독 숌 (0) | 2023.07.15 |
[C++] 백준 6603번: 로또 (0) | 2023.07.15 |
[백준 / Python] #14888 연산자 끼워넣기 (0) | 2023.07.14 |