Algorithm

[Java] 백준 2455번 지능형 기차

로춘남 2022. 2. 23. 15:01
728x90


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

 

2455번: 지능형 기차

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다.

www.acmicpc.net

입출력값에 따라 계산되고 그에 따른 최대값을 구하는 문제. Scanner의 경우 입력값들 사칙연산이랑 최대값 구하는 로직으로 쉽게 구현하지만!

 

효율성을 위해서 Buffer를 이용해보았다.

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

public class BJ2455 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int max = 0;
        int now = 0;
        for(int i = 0; i<4; i++){
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int out = Integer.parseInt(st.nextToken());
            int in = Integer.parseInt(st.nextToken());

            now = now - out + in;
            max = Math.max(max, now);
        }
        System.out.println(max);
    }
}

구하고자하는 최대값을 max로 설정. 그리고 출발역에 있는 수를 now로 설정.

기차역이 총 4개니 for문을 통해 4만큼 돌려주고, 이 과정에서 Buffer와 함께 이용할 수 있는 StringTokenizer를 설정해주었다. 이후 값을 입력해야하니 사람이 내리는것을 out으로 설정하여 Integer.parseInt(st.nextToken());를 통해 값 입력.

그리고 사람이 탑승하는것은 in으로 지정하여 입력값을 넣을 수 있게해주었다.

 

그리고 기차역에서 내리는사람과 타는 사람을 계산하고, 이 값들을 Math.max()로 최대값을 구해주면된다.

아래쪽이 Scanner를 이용했을때. 그리고 위쪽이 Buffer를 사용했을때,

시간과 메모리 모두 차이가 나는점을 알 수 있다.

 

728x90