ํด๋น ๋ฌธ์ ๋ yoon-dumbo๋์ ํ๋ก๊ทธ๋๋จธ์ค-์ ํ๋ฒ์ค-javascript ๊ฒ์๊ธ์ ๋ณด๊ณ ์ฐธ๊ณ ํ์ฌ ํ์ด๋์์์ ๋ฏธ๋ฆฌ ๋ฐํ๋๋ค.
๋ฌธ์ ์ค๋ช
์นด์นด์ค์์๋ ๋ฌด๋ฃ ์ ํ๋ฒ์ค๋ฅผ ์ดํํ๊ธฐ ๋๋ฌธ์ ํ๊ต์ญ์์ ํธํ๊ฒ ์ฌ๋ฌด์ค๋ก ์ฌ ์ ์๋ค. ์นด์นด์ค์ ์ง์์ ์๋ก๋ฅผ 'ํฌ๋ฃจ'๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ์์นจ๋ง๋ค ๋ง์ ํฌ๋ฃจ๋ค์ด ์ด ์ ํ์ ์ด์ฉํ์ฌ ์ถ๊ทผํ๋ค.
์ด ๋ฌธ์ ์์๋ ํธ์๋ฅผ ์ํด ์ ํ์ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ์ดํํ๋ค๊ณ ๊ฐ์ ํ์.
09:00
๋ถํฐ ์ด n
ํ t
๋ถ ๊ฐ๊ฒฉ์ผ๋ก ์ญ์ ๋์ฐฉํ๋ฉฐ, ํ๋์ ์
ํ์๋ ์ต๋ m
๋ช
์ ์น๊ฐ์ด ํ ์ ์๋ค.09:00
์ ๋์ฐฉํ ์
ํ์ ์๋ฆฌ๊ฐ ์๋ค๋ฉด 09:00
์ ์ค์ ์ ํฌ๋ฃจ๋ ํ ์ ์๋ค.์ผ์ฐ ๋์์ ์ ํ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ๊ท์ฐฎ์๋ ์ฝ์, ์ผ์ฃผ์ผ๊ฐ์ ์ง์ํ ๊ด์ฐฐ ๋์ ์ด๋ค ํฌ๋ฃจ๊ฐ ๋ช ์์ ์ ํ ๋๊ธฐ์ด์ ๋์ฐฉํ๋์ง ์์๋๋ค. ์ฝ์ด ์ ํ์ ํ๊ณ ์ฌ๋ฌด์ค๋ก ๊ฐ ์ ์๋ ๋์ฐฉ ์๊ฐ ์ค ์ ์ผ ๋ฆ์ ์๊ฐ์ ๊ตฌํ์ฌ๋ผ.
๋จ, ์ฝ์ ๊ฒ์ผ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์๊ฐ์ ๋์ฐฉํ ํฌ๋ฃจ ์ค ๋๊ธฐ์ด์์ ์ ์ผ ๋ค์ ์ ๋ค. ๋ํ, ๋ชจ๋ ํฌ๋ฃจ๋ ์ ์ ์์ผ ํ๋ฏ๋ก 23:59
์ ์ง์ ๋์๊ฐ๋ค. ๋ฐ๋ผ์ ์ด๋ค ํฌ๋ฃจ๋ ๋ค์๋ ์
ํ์ ํ๋ ์ผ์ ์๋ค.
์
ํ ์ดํ ํ์ n
, ์
ํ ์ดํ ๊ฐ๊ฒฉ t
, ํ ์
ํ์ ํ ์ ์๋ ์ต๋ ํฌ๋ฃจ ์ m
, ํฌ๋ฃจ๊ฐ ๋๊ธฐ์ด์ ๋์ฐฉํ๋ ์๊ฐ์ ๋ชจ์ ๋ฐฐ์ด timetable
์ด ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
n
โฆ 10t
โฆ 60m
โฆ 45timetable
์ ์ต์ ๊ธธ์ด 1์ด๊ณ ์ต๋ ๊ธธ์ด 2000์ธ ๋ฐฐ์ด๋ก, ํ๋ฃจ ๋์ ํฌ๋ฃจ๊ฐ ๋๊ธฐ์ด์ ๋์ฐฉํ๋ ์๊ฐ์ด HH:MM
ํ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.HH:MM
์ 00:01
์์ 23:59
์ฌ์ด์ด๋ค.์ฝ์ด ๋ฌด์ฌํ ์
ํ์ ํ๊ณ ์ฌ๋ฌด์ค๋ก ๊ฐ ์ ์๋ ์ ์ผ ๋ฆ์ ๋์ฐฉ ์๊ฐ์ ์ถ๋ ฅํ๋ค. ๋์ฐฉ ์๊ฐ์ HH:MM
ํ์์ด๋ฉฐ, 00:00
์์ 23:59
์ฌ์ด์ ๊ฐ์ด ๋ ์ ์๋ค.
n | t | m | timetable | answer |
---|---|---|---|---|
1 | 1 | 5 | ["08:00", "08:01", "08:02", "08:03"] | "09:00" |
2 | 10 | 2 | ["09:10", "09:09", "08:00"] | "09:09" |
1 | 1 | 5 | ["00:01", "00:01", "00:01", "00:01", "00:01"] | "00:00" |
๋์ ํ์ด
์๊ณ ๋ฆฌ์ฆ์ ํ์ ํ๋ค๋ฉด ๊ต์ฅํ ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ด๋, ์ค์ํ๊ฒ์
์ด๋ฐ ์ ๋ฐ ๋ฐฉ์์ ์๋ํ๋๋ผ ์ ๋จน์์ ใ
function solution(n, t, m, timetable) {
// ๊ณ์ฐ์ ์ฉ์ดํจ์ ์ํด ๋ชจ๋์ ์๊ฐ์ ๋ถ๋จ์๋ก ๋ณํ
timetable = timetable.map(a => {
const [hour,min] = a.split(":")
return (hour*60)+Number(min)
})
// ์๊ฐ ๋ณ ์ ๋ ฌ
timetable.sort((a,b) => a-b)
// ์๊ฐ
let time = 9*60 // 9์ ์ฒซ ์ฐจ
for(let i = 1 ; i <= n ; i ++) {
// ํ์น ๊ฐ๋ฅํ ์ฌ๋
const canRide = timetable.filter(a => a <= time).length
// ๋ง์ฐจ
if(i === n) {
// ํ์ผํ ์ฌ๋์ด ์ ์๋ณด๋ค ๊ฐ๊ฑฐ๋ ๋ง์๊ฒฝ์ฐ (๋๋ ๋ชปํ ใ
ใ
)
if(canRide >= m) {
// ํ์นํ๋ ๋ง์ง๋ง ์ฌ๋๋ณด๋ค 1๋ถ ๋น ๋ฅด๊ฒ
time = timetable[m-1]-1
}
// ๋ค์์ฐจ๊ฐ ๋จ์์๋ค๋ฉด
} else {
// m ๋ณด๋ค ๋ ๋ง์ ์ฌ๋์ด ํ ์ ์์ด๋ m ๋งํผ๋ง ํ
timetable.splice(0,canRide > m ? m : canRide)
time+=t
}
}
return String(Math.floor(time/60)).padStart(2,'0')+':'+String(Math.floor(time%60)).padStart(2,'0')
}