문제
풀이
정렬 후 투 포인터 사용 등의 간단한 O(nlgn) 풀이들도 존재한다. (STL은 사기이다!)
필자는 O(n)풀이로, 들어오는 숫자를 인덱스로 배열을 증가시키고, 배열에 짝이 맞으면 cnt를 증가시키는 식으로 구현하였다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int cnt = 0, n, x, arr[1000010];
fill(arr, arr + 1000010, 0);
cin >> n;
while (n--) {
cin >> x;
arr[x]++;
}
cin >> x;
for (int i = 1; i < 1000001; i++) {
if (arr[i] == 1 && (x - i) >= 1 && (x - i) <= 1000000 && arr[x - i] == 1 && (x - i != i)) {
cnt++;
arr[i]--;
arr[x - i]--;
}
}
cout << cnt;
}
'Koala - 19기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[백준/Python] 18111 : 마인크래프트 (0) | 2025.07.13 |
---|---|
[백준/python] 16401 : 과자 나눠주기 (0) | 2025.07.07 |
[python/백준] 1935: 후위 표기식2 (0) | 2025.07.06 |
[백준/Python] #7662: 이중 우선순위 큐 (0) | 2025.07.06 |
[PYTHON/백준] 11279 최대힙 (0) | 2025.07.06 |