본문 바로가기

문제 풀이/Baekjoon

[백준] S5 6159번 코스튬 파티 (JAVA)

문제 출처 - Baekjoon Online Judge

문제는 여기

 

6159번: 코스튬 파티

한 농부가 할로윈 파티에 그의 소들을 데려가려고한다. 아쉽게도 농부에게는 코스튬이 한벌밖에 없다. 그 코스튬에는 정확하게 사이즈는 S(1 <= S <= 1,000,000)이며, 최대 소 두마리가 들어간다. 농

www.acmicpc.net

[문제] 

한 농부가 할로윈 파티에 그의 소들을 데려가려고한다. 아쉽게도 농부에게는 코스튬이 한벌밖에 없다. 그 코스튬에는 정확하게 사이즈는 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);
	}
}