Java/Java 알고리즘

백준 25177번 서강의 역사를 찾아서 JAVA 구현해보기

kimc 2022. 5. 22. 20:39

```

백준 25177번 서강의 역사를 찾아서 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 25177번 풀이

https://www.acmicpc.net/problem

 

 

백준 25177번 서강의 역사를 찾아서는

난이도 브론즈 등급의 문제로서

 

학교 내에 있는 현재 시설의 수

학교 내에 있는 과거 시설의 수

가 주어지고

 

현재 시설의 점수들이 순차적으로 주어진 다음

과거 시설의 점수들이 순차적으로 주어질 때

 

최대 점수 증가를 출력하고

점수 증가가 없는 경우 0을 출력하면 되는 문제입니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


조건대로 입력을 받고

스트림을 돌려서 임시 배열 안에 점수차를 저장한 다음

최댓값을 찾아서 출력하였습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.OptionalInt;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {

    static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {

        // 학교 내의 현재 시설수 crtPCount
        // 학교 내의 과거 시설수 pstPCount
        // 학교 내의 과거와 현재 최대 시설수 maxCount
        String input = br.readLine();
        final int crtPCount = Integer.parseInt(input.split(" ")[0]);
        final int pstPCount = Integer.parseInt(input.split(" ")[1]);
        final int maxCount = Math.max(crtPCount, pstPCount);

        // 점수 차 배열 pointArr
        // 현재 점수 리스트 crtPList
        // 과거 점수 리스트 pstPList
        int[] pointArr = new int[maxCount];
        List<Integer> crtPList = Arrays.stream(br.readLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());
        List<Integer> pstPList = Arrays.stream(br.readLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());

        // 최대 점수 차 계산 maxPoint
        IntStream.range(0, crtPCount).forEach(i->pointArr[i] -= crtPList.get(i));
        IntStream.range(0, pstPCount).forEach(i->pointArr[i] += pstPList.get(i));
        OptionalInt maxPoint = Arrays.stream(pointArr).max();

        // 결과 출력
        int result = 0;
        if (maxPoint.isPresent() && maxPoint.getAsInt() >= 0){
            result = maxPoint.getAsInt();
        }
        System.out.print(result);
    }

}

//codemasterkimc.tistory.com [김씨의 코딩 스토리]

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90