문제
해결 방안 고민
1번역 - 4번역 => 4개의 정차역이 있는 노선
타거나 내리는 사람의 수를 자동으로 인식할 수 있는 장치가 있음
기차 안에 사람이 가장 많을 때의 사람 수를 계산
조건:
내릴 사람이 모두 내린 후에 기차에 탄다
== 4번 ==
1번역(출발역) 0 32
2번역 3 13
3번역 28 25
4번역(종착역) 39 0
ride(탄 사람)
rideOff(내린 사람)
2번역: 32 - 3 + 13 = 42 =>
3번역: 42 - 28 + 25 = 39
4번역: 39 - 39 = 0
Markdown
복사
해결 방법
•
이 문제는 간단한 사칙 연산의 규칙만 찾아내면 쉽게 해결할 수 있는 문제였다.
•
탄 사람과 내린 사람을 각각 변수로 지정하여 탄 사람은 ‘+’, 내린 사람은 ‘-’로 생각하여 접근하면 금방 식을 세울 수 있었다.
•
total에 탄 사람과 내린 사람을 누적 계산하면 된다.
•
사람이 가장 많을 때를 계산해야 하므로 최댓값 변수를 지정하여 누적 합과 비교하면서 결과를 도출하면 된다.
코드
package algo250221;
import java.io.*;
import java.util.*;
// 지능형 기차 (브론즈 3)
public class Baek2455 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int max = Integer.MIN_VALUE;
int total = 0;
for (int i = 0; i < 4; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int rideOff = Integer.parseInt(st.nextToken());
int ride = Integer.parseInt(st.nextToken());
total += ride - rideOff;
if (max < total) {
max = total;
}
}
bw.write(String.valueOf(max));
bw.flush();
bw.close();
br.close();
}
}
Java
복사
느낀 점
알고리즘 문제풀이는 대부분 고민을 해야 하고 논리적으로 깊이 있게 접근하거나 다방면의 관점에서 생각해야 하지만 이번 문제는 어렵지 않게 풀지 않아서 왠지 모를 뿌듯함이 들었다. 하지만 알고리즘 문제풀이를 통해 고민을 하는 과정과 깊이 있게 접근할 수 있는 경험을 할 수 있는 것도 굉장히 큰 자산이라고 생각한다. 개발자는 코드와 뗄레야 뗄 수 없는 직종이기 때문에 코드를 제대로 작성하려면 알고리즘과 개발에 대한 기본기는 꾸준히 공부해야 한다는 것이 나의 개발 철학이다.