접근

https://www.acmicpc.net/problem/9881

 

9881번: Ski Course Design

Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer elevation in the range 0 .. 100. In the winter, since there is abundant snow on these hills, FJ routinely operates a ski training camp. Unfortunately, FJ has just found out about a

www.acmicpc.net

처음에는 무언가 좀더 효율적인 방법이 있을 줄 알았는데, 문제의 등급을 보고 그냥 브루트포스 알고리즘으로 풀었더니 그냥 풀게 되었습니다.

즉, 주어진 구간이 1~18, 2~19, 3~20, ... , 93~100 이라고 가정하고 계산한 값의 최소값을 구하면 됩니다.

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.*;

public class Main {

  static int N;
  static int[] height;

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    N = Integer.parseInt(br.readLine());
    height = new int[N];
    for (int i = 0; i < N; i++) {
      height[i] = Integer.parseInt(br.readLine());
    }
    br.close();
    int tmp, res;
    res = Integer.MAX_VALUE;
    for (int i = 1; i < 100 - 17; i++) {
      tmp = 0;
      for (int j = 0; j < N; j++) {
        tmp += compare(height[j], i);
      }
      res = Math.min(res, tmp);
    }
    System.out.println(res);
  }

  static int compare(int n, int s) {
    if (s <= n && n <= s + 17) {
      return 0;
    } else if (n < s) {
      return (s - n) * (s - n);
    } else {
      return (n - (s + 17)) * (n - (s + 17));
    }
  }
}

더 생각해 볼 것?

...

코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!

반응형

'코딩 > 백준 (JAVA)' 카테고리의 다른 글

백준 14529: Where's Bessie? (Java)  (0) 2022.08.06
백준 10875번: 뱀 (Java)  (0) 2022.07.25
백준 5901번: Relocation (Java)  (0) 2022.07.20
백준 9874번: Wormholes (Java)  (0) 2022.07.16
백준 5827번: What's Up With Gravity (Java)  (0) 2022.07.15
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기