본문 바로가기

CodingTEST

[백준 21736] 헌내기는 친구가 필요해 (JAVA)

반응형

백준 21736번 문제 - 헌내기는 친구가 필요해

 

21736번: 헌내기는 친구가 필요해

2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고

www.acmicpc.net


문제 분석 

 

 

  • 도연이가 다니는 대학의 캠퍼스는 N*M 크기이며 캠퍼스에서 이동하는 방법은 벽이 아닌 상하좌우로 이동하는 것이다.
  • 불쌍한 도연이를 위하여 캠퍼스에서 도연이가 만날 수 있는 사람의 수를 출력하는 프로그램을 작성해보자.
  • 입력 둘째 줄부터 개의 줄에는 캠퍼스의 정보들이 주어진다.
    •  O는 빈 공간, X는 벽, I는 도연이, P는 사람이다. I가 한 번만 주어짐이 보장된다.

해결 포인트

 

  • BFS 구현

 


코드

 

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

public class Main {
    public static ArrayList<Long> trees;
    public static long M;
    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());
        long N = Long.parseLong(st.nextToken());
        M = Long.parseLong(st.nextToken());

        trees = new ArrayList<>();
        long max = 0;
        st = new StringTokenizer(br.readLine());
        for (long i = 0; i < N; i++) {
            long num = Long.parseLong(st.nextToken());
            trees.add(num);
            max = Math.max(max, num);
        }

        bw.write(getTreeSize(1, max) + "\n");
        bw.flush();
        bw.close();
    }

    public static long getTreeSize(long start, long end) {
        if(start >= end) {
            return start - 1;
        }
        long mid = (end+start)/2;
        long sum = 0;
        for (int i = 0; i < trees.size(); i++) {
            if (mid < trees.get(i)) {
                sum += trees.get(i) - mid;
            }

        }

        if(sum < M) {
            return getTreeSize(start, mid);
        }
        else {
            return getTreeSize(mid+1, end);
        }
    }
}
반응형

'CodingTEST' 카테고리의 다른 글

[백준 11403] 경로 찾기 (JAVA)  (1) 2023.12.26
[백준 5525] IOIOI (JAVA)  (1) 2023.12.26
[백준 2805] 나무 자르기 (JAVA)  (0) 2023.12.21
[백준 11279] 최대 힙 (JAVA)  (0) 2023.12.19
[백준 9461] 파도반 수열 (JAVA)  (1) 2023.12.18