728x90
https://www.acmicpc.net/problem/2455
입출력값에 따라 계산되고 그에 따른 최대값을 구하는 문제. 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
'Algorithm' 카테고리의 다른 글
[Java] 백준 별 찍기 2441번 2442번 2443번 (0) | 2022.03.28 |
---|---|
[Java] 백준 2355번 시그마 (0) | 2022.02.16 |
[Java] 백준 17388번 와글와글 숭고한 (0) | 2022.01.21 |
[Java] 백준 23825번 SASA 모형을 만들어보자 (0) | 2022.01.13 |
[Java] 백준 11948번 과목선택 (0) | 2021.12.30 |