Problem Solving

[Java] λ°±μ€€ 31623 - Room Temperature

336699go 2024. 3. 21. 12:31

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


풀이

μž…μ„ 수 μžˆλŠ” μž¬ν‚·μ— μ œν•œμ΄ μ—†μœΌλ‹ˆ, λ°°μ—΄μ˜ λͺ¨λ“  μ›μ†Œλ₯Ό 0 <= A[i] < T κ°’μœΌλ‘œ λ§Œλ“€ 수 μžˆλ‹€. (λͺ¨λ“ˆλŸ¬ μ—°μ‚°)

κ·Έ ν›„ ν•œ λͺ…μ”© μž¬ν‚· ν•˜λ‚˜λ₯Ό μž…ν˜€κ°€λ©° unpleasantness 값을 계산.

unpleasantness 값은 방의 μ˜¨λ„κ°€ λ”± 쀑간값일 λ•Œ μ΅œμ†Œκ°€ λœλ‹€.

즉, unpleasantness = (λ°°μ—΄μ˜ μ΅œλŒ“κ°’ - λ°°μ—΄μ˜ μ΅œμ†Ÿκ°’ + 1) / 2

λ°°μ—΄μ˜ μ΅œλŒ“κ°’κ³Ό μ΅œμ†Ÿκ°’μ„ λΉ λ₯΄κ²Œ κ΅¬ν•˜κΈ° μœ„ν•΄ 정렬을 ν•œλ‹€.

 


μ½”λ“œ

더보기
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int T = Integer.parseInt(st.nextToken());
		int[] A = new int[N];

		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < N; i++) {
			A[i] = Integer.parseInt(st.nextToken()) % T;
		}

		Arrays.sort(A);

		int min = A[N - 1] - A[0];

		for (int i = 0; i < N - 1; i++) {
			min = Math.min(min, A[i] + T - A[i + 1]);
		}

		System.out.println((min + 1) / 2);
		br.close();
	}
}

ν›„κΈ°

μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„ λŠ₯λ ₯λ³΄λ‹€λŠ” 아이디어가 ν•„μš”ν–ˆλ˜ 문제.