[Java] 백준 28353 고양이 카페

Lee GaEun·2024년 12월 28일

[Java] 알고리즘

목록 보기
38/93

28353 고양이 카페 문제 링크

문제


#1

import java.awt.*;
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine());
        PriorityQueue<Integer> arr = new PriorityQueue<>();
        for(int i=0; i<N; i++) {
            arr.add(Integer.parseInt(st.nextToken()));
        }

        Deque<Integer> arrInt = new ArrayDeque<>();
        for(int i=0; i<N; i++) {
            arrInt.add(arr.poll());
        }

        int start = arrInt.pollFirst();
        int end = arrInt.pollLast();
        int answer = 0;

        while (true) {
            if(start+end <= K) {
                answer++;
                if(arrInt.size() >= 2) {
                    start = arrInt.pollFirst();
                    end = arrInt.pollLast();
                } else break;
            } else {
                if(arrInt.size() >= 1) {
                    end = arrInt.pollLast();
                } else break;
            }
        }

        bw.write(answer+"");
        bw.flush();
        bw.close();
    }
}


#2

  • 보니까 애초에 input 길이가 2가 안 넘는 경우 체크를 안 해줌
import java.awt.*;
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine());
        PriorityQueue<Integer> arr = new PriorityQueue<>();
        for(int i=0; i<N; i++) {
            arr.add(Integer.parseInt(st.nextToken()));
        }

        Deque<Integer> arrInt = new ArrayDeque<>();
        for(int i=0; i<N; i++) {
            arrInt.add(arr.poll());
        }

        int answer = 0;
        if(arrInt.size() > 2) {
            answer = countAnswer(arrInt, K);
        }

        bw.write(answer+"");
        bw.flush();
        bw.close();
    }

    static int countAnswer(Deque<Integer> arrInt, int K) {
        int start = arrInt.pollFirst();
        int end = arrInt.pollLast();
        int answer = 0;

        while (true) {
            if(start+end <= K) {
                answer++;
                if(arrInt.size() >= 2) {
                    start = arrInt.pollFirst();
                    end = arrInt.pollLast();
                } else break;
            } else {
                if(arrInt.size() >= 1) {
                    end = arrInt.pollLast();
                } else break;
            }
        }

        return answer;
    }
}

  • 성공!
profile
I will give it my all (๑•̀o•́๑)ง

0개의 댓글