SMALL
https://softeer.ai/practice/6270
현대 스러운 문제를 냈다.
글로벌 비즈니스 센터(GBC, Global Business Center)는 현대자동차그룹 통합 사옥에서 구간중 제한 속도 벗어나는것중 가장 큰것을 찾는 것이다.
정해진 구간과 제한 속도를 주고 검사하는 구간과 속도를 준다.
처음에 접근 했을땐 반복을 일일이 돌아야 하나 싶었지만
제한 속도 검사, 구간 실태 조사를 해서 i, j를 적절하게 움직여주면 될 것이라는 검증을 마치고 바로 코드를 쳤다.
정답 코드
import java.io.*;
import java.util.*;
public class Main {
private static int[] nLength;
private static int[] nSpeed;
private static int[] mLength;
private static int[] mSpeed;
private static int dap = 0;
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());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
nLength = new int[n];
nSpeed = new int[n];
mLength = new int[m];
mSpeed = new int[m];
// n 관련 입력 받기
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
nLength[i] = Integer.parseInt(st.nextToken());
nSpeed[i] = Integer.parseInt(st.nextToken());
}
// m 관련 입력 받기
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
mLength[i] = Integer.parseInt(st.nextToken());
mSpeed[i] = Integer.parseInt(st.nextToken());
}
int i = 0;
int j = 0;
while (i < n && j < n) {
// 제한 속도 검사
int gapSpeed = mSpeed[i] - nSpeed[j];
if (gapSpeed > 0) {
dap = Math.max(dap, gapSpeed);
}
// 구간 실태 조사
int gapLength = mLength[i] - nLength[j];
if (gapLength > 0) {
mLength[i] = gapLength;
j++;
}
else if (gapLength < 0) {
nLength[j] = Math.abs(gapLength);
i++;
}
else {
i++;
j++;
}
}
bw.write(dap + "\n");
bw.flush();
bw.close();
}
}
런타임 에러가 나서 당황했다. 다음부턴 조건을 제대로 확인하고 걸어줘야겠다.
'알고리즘 단련장 > 소프티어' 카테고리의 다른 글
[소프티어] 비밀 메뉴 레벨2 (21년 재직자 대회 예선) (0) | 2024.10.31 |
---|---|
[소프티어] 회의실 예약 레벨2 자바 풀이 (21년 재직자 대회 예선) (0) | 2024.10.31 |
[소프티어] 지도 자동 구축 레벨2 자바 풀이 (2) | 2024.10.30 |
[소프티어] 장애물 인식 프로그램 레벨2 자바 풀이 (DFS, BFS) (0) | 2024.10.30 |
[소프티어] 바이러스 레벨2 자바 풀이 (0) | 2024.10.30 |