suheang

[백준] | JAVA, 자바 | 28353번 - 고양이 카페 본문

알고리즘

[백준] | JAVA, 자바 | 28353번 - 고양이 카페

suheang 2024. 5. 14. 21:59

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

 


문제 요약 : 고양이 카페에는 𝑁마리의 고양이가 있다. 𝑖번째 고양이의 무게는 𝑤𝑖이다. 찬우와 친구들은 모두 고양이를 사랑하기 때문에 무릎 위에 고양이를 정확히 2마리 데리고 있으면 행복해진다. 하지만 허약한 찬우와 친구들은 데리고 있는 두 고양이의 무게의 합이 𝐾를 넘는다면 버티지 못할 것이다.

각 고양이의 무게와 한 명이 버틸 수 있는 최대 무게 𝐾가 주어질 때 최대 몇 명이 행복해질 수 있는지 구해보자.


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;

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

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            cats[i] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(cats);

        int start = 0;
        int end = n - 1;
        int count = 0;

        while (start < end) {
            int result = cats[start] + cats[end];
            if (result > k) {
                end--;
            } else if (result <= k) {
                count++;
                start++;
                end--;
            }
        }
        System.out.println(count);
    }
}

 

1. 고양이 n 마리 입력받기, 최대 무게 k 입력받기

2. 고양이 무게 n 만큼 입력받기

3. 입력받은 고양이 무게 정렬

4. 변수 start, end, count 생성

5. start가 end 보다 작다면 while 문 실행

6. 변수 result 생성하고 cats[start] + cats[end] 값 저장

7. result 값이 k 보다 크다면 end--, result 값이 k 보다 작거나 같다면 count++, start++, end--

8. 저장된 count 값 출력