Skip to content

The Hurdle Race

1. Problem

해당 문제는 여기에서 확인하실 수 있습니다.

2. Answer

public static int hurdleRace(int k, List<Integer> height) {
  int max = 0;
  for (int h : height) {
    max = Math.max(max, h);
  }
  if (k - max < 0)
    return Math.abs(k - max);
  else
    return 0;
}

3. Total Code

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {

  /*
   * 완주대회 클래스입니다.
   * 이 클래스는 완주대회에 참가한 선수들의 뛰기 높이를 계산합니다.
   */

  /*
   * 완주대회 함수를 완성하세요.
   *
   * 이 함수는 다음의 매개변수를 받습니다:
   *  1. 정수 k: 선수가 뛰어야 하는 최대 높이
   *  2. 정수 배열 height: 각 선수의 뛰기 높이를 나타내는 배열
   */

  public static int hurdleRace(int k, List<Integer> height) {
    // 가장 높은 장애물 높이를 저장할 변수 선언 및 초기화
    int max = 0;
    // 각 선수의 뛰기 높이를 순회하면서 가장 높은 장애물 높이를 구함
    for (int h : height) {
      max = Math.max(max, h);
    }
    // 만약 선수가 뛰어야 하는 최대 높이보다 가장 높은 장애물의 높이가 높다면
    if (k - max < 0)
      // 추가적으로 뛰어야 할 높이를 반환
      return Math.abs(k - max);
    // 그렇지 않으면
    else
      // 추가적인 뛰어야 할 높이가 없으므로 0을 반환
      return 0;
  }

}

public class Solution {
  public static void main(String[] args) throws IOException {
    // 입력을 받기 위한 BufferedReader 객체 생성
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
    // 출력을 위한 BufferedWriter 객체 생성
    BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

    // 첫 줄에서 공백을 기준으로 정수 두 개를 입력받아 배열에 저장
    String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");

    // 첫 번째 정수를 변수에 저장
    int n = Integer.parseInt(firstMultipleInput[0]);
    // 두 번째 정수를 변수에 저장
    int k = Integer.parseInt(firstMultipleInput[1]);

    // 공백을 기준으로 나눈 후 각 높이를 정수로 변환하여 리스트에 저장
    List<Integer> height = Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" "))
      .map(Integer::parseInt)
      .collect(toList());

    // 완주대회 함수를 호출하여 결과를 계산
    int result = Result.hurdleRace(k, height);

    // 결과를 출력
    bufferedWriter.write(String.valueOf(result));
    // 새로운 줄로 이동
    bufferedWriter.newLine();

    // BufferedReader와 BufferedWriter를 닫음
    bufferedReader.close();
    bufferedWriter.close();
  }
}