[Softeer] Java - level2 문제풀이(GBC)

2023. 2. 11. 10:00·개발자 세릴리/코딩테스트
728x90
반응형

 

softeer GBC(Java)

[문제]

글로벌 비즈니스 센터(GBC, Global Business Center)는 현대자동차그룹 통합 사옥이다.

지하 7층, 지상 105층, 높이 약 570m의 규모로 2026년 하반기에 완공을 목표로 현재 공사 중에 있다.

 

 

이러한 초고층 높이의 빌딩에는 초고층 승강기가 들어가야 한다. 엘리베이터 정비공인 광우는 0m 부터 100m까지 일정 구간들의 엘리베이터 속도를 검사하는 업무를 맡게 되었다.

 

빌딩에서 운영되는 엘리베이터 구간은 N개의 구간으로 나뉘며 해당 구간의 제한 속도이 주어진다. 구간의 총 합은 100m 이며 각 구간별 구간의 길이와 제한 속도 모두 양의 정수로 주어진다.

 

예를 들어보자. 구간이 3이라고 할 때,

▶ 첫 번째 구간의 길이는 50m 이고 제한 속도는 50m/s

▶ 두 번째 구간의 길이는 40m 이고 제한 속도는 40m/s

▶ 세 번째 구간의 길이는 10m 이고 제한 속도는 30m/s

 

이 구간에서 제한 속도를 벗어나면(즉 제한속도를 초과하면) 서버에 초과한만큼의 속도가 로그에 남는다. 불행하게도 현재 서버의 상태가 off 상태임으로 광우는 서버의 데이터를 받아볼 수가 없다. 광우는 임의의 구간의 길이와 속도를 정하여 시범운행 할 때, 가장 제한 속도가 크게 벗어난 값을 스스로 구해야 한다.

 

M개의 구간을 검사한다고 할 때 예를 들면,

▶ 첫 번째 구간의 운행 길이는 60m 이고 속도는 76m/s

▶ 두 번째 구간의 운행 길이는 18m 이고 속도는 28m/s

▶ 세 번째 구간의 운행 길이는 22m 이고 속도는 50m/s이라고 했을 때, 제한 속도를 벗어나 가장 차이가 큰 속도를 구해 보자.

 

첫번째 구간 50m 까지에서 제한 속도와 실제 운행 속도를 비교했을 때, 제한 속도를 26m/s 초과했다. 이후 두번째 구간과 실 운행한 첫번째 구간이 10m 정도 겹치는데, 이때 제한 속도를 36m/s 초과하게 된다.

 

그 이후 구간들에서는 차이가 그보다 크지 않으므로 가장 큰 속도 차이는 36m/s임을 알 수 있다.

 

주어진 구간의 제한속도와 광우가 테스트한 구간의 속도를 기준으로 가장 크게 제한 속도를 넘어간 값이 얼마인지 구해보자.

 
[제약조건]

1≤ N, M ≤100

 
[입력형식]

첫 줄에 N과 M이 주어진다. 그 다음 줄부터 N개의 줄은 각 구간의 길이 및 해당 구간에서의 제한 속도가 주어지며, 다음 M개의 줄은 광우가 테스트하는 구간의 길이와 속도가 주어진다.

 
[출력형식]

광우가 시범운행을 하는 동안 제한 속도를 가장 크게 벗어난 값을 출력 한다. 단 제한 속도를 벗어나지 않은 경우는 0을 출력 한다.

 

[풀이]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int N = Integer.parseInt(input[0]);
        int M = Integer.parseInt(input[1]);
        List<Integer> meter = new ArrayList<>();
        List<Integer> speed = new ArrayList<>();
        List<Integer> testMeter = new ArrayList<>();
        List<Integer> testSpeed = new ArrayList<>();
        for(int i=0; i<N; i++) {
            String[] temp = br.readLine().split(" ");
            meter.add(Integer.parseInt(temp[0]));
            speed.add(Integer.parseInt(temp[1]));
        }
        for(int i=0; i<M; i++) {
            String[] temp = br.readLine().split(" ");
            testMeter.add(Integer.parseInt(temp[0]));
            testSpeed.add(Integer.parseInt(temp[1]));
        }
        int maxSpeed = 0;
        int startMeter = 0;
        int endMeter = 0;
        for(int i=0; i<N; i++) {
            if(i==0) {
                endMeter = meter.get(i);
            } else {
                endMeter += meter.get(i);
            }
            int reachNum = startMeter;
            while(reachNum < endMeter) {
                int limitSpeed = speed.get(i);
                int checkSpeed = 0;
                int num = 0;
                for(int j=0; j<testMeter.size(); j++) {
                    num += testMeter.get(j);
                    if(reachNum < num) {
                        checkSpeed = testSpeed.get(j);
                        break;
                    }
                }
                if(limitSpeed < checkSpeed) {
                    maxSpeed = Math.max(maxSpeed, checkSpeed - limitSpeed);
                }
                reachNum++;
            }
            startMeter = endMeter;
        }
        System.out.println(maxSpeed);
        br.close();
    }
}
728x90
반응형

'개발자 세릴리 > 코딩테스트' 카테고리의 다른 글

[Softeer] Java - level3 문제풀이(업무처리)  (0) 2023.02.16
[Softeer] Java - level2 문제풀이(바이러스)  (2) 2023.02.12
[Softeer] Java - level2 문제풀이(전광판)  (0) 2023.02.10
[Softeer] Java - level2 문제풀이(회의실 예약)  (0) 2023.02.08
[Softeer] Java - level2 문제풀이(비밀 메뉴)  (0) 2023.02.04
'개발자 세릴리/코딩테스트' 카테고리의 다른 글
  • [Softeer] Java - level3 문제풀이(업무처리)
  • [Softeer] Java - level2 문제풀이(바이러스)
  • [Softeer] Java - level2 문제풀이(전광판)
  • [Softeer] Java - level2 문제풀이(회의실 예약)
세릴리
세릴리
  • 세릴리
    세리의 데이터베이스 세상
    세릴리
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • 개발자 세릴리 (65)
        • 비전공자 한 입 지식 (12)
        • 코딩테스트 (24)
        • 스펙업 (15)
        • JAVA (5)
        • 일상 (9)
      • 파이어족 세릴리 (21)
        • 블로그 운영 (3)
        • 각종 양식 공유 (1)
        • 돈되는 정보 공유 (17)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발자되는법
    adsp 벼락치기
    개발자 이직
    명품자바프로그래밍 정답
    현대자동차 코딩테스트
    명품자바프로그래밍 해설
    현대오토에버 코딩테스트
    비전공자 개발자
    현대 코테
    Softeer 문제 풀이
    오늘 이슈
    현대오토에버 코테
    현대 코딩테스트
    adsp 자료
    프로그래밍 공부
    현대모비스 코딩테스트
    JAVA 책 추천
    java 공부
    adsp 독학
    비전공자 개발
    백준
    softeer java 풀이
    adsp 공부법
    비전공 개발자
    명품자바프로그래밍
    adsp 수험표
    이슈
    JAVA 개발공부
    Java 문제
    개발자 공부
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
세릴리
[Softeer] Java - level2 문제풀이(GBC)
상단으로

티스토리툴바