๋ฌธ์ ๋งํฌ
ํ์ด ๋ฐฉ๋ฒ
์๊ฐ๋ณด๋ค ์๊ฐ์ด ๊ฑธ๋ ค์ ๋ค๋ฅธ ๋ถ์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค. ์ด ํ์ด๊ฐ ์ง๊ด์ ์ด๊ณ ์ดํด๊ฐ ์ฌ์ด ๊ฒ ๊ฐ์์
์์นจ, ์ด์นจ๊ณผ ๋ถ์นจ, ์ด์นจ์ด ๊ฒน์ณค๋์ง๋ฅผ ํ์ธํ๋ ค๋ฉด 1์ด๋ง๋ค ๊ฐ๋๋ฅผ ํ์ธํ๋ฉด ๋ฉ๋๋ค.
ํ์ฌ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ด์นจ์ ๊ฐ๋๊ฐ ์์นจ์ ๊ฐ๋๋ณด๋ค ์๊ณ , 1์ด ๋ค์ ์์นจ์ ๊ฐ๋๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด ๊ฒน์ณ์ง ๊ฒ์ด๋ฏ๋ก ์นด์ดํธ๋ฅผ 1 ์ฆ๊ฐํฉ๋๋ค ๋ถ์นจ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
๋ค๋ง 3๊ฐ์ง๊ฐ ๊ฒน์ณค์ ๊ฒฝ์ฐ์๋ 1๋ฒ๋ง ์นด์ดํธ ํด์ผ ํ๋ฏ๋ก 1์ ๋นผ์ค๋๋ค.
1. ๋ด ํ์ด
function solution(h1, m1, s1, h2, m2, s2) {
//์ด๋น ์์ง์ด๋ ์ด์นจ, ๋ถ์นจ, ์์นจ ๊ฐ๋
const SECONDS_ANGLE = 360 / 60;
const MINUTES_ANGLE = 360 / 60 / 60;
const HOURS_ANGLE = 360 / 12 / 60 / 60;
let cnt = 0;
//์์ ์๊ฐ ์ด๋จ์
let start_time = h1 * 60 * 60 + m1 * 60 + s1;
//๋๋๋ ์๊ฐ ์ด๋จ์
let end_time = h2 * 60 * 60 + m2 * 60 + s2;
const start_hour_angle = (start_time * HOURS_ANGLE) % 360;
const start_minute_angle = (start_time * MINUTES_ANGLE) % 360;
const start_seconds_angle = (start_time * SECONDS_ANGLE) % 360;
//์์ ์๊ฐ์ ์ด์นจ๊ณผ ์์นจ์ด ๊ฒน์ณ์์ผ๋ฉด ์นด์ดํธ
if (start_seconds_angle === start_hour_angle) cnt++;
//์์ ์๊ฐ์ ์ด์นจ๊ณผ ๋ถ์นจ์ด ๊ฒน์ณ์์ผ๋ฉด ์นด์ดํธ
if (start_seconds_angle === start_minute_angle) cnt++;
//์์ ์๊ฐ์ ์์นจ, ๋ถ์นจ, ์ด์นจ 3๊ฐ์ง๊ฐ ๊ฒน์ณ์๋ ๊ฒฝ์ฐ -1
if (
start_seconds_angle === start_hour_angle &&
start_seconds_angle === start_minute_angle
)
cnt--;
//1์ด๋ง๋ค ๊ฒน์ณค๋์ง ํ์ธ
//ํ์ฌ ์ด์นจ์ ๊ฐ๋๊ฐ ์์นจ, ๋ถ์นจ ๊ฐ๋๋ณด๋ค ์๋ค๊ฐ 1์ด ๋ค์ ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด ๊ฒน์ณ์ง ๊ฒ
while (start_time < end_time) {
//ํ์ฌ ์๊ฐ ์์นจ, ๋ถ์นจ, ์ด์นจ ๊ฐ๋
const current_hours_angle = (start_time * HOURS_ANGLE) % 360;
const current_minutes_angle = (start_time * MINUTES_ANGLE) % 360;
const current_seconds_angle = (start_time * SECONDS_ANGLE) % 360;
//1์ด ๋ค
const next_time = start_time + 1;
//1์ด ๋ค ์์นจ, ๋ถ์นจ, ์ด์นจ ๊ฐ๋
//360๋์ผ ๋ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํ๋ฉด 0์ด ๋๋ฏ๋ก 0์ผ ๊ฒฝ์ฐ์๋ 360์ผ๋ก ์ค์ ํด์ค
const next_hours_angle = (next_time * HOURS_ANGLE) % 360 || 360;
const next_minutes_angle = (next_time * MINUTES_ANGLE) % 360 || 360;
const next_seconds_angle = (next_time * SECONDS_ANGLE) % 360 || 360;
//์ด์นจ์ด ์์นจ ๋ค์ ์์๋๋ฐ 1์ด ๋ค์ ์์นจ ์์ผ๋ก ๊ฐ๋ฉด ์นด์ดํธ+1
if (
current_seconds_angle < current_hours_angle &&
next_seconds_angle >= next_hours_angle
)
cnt++;
//์ด์นจ์ด ๋ถ์นจ ๋ค์ ์์๋๋ฐ 1์ด ๋ค์ ๋ถ์นจ ์์ผ๋ก ๊ฐ๋ฉด ์นด์ดํธ+1
if (
current_seconds_angle < current_minutes_angle &&
next_seconds_angle >= next_minutes_angle
)
cnt++;
//1์ด ๋ค์ ์์นจ ๋ถ์นจ ์ด์นจ 3๊ฐ๊ฐ ๊ฒน์น๋ฉด -1(0์, 12์)
if (
next_seconds_angle === next_hours_angle &&
next_seconds_angle === next_minutes_angle
)
cnt--;
//์์ ์๊ฐ ์
๋ฐ์ดํธ
start_time = next_time;
}
return cnt;
}
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฆฌ์ฝ์ณ ๋ก๋ด JS (0) | 2024.01.03 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณผ์ ์งํํ๊ธฐ JS (1) | 2024.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค][PCCP ๊ธฐ์ถ๋ฌธ์ ] 2๋ฒ / ์์ ์์ถ JSํ์ด (0) | 2023.12.29 |
[๋ฐฑ์ค] 2573 ๋น์ฐ js ํ์ด (1) | 2023.12.28 |
[๋ฐฑ์ค] 7569 ํ ๋งํ js ํ์ด (1) | 2023.12.28 |