알고리즘/[ Baekjoon ]

[ BOJ ][JAVA][6159] 코스튬 파티

kim.svadoz 2021. 11. 1. 17:36
반응형

https://www.acmicpc.net/problem/6159

 

6159번: 코스튬 파티

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

www.acmicpc.net

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 477 277 225 62.849%

문제

한 농부가 할로윈 파티에 그의 소들을 데려가려고한다. 아쉽게도 농부에게는 코스튬이 한벌밖에 없다. 그 코스튬에는 정확하게 사이즈는 S(1 <= S <= 1,000,000)이며, 최대 소 두마리가 들어간다. 농부는 N(2 <= N <= 20,000)마리의 소가 있으며(소의 이름은 편의상 소1.. 소N으로한다), 소i의 사이즈는 (1 <= L_i <= 1,000,000)이다. 만약 소 두마리의 크기 합이 코스튬의 크기 이하인 경우 둘이 코스튬에 들어갈 수 있다. 농부가 코스튬에 얼마나 많은 서로 다른 소의 짝이 들어가는지 구할수있도록 도와주자.

입력

첫째 줄에는 정수 N(소의 수)과 S(코스튬의 크기)가 주어진다.

둘째 줄부터는 각 줄에 소들의 크기가 주어진다.

출력

첫째 줄에 얼마나 많은 짝이 가능한지 출력한다.

예제 입력 1

4 6
3
5
2
1

예제 출력 1

4

코드

/**
 * BOJ 6159 코스튬 파티 : Silver 4
 * 투포인터?
 */
import java.io.*;
import java.util.*;

public class p6159 {
    static int n, s;
    static int[] arr;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        s = Integer.parseInt(st.nextToken());

        arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(arr);

        // 1 2 3 5
        int answer = 0;
        for (int i = 0; i < n - 1; i++) {
            int sum = arr[i];
            for (int j = i + 1; j < n; j++) {
                if (sum + arr[j] <= s) {
                    answer++;
                } else {
                    break;
                }
            }
        }
        System.out.println(answer);
    }   
}
반응형