문제 출처 - Baekjoon Online Judge
문제는 여기
[문제]
한 농부가 할로윈 파티에 그의 소들을 데려가려고한다. 아쉽게도 농부에게는 코스튬이 한벌밖에 없다. 그 코스튬에는 정확하게 사이즈는 S(1 <= S <= 1,000,000)이며, 최대 소 두마리가 들어간다. 농부는 N(2 <= N <= 20,000)마리의 소가 있으며(소의 이름은 편의상 소1.. 소N으로한다), 소i의 사이즈는 (1 <= L_i <= 1,000,000)이다. 만약 소 두마리의 크기 합이 코스튬의 크기 이하인 경우 둘이 코스튬에 들어갈 수 있다. 농부가 코스튬에 얼마나 많은 서로 다른 소의 짝이 들어가는지 구할수있도록 도와주자.
[입력]
첫째 줄에는 정수 N(소의 수)과 S(코스튬의 크기)가 주어진다.
둘째 줄부터는 각 줄에 소들의 크기가 주어진다.
[출력]
첫째 줄에 얼마나 많은 짝이 가능한지 출력한다.
[풀이]
1. 값을 입력받아준다.
2. 입력받은 배열을 정렬해준다.
3. 배열을 탐색하면서 2개의 값이 s 이하라면 정답을 증가시켜준다.
4. 결과를 출력한다.
[접근]
1. 입력받은 값들을 정렬하여 탐색하면서 s보다 작은 것의 개수를 찾으면 되겠다고 생각하였다.
[코드]
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int s = Integer.parseInt(st.nextToken());
int cnt = 0;
int[] map = new int[n];
// 입력 받기
for (int i = 0; i < n; i++) {
map[i] = Integer.parseInt(br.readLine());
}
// 배열 정렬하기
Arrays.sort(map);
// 배열을 탐색하면서 합이 s보다 작은것 개수 찾기
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (map[i] + map[j] <= s)
cnt++;
}
}
System.out.println(cnt);
}
}
'문제 풀이 > Baekjoon' 카테고리의 다른 글
[백준] S3 25418번 정수 a를 k로 만들기 (JAVA) (0) | 2022.08.15 |
---|---|
[백준] S1 18243번 Small World Network (JAVA) (0) | 2022.08.13 |
[백준] S1 16174번 점프왕 쩰리 (Large) (JAVA) (0) | 2022.08.01 |
[백준] S1 14940번 쉬운 최단거리 (JAVA) (0) | 2022.07.31 |
[백준] G4 2617번 구슬 찾기 (JAVA) (0) | 2022.07.27 |