๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 8989_์‹œ๊ณ„

๋ฟŒ์•ผ._. 2024. 7. 24. 14:45
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/8989)

< ์‹œ๊ณ„ >

 

๋ฌธ์ œ ํ’€์ด 

 

์‹œ์นจ ๊ฐ๋„์™€ ๋ถ„์นจ ๊ฐ๋„๋ฅผ ๊ตฌํ•œ๋‹ค.

์‹œ์นจ ๊ฐ๋„ = ์‹œ์นจ * 30 + ๋ถ„์นจ * 0.5
๋ถ„์นจ ๊ฐ๋„ = ๋ถ„์นจ * 6    

 

์‹œ์นจ๊ณผ ๋ถ„์นจ์ด ์ด๋ฃจ๋Š” ๊ฐ๋„๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ•œ๋‹ค. 

1) ์‹œ์นจ + 360 - ๋ถ„์นจ

2) ๋ถ„์นจ + 360 - ์‹œ์นจ

3) ์‹œ์นจ - ๋ถ„์นจ

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class _8989_ { // ์‹œ๊ณ„
	static class Clock implements Comparable<Clock> {
		private String time;
		private double angle;

		public Clock(String time, double angle) {
			this.time = time;
			this.angle = angle;
		}

		@Override
		public int compareTo(Clock o) {
			if (this.angle == o.angle) {
				return this.time.compareTo(o.time);
			}
			return Double.compare(this.angle, o.angle);
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		int T = Integer.parseInt(bf.readLine());
		for (int i = 0; i < T; i++) {
			st = new StringTokenizer(bf.readLine());
			Clock answer[] = new Clock[5];

			for (int j = 0; j < 5; j++) {
				String time = st.nextToken();
				String arr[] = time.split(":");

				double h = Double.parseDouble(arr[0]);
				double m = Double.parseDouble(arr[1]);
				double result = Integer.MAX_VALUE;

				if (h > 12) {
					h -= 12;
				}
				h = h * 30 + 0.5 * m;
				m *= 6;
				result = Math.min((360 - m) + h, m + (360 - h));
				result = Math.min(result, Math.abs(m - h));
				answer[j] = new Clock(time, result);
			}
			Arrays.sort(answer);
			bw.write(answer[2].time + "\n");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
T : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜
answer : Clock์„ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด
h, m : ์‹œ์นจ, ๋ถ„์นจ
result : ์‹œ์นจ๊ณผ ๋ถ„์นจ์ด ํ˜•์„ฑํ•˜๋Š” ๊ฐ๋„ ์ค‘ ์ž‘์€ ๊ฐ๋„

 

Clock

์‹œ๊ฐ„๊ณผ ์‹œ์นจ๊ณผ ๋ถ„์นจ์ด ํ˜•์„ฑํ•˜๋Š” ๊ฐ๋„๋ฅผ ๋ณ€์ˆ˜๋กœ ๊ฐ€์ง„๋‹ค. ์ •๋ ฌํ•  ๋•Œ ๊ฐ๋„๊ฐ€ ์ž‘์€ ๊ฐ’์„ ์šฐ์„ ์ˆœ์œ„๋กœ ์ •๋ ฌํ•˜๋ฉฐ, ๊ฐ๋„๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์‹œ๊ฐ„์ด ๋น ๋ฅธ ๊ฒƒ์„ ์šฐ์„ ์œผ๋กœ ํ•œ๋‹ค.

 

Main 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

1) ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์‹œ์™€ ๋ถ„์„ ๋‚˜๋ˆˆ๋‹ค. 

2) 12์‹œ๋ฅผ ๋„˜์—ˆ๋‹ค๋ฉด 12๋ฅผ ๋นผ์ค€๋‹ค.

3) ์‹œ์นจ์ด ์ด๋ฃจ๋Š” ๊ฐ๋„๋Š” 1์‹œ๊ฐ„์— 30๋„ 1๋ถ„์— 0.5๋„๋ฅผ ์›€์ง์ด๋ฏ€๋กœ  h * 30 + 0.5 * m์ด ๋œ๋‹ค.

4) ๋ถ„์นจ์ด ์ด๋ฃจ๋Š” ๊ฐ๋„๋Š” 1๋ถ„์— 6๋„๋ฅผ ์›€์ง์ด๋ฏ€๋กœ m * 6์ด ๋œ๋‹ค.

5) ์‹œ์นจ๊ณผ ๋ถ„์นจ์ด ์ด๋ฃจ๋Š” ๊ฐ๋„๋ฅผ 3๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

6) ๋ฐฐ์—ด์— ๊ฐ๋„์™€ ์‹œ๊ฐ„์„ ์ €์žฅํ•œ๋‹ค.

7) ๋ฐฐ์—ด ์ •๋ ฌ ํ›„ ์ค‘๊ฐ„ ๊ฐ’์˜ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.