티스토리 뷰
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) { //qsort 을 위한 함수
return *(int*)a - *(int*)b; //오름차순 정렬
}
int main(void) {
int n,n1,n2,gap1,gap2,ans=0;
scanf("%d",&n); //입력
n1=n-1;n2=n-2;
int *a = (int *) malloc(sizeof(int)*n); //동적 할당
for(int i=0; i<n; i++) scanf("%d",&a[i]); //입력
qsort(a,n,sizeof(int),compare); //정렬
for(int i=0; i<n2; i++) { //브루트 포스
for(int j=i+1; j<n1; j++) {
gap1 = a[j]-a[i];
for(int k=j+1; k<n; k++) {
gap2 = a[k]-a[j];
if(gap1 > gap2);
else if(gap1*2 < gap2) break; //처음보다 2배 초과라면 더 이상 반복할 필요가 없다
else ++ans;
}
}
} printf("%d",ans);
free(a);
}
풀이 : 정렬, 브루트 포스
오름차순으로 정렬을 한 다음
브루트 포스로 X Y Z에서 Y와 X차이와 같거나 Y와 X차이의 2배 이하인 Z와 Y의 차이인 X Y Z의 쌍을 구했습니다.
이분탐색이나 다른 방식을 사용하거나, 정렬을 더욱 빠른 걸로 하면 소요시간을 줄일 수 있다고 생각합니다.
https://www.acmicpc.net/problem/9873
'c언어 > BAEKJOON' 카테고리의 다른 글
c언어 2820번 자동차 공장 (백준) (0) | 2024.09.04 |
---|---|
c언어 14268번 회사 문화 2, 16404번 주식회사 승범이네 (백준) (0) | 2024.09.03 |
c언어 12895번 화려한 마을 (백준) (0) | 2024.08.29 |
c언어 2934번 LRH 식물 (백준) (0) | 2024.08.17 |
c언어 1395번 스위치 (백준) (0) | 2024.08.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- union
- 최소 스패닝 트리
- 누적합
- 브루트포스
- C++
- Krustal
- 오프라인 쿼리
- 정렬
- 기하학
- PASCAL
- 누적 합
- Lazy Propagation
- C언어
- BFS
- 세그먼트 트리
- Segment Tree
- find
- 덱
- 1835
- 백준
- 그리디
- 1835번
- DFS
- java
- 최대공약수
- 스택
- 그래프
- 플로이드
- XOR
- DP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함