// ================================
// 1번 문제
// 거리 차이가 K 이하인 쌍 개수 구하기
// ================================
/*
[문제]
수직선 위에 집들의 좌표가 주어진다.
거리 차이가 K 이하인 학생 쌍의 개수를 구하여라.
[입력]
5 3
1 4 6 8 12
[출력]
4
*/
// ================================
// 2번 문제
// 정렬 후 투포인터
// ================================
/*
[문제]
학생들의 집 좌표가 정렬되지 않은 상태로 주어진다.
거리 차이가 K 이하인 학생 쌍의 개수를 구하여라.
[입력]
6 4
10 1 7 3 15 8
[출력]
5
*/
// ================================
// 3번 문제
// 각 학생의 친구 수 구하기
// ================================
/*
[문제]
학생 N명의 집 좌표가 주어진다.
각 학생마다 거리 차이가 K 이하인 친구가 몇 명인지 출력하여라.
자기 자신은 제외한다.
[입력]
5 3
1 4 6 8 12
[출력]
1 2 2 1 0
*/
// ================================
// 4번 문제
// KOI 축소판
// ================================
/*
[문제]
학생들의 집 좌표와 학교 번호가 주어진다.
- 같은 학교면 거리 <= K1
- 다른 학교면 거리 <= K2
일 때 각 학생의 친구 수를 구하여라.
[입력]
5 5 2
1 1
3 2
6 1
8 2
10 1
[출력]
2 1 2 1 2
*/
// ================================
// 구조체 예시
// ================================
/*
struct Student {
int x; // 집 좌표
int school; // 학교 번호
int idx; // 원래 번호
};
*/
// ================================
// 투포인터 핵심 코드 예시
// ================================
/*
while (x[right] - x[left] > K) {
left++;
}
*/
// ================================
// 핵심 개념 정리
// ================================
/*
1. 거리 문제는 정렬을 생각하기
2. 정렬하면 abs 제거 가능
abs(x[i] - x[j])
↓
x[right] - x[left]
3. 거리 제한 문제는 투포인터 자주 사용
4. 관련 데이터는 struct로 묶기
*/
To embed this project on your website, copy the following code and paste it into your website's HTML: