1. ๋ฌธ์ ์ค๋ช ๐
์๋ ๋ก๊ทธ ์๊ณ์ ์ด์นจ์ด ์์นจ ํน์ ๋ถ์นจ๊ณผ ๊ฒน์น ๋๋ง๋ค ์๋์ ์ธ๋ฆด ๊ฑด๋ฐ, ์ฃผ์ด์ง ์์ ์๊ฐ๋ถํฐ ๋์๊ฐ ๋ด์ ์๋ฆผ์ด ๋ช ๋ฒ ์ธ๋ ธ๋์ง ํ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ๋ ๋ฌธ์ . ์๊ณ์ ์ด,๋ถ,์์นจ์ ์ฐ์์ ์ผ๋ก ์์ง์ธ๋ค. ๋ฐ๋ผ์ ๊ฒน์น๋ ์๊ธฐ๊ฐ 0.001์ด ๋จ์์ผ ์๋, 0.00001์ด ๋จ์์ผ์๋ ์๋ค. ์ด๋ฅผ ๋ค ์๊ฐํด์ ๊ฒน์น๋ ํ์๋ฅผ ๊ตฌํด๋ผ! (Lv2 ๋ง๋?? Lv3๋ก ๊ฒฉ์ํด์ผํ ๋ฏ...)
2. ์ ๊ทผ ๋ฐฉ์ ๐๏ธ
KEY WORD
: SIMULATION
์๊ณ ์นจ๋ค์ ๊ฒน์นจ ํ์์ ์ต๋ํ ์ฝ๋๋ก ๊ตฌํํด์ผ ํ๋ค. ํ์ง๋ง ์ฐ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ์์ง์ ์์์ ๊ฒน์น๋ ์๊ฐ์ ํฌ์ฐฉํ๋ค๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ ์ผ์ด๋ค. ๋ฐ๋ผ์ ๊ฒน์น๋ค
์ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ด ์ ํ๋ค.
(1) ๊ฒน์น๋ค
์ ๊ธฐ์ค
๊ฐ๋ ์ ์ด์นจ์ด ์์นจ ํน์ ๋ถ์นจ๋ณด๋ค ๋ค์ณ์ก์ผ๋, 1์ด๊ฐ ์ง๋ ํ์ ์ด์นจ์ด ์์นจ ํน์ ๋ถ์นจ์ ์์๊ฐ๋ค.
์ด๊ฒ์ด ์ฆ๋ช
๋๋ค๋ฉด 1์ด๋ผ๋ ์ฐฐ๋ ์์ ์ด์นจ์ด ์์นจ ํน์ ๋ถ์นจ๊ณผ ๊ฒน์น ๊ฒฝ์ฐ๊ฐ ์๋ค๋ ๋ง์ด ๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ์ด์นจ์ด ๋ค์ณ์ก๋ค๊ฐ 1์ด ์ฌ์ด์ ์์๊ฐ ๊ฒฝ์ฐ
๋ฅผ ๊ฒน์น๋ค
์ ๋์ผ์ด๋ก ๊ฐ์ฃผํ๊ณ ๋ฌธ์ ๋ฅผ ํ ๊ฒ์ด๋ค. ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช
ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
(2) ์ธ๋ถ์ ์ธ ๊ตฌํ
์ด์ ์ธ๋ถ์ ์ผ๋ก ํ๋ ํ๋ ์ด๋ป๊ฒ ๊ตฌํํ ์ง ์์๋ณด๊ฒ ๋ค. ๋จผ์ ๊ตฌํํ ๋ด์ฉ์ ์์๋๋ก ์์๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ์์ ์๊ฐ ๋น์์ ์ด์นจ, ๋ถ์นจ, ์์นจ์ ์๋ ๋ก๊ทธ ์๊ณ ์ ๊ฐ๋๋ฅผ ๊ตฌํ๋ค.
- 1์ด๋ง๋ค ์์นจ, ์ด์นจ, ๋ถ์นจ์ ์ด๋์ํจ๋ค.
- ํด๋น 1์ด ์ฌ์ด์ ์ด์นจ์ด ์์นจ ํน์ ๋ถ์นจ๊ณผ ๊ฒน์น ์ ์ด ์๋์ง ํ์ธํ๋ค.
์ด์ ํ ๋จ๊ณ์ฉ ํด๋ณด์.
(3) ๊ฐ๋ ๊ตฌํ๊ธฐ
์๋ ๋ก๊ทธ ์๊ณ๋ ์์ผ๋ก 360๋์ด๋ค. ์ฌ๊ธฐ์ ์ซ์๊ฐ ํ์๋ ๋ถ๋ถ์ ์ด 12
๊ฐ ์์ผ๋ก 30๋์ ํ๋์ฉ ๊ทธ๋ ค์ ธ ์์ ๊ฒ์ด๋ค.
์ด์นจ
: ์ด์นจ์ 60์ด์ 360๋๋ฅผ ๋์์ผ ํ๋ค. ๋ฐ๋ผ์ 1์ด์ 6๋์ฉ ์์ง์ธ๋ค.๋ถ์นจ
: ๋ถ์นจ์ 60๋ถ์ 360๋๋ฅผ ๋์์ผ ํ๋ค. 60๋ถ์ 3600์ด์์ผ๋ก, 1์ด์ 0.1๋์ฉ ์์ง์ฌ์ผ ํ๋ค.์์นจ
: ์์นจ์ 12์๊ฐ์ 360๋๋ฅผ ๋์์ผ ํ๋ค. ๋ฐ๋ผ์ 1์๊ฐ์ 30๋๋ฅผ ์์ง์ธ๋ค. ์ด๋ 3600์ด์ 30๋๋ฅผ ์์ง์ธ๋ค๋ ๋ป ์ด๋ฏ๋ก, 1์ด์ 1/120๋๋ฅผ ์์ง์ธ๋ค.
ํ๋ก ๊ฐ ์๊ฐ ๋จ์ ๋ณ ์์ง์ด๋ ์๊ฐ์ ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋จ์ | sec | min | hour |
---|---|---|---|
์ด์นจ | 6๋ | - | - |
๋ถ์นจ | 0.1๋ | 6๋ | |
์์นจ | (1/120)๋ | 0.5๋ | 30๋ |
์ด์ ์ฃผ์ด์ง ์๊ฐ์ ํ์ฉํด ๊ฐ ์นจ๋ณ ๊ฐ๋๋ฅผ ๊ณ์ฐํด๋ณด์. ์ฌ๊ธฐ์ ์ฃผ์ํด์ผํ ์ ์ 1์ด๋ง๋ค ๋ถ์นจ๊ณผ ์์นจ๋ ๋ฏธ์ธํ๊ฒ ์์ง์ธ๋ค๋ ๊ฒ์ด๋ค. ์ฒ์ ๋ฌธ์ ๋ฅผ ํ ๋, 11์ 59๋ถ 59์ด๋ผ๋ฉด 11์๋ง์ ์ด์ฉํด ์์นจ์ ๊ฐ๋๋ฅผ ๊ตฌํ๊ณ , 59๋ถ๋ง์ ์ด์ฉํด ๋ถ์นจ์ ๊ตฌํ๋ ์ค๋ฅ๋ฅผ ๋ฒํ๋ค. ํด๋น ์ค๋ฅ๋ ๋ชจ๋ ์นจ์ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ์ฐ์์ ์ผ๋ก ์์ง์ธ๋ค.
๋ ๊ฒ์ ๊ฐ๊ณผํด์ ์๊ธด ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์์นจ ๊ณ์ฐ ์์๋ ์,๋ถ,์ด ๋ชจ๋ ๊ณ ๋ คํ๊ณ , ๋ถ์นจ ๊ณ์ฐ ์์๋ ๋ถ๊ณผ ์ด ๋ชจ๋ ๊ณ ๋ คํด์ผ ํ๋ค.
์ด์ ์์ ์๊ฐ์ ์๋ก ๋ค์ด์ ๊ทธ์ ๋ง๋ ๊ฐ ์นจ๋ณ ๊ฐ๋๋ฅผ ๊ตฌํด๋ณด์. 17์ 30๋ถ 32์ด
๊ฐ ์ฃผ์ด์ก๋ค๊ณ ๊ฐ์ ํ ๋,์์นจ
= (17%12)*30 + 30*(0.5) + 32*(1/120d)
๋ถ์นจ
= 30*(6) + 32*(0.1)
์ด์นจ
= 32 * 6
์ด ๋ ๊ฒ์ด๋ค. ์์นจ ๊ณ์ฐ ์ ๋จผ์ ์ฃผ์ด์ง ์๊ฐ์ %12
๋ฅผ ํ ์ด์ ๋ ์์นจ์ ์ ์ผํ๊ฒ ์ฃผ์ด์ง ๋จ์(0
23์) ๋ด์ ๋ ๋ฐํด๋ฅผ ๋๋ ์นจ์ด๊ธฐ ๋๋ฌธ์ด๋ค. (1
12 ํ ๋ฐํด, 13
24(0์) ํ ๋ฐํด) ๋ฐ๋ผ์ ๊ตฐ์ธ ์๊ฐ(0
23์)์ผ๋ก ๋ค์ด์จ ์ ๋ ฅ์ ๋ฏผ๊ฐ์ธ ์๊ฐ(1~12) ๋จ์๋ก ๋ฐ๊ฟ์ผ์ง ์ ๋๋ก ๋ ๊ฐ๋๋ฅผ ๊ตฌํ ์ ์๋ค. ์์ ์์์์ ๋์จ ํ์ด๋ฅผ ๊ณต์ํ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ฃผ์ด์ง ์๊ฐ = h1
์ m1
๋ถ s1
์ด์์นจ
= (h1%12)*30 + m1*(0.5) + s1*(1/120d)
๋ถ์นจ
= (m1*6) + (s1*0.1)
์ด์นจ
= (s1*6)
(4) 1์ด๋ง๋ค ๋ชจ๋ ์นจ ์ด๋
์ด๊ฑด ์ฝ๋ค. ์๊น ๊ฐ ์นจ๋ณ๋ก ์ด๋ง๋ค ์ผ๋ง๋ ์ด๋ํด์ผ ํ๋์ง ๊ตฌํ๋ค. 1์ด ์ด๋์ ์์นจ์ 1/120๋, ๋ถ์นจ์ 0.1๋ ์ด์นจ์ 6๋์ฉ ์์ง์ด๋ฉด ๋๋ค.
(5) ๊ฒน์น๋ ํ์๊ฐ ์์๋์ง ์ฒดํฌ
์์นจ์ ๊ฐ๋๋ฅผ hDegree
, ๋ถ์นจ์ ๊ฐ๋๋ฅผ mDegree
, ์ด์นจ์ ๊ฐ๋๋ฅผ sDegree
๋ผ ํ ๋,
์ด๋ ์ hDegree > sDegree
์๋๋ฐ, ๊ณ์ฐ ํ hDegree < sDegree
๊ฐ ๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค. ๋ถ์นจ๊ณผ ์์นจ์ ๊ด๊ณ์์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
(6) ์์ธ ์ฒ๋ฆฌ
์,๋ถ,์ด์นจ์ด ๋ชจ๋ ๊ฒน์น ๊ฒฝ์ฐ ์๋ฆผ์ 1๋ฒ๋ง ์ธ๋ ค์ผ ํ๋ค. ๊ทธ๋์ ์ค๋ณต์ ์ ๊ฑฐ ํด์ค์ผ ํ๋ค. ๋๊ฐ์ ๊ฒฝ์ฐ๋ ๋ถ์นจ์ด ์์นจ๋ณด๋ค ๋ค์ณ์ก๋ค๊ฐ 1์ด ํ ๋ถ์นจ์ด ์์นจ์ ์์ง๋ฅธ ๊ฒฝ์ฐ
๊ฐ ๊ฒน์น๋ ํ์ ๋ด์ ํฌํจ๋๋ฉด, ์ด์นจ์ด ์์นจ๊ณผ ๊ฒน์น๋ ํ์
์ ๋ถ์นจ์ด ์์นจ๊ณผ ๊ฒน์น๋ ํ์
๊ฐ ์ค๋ณต๋ ๊ฒ์์ผ๋ก ์ด๋ฅผ ์ด์ฉํด ์ค๋ณต์ ์ ๊ฑฐํ๋ค.
์์ ์๊ฐ์์ ๊ฒน์น๋ ๊ฒฝ์ฐ
์ ๋ ์๊ฐ์์ ๊ฒน์น๋ ๊ฒฝ์ฐ
๋ ์ฒดํฌ ํด์ฃผ๋ฉด ๋ชจ๋ ์์ธ์ฒ๋ฆฌ๋ ๋๋๋ค.
3. ์ฝ๋ ์๊ฐ ๐
์ฌ์ค ์์ด๋์ด๊ฐ ๋ค์ธ ๋ฌธ์ ๋ผ ์ฝ๋ ์์ฒด๋ ์ฝ๋ค.
class Solution {
static int cnt = 0;
double h_d;
double m_d;
double s_d;
public int solution(int h1, int m1, int s1, int h2, int m2, int s2) {
int acc = 0;
calculateDegree(h1,m1,s1);
int start = h1*3600 + m1*60 + s1;
int end = h2*3600 + m2*60 + s2;
while(start < end){
start++;
acc += timePast();
}
calculateDegree(h1,m1,s1);
if(Double.compare(h_d, m_d) == 0 || Double.compare(m_d,s_d) == 0) acc++;
calculateDegree(h2,m2,s2);
if(Double.compare(h_d, m_d) == 0 || Double.compare(m_d,s_d) == 0) acc++;
return acc;
}
public void calculateDegree(int h1, int m1, int s1) {
this.h_d = (h1%12)*30 + m1*(0.5) + s1*0.0083;
this.m_d = (m1*6) + (s1*0.1);
this.s_d = (s1*6);
}
public int timePast() {
int ans = 0;
double prevH = this.h_d;
double prevM = this.m_d;
double prevS = this.s_d;
this.h_d += 0.0083333333333333;
this.m_d += 0.1;
this.s_d += 6;
if(Double.compare(prevH, prevS) > 0 && Double.compare(h_d,s_d) <= 0) ans++;
if(Double.compare(prevM, prevS) > 0 && Double.compare(m_d,s_d) <= 0) ans++;
if((Double.compare(prevH, prevM) > 0 && Double.compare(prevH,prevS) > 0)
&& (Double.compare(h_d, m_d) <= 0 && Double.compare(h_d, s_d) <= 0)) ans--;
if(this.h_d >=360) this.h_d %= 360;
if(this.m_d >=360) this.m_d %= 360;
if(this.s_d >=360) this.s_d %= 360;
return ans;
}
}
4. ๋ฐฐ์ด ๊ฒ๋ค ๐ฏ
์์์ ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด
java์์๋ ๋๋์
๋ถํธ์ธ /
์ ์ด์ฉํ๋ฉด ๋ชซ๋ง ๋ฐํ๋๋ค. ์ด ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์์นจ์ ์ด๋์ ๊ตฌํ ๋, 1/120
์ ๊ฒฐ๊ณผ๊ฐ 0.833333
์ผ๋ก ๋ฐํ๋์ง ์๊ณ ๊ฒฐ๊ณผ๋ก 0
์ผ๋ก ๋ฐํ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์์์ ์ ๋จ๊ธฐ๊ณ ์ถ์ ๋๋์
๊ณ์ฐ ๋ค์ d๋ผ๋ ๋ฌธ์๋ฅผ ์ถ๊ฐํ์ฌ ํด๋น ๊ณ์ฐ์ด double ํ์
๊ณ์ฐ์์ ๋ช
์ํ๋ฉด ๋๋ค. ์ด๋ฌ๋ฉด double ํ์
์ผ๋ก ๊ณ์ฐ์ด ์ฒ๋ฆฌ๋์ด ์์์ ์ด ์ ์ง๋๋ค.