๐Ÿš[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ] ์…”ํ‹€๋ฒ„์Šค

Chobbyยท2022๋…„ 4์›” 6์ผ
1

Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
28/345

ํ•ด๋‹น ๋ฌธ์ œ๋Š” yoon-dumbo๋‹˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค-์…”ํ‹€๋ฒ„์Šค-javascript ๊ฒŒ์‹œ๊ธ€์„ ๋ณด๊ณ  ์ฐธ๊ณ ํ•˜์—ฌ ํ’€์ด๋˜์—ˆ์Œ์„ ๋ฏธ๋ฆฌ ๋ฐํž™๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ค๋ช…

์…”ํ‹€๋ฒ„์Šค

์นด์นด์˜ค์—์„œ๋Š” ๋ฌด๋ฃŒ ์…”ํ‹€๋ฒ„์Šค๋ฅผ ์šดํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒ๊ต์—ญ์—์„œ ํŽธํ•˜๊ฒŒ ์‚ฌ๋ฌด์‹ค๋กœ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์นด์นด์˜ค์˜ ์ง์›์€ ์„œ๋กœ๋ฅผ 'ํฌ๋ฃจ'๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ์•„์นจ๋งˆ๋‹ค ๋งŽ์€ ํฌ๋ฃจ๋“ค์ด ์ด ์…”ํ‹€์„ ์ด์šฉํ•˜์—ฌ ์ถœ๊ทผํ•œ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ๋Š” ํŽธ์˜๋ฅผ ์œ„ํ•ด ์…”ํ‹€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ์šดํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

  • ์…”ํ‹€์€ 09:00๋ถ€ํ„ฐ ์ด nํšŒ t๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์—ญ์— ๋„์ฐฉํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ์…”ํ‹€์—๋Š” ์ตœ๋Œ€ m๋ช…์˜ ์Šน๊ฐ์ด ํƒˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์…”ํ‹€์€ ๋„์ฐฉํ–ˆ์„ ๋•Œ ๋„์ฐฉํ•œ ์ˆœ๊ฐ„์— ๋Œ€๊ธฐ์—ด์— ์„  ํฌ๋ฃจ๊นŒ์ง€ ํฌํ•จํ•ด์„œ ๋Œ€๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ํƒœ์šฐ๊ณ  ๋ฐ”๋กœ ์ถœ๋ฐœํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 09:00์— ๋„์ฐฉํ•œ ์…”ํ‹€์€ ์ž๋ฆฌ๊ฐ€ ์žˆ๋‹ค๋ฉด 09:00์— ์ค„์„ ์„  ํฌ๋ฃจ๋„ ํƒˆ ์ˆ˜ ์žˆ๋‹ค.

์ผ์ฐ ๋‚˜์™€์„œ ์…”ํ‹€์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ๊ท€์ฐฎ์•˜๋˜ ์ฝ˜์€, ์ผ์ฃผ์ผ๊ฐ„์˜ ์ง‘์š”ํ•œ ๊ด€์ฐฐ ๋์— ์–ด๋–ค ํฌ๋ฃจ๊ฐ€ ๋ช‡ ์‹œ์— ์…”ํ‹€ ๋Œ€๊ธฐ์—ด์— ๋„์ฐฉํ•˜๋Š”์ง€ ์•Œ์•„๋ƒˆ๋‹ค. ์ฝ˜์ด ์…”ํ‹€์„ ํƒ€๊ณ  ์‚ฌ๋ฌด์‹ค๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋„์ฐฉ ์‹œ๊ฐ ์ค‘ ์ œ์ผ ๋Šฆ์€ ์‹œ๊ฐ์„ ๊ตฌํ•˜์—ฌ๋ผ.

๋‹จ, ์ฝ˜์€ ๊ฒŒ์œผ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์‹œ๊ฐ์— ๋„์ฐฉํ•œ ํฌ๋ฃจ ์ค‘ ๋Œ€๊ธฐ์—ด์—์„œ ์ œ์ผ ๋’ค์— ์„ ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ํฌ๋ฃจ๋Š” ์ž ์„ ์ž์•ผ ํ•˜๋ฏ€๋กœ 23:59์— ์ง‘์— ๋Œ์•„๊ฐ„๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ค ํฌ๋ฃจ๋„ ๋‹ค์Œ๋‚  ์…”ํ‹€์„ ํƒ€๋Š” ์ผ์€ ์—†๋‹ค.

์ž…๋ ฅ ํ˜•์‹

์…”ํ‹€ ์šดํ–‰ ํšŸ์ˆ˜ n, ์…”ํ‹€ ์šดํ–‰ ๊ฐ„๊ฒฉ t, ํ•œ ์…”ํ‹€์— ํƒˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํฌ๋ฃจ ์ˆ˜ m, ํฌ๋ฃจ๊ฐ€ ๋Œ€๊ธฐ์—ด์— ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ์„ ๋ชจ์€ ๋ฐฐ์—ด timetable์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

  • 0 ๏ผœ n โ‰ฆ 10
  • 0 ๏ผœ t โ‰ฆ 60
  • 0 ๏ผœ m โ‰ฆ 45
  • timetable์€ ์ตœ์†Œ ๊ธธ์ด 1์ด๊ณ  ์ตœ๋Œ€ ๊ธธ์ด 2000์ธ ๋ฐฐ์—ด๋กœ, ํ•˜๋ฃจ ๋™์•ˆ ํฌ๋ฃจ๊ฐ€ ๋Œ€๊ธฐ์—ด์— ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ์ด HH:MM ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ํฌ๋ฃจ์˜ ๋„์ฐฉ ์‹œ๊ฐ HH:MM์€ 00:01์—์„œ 23:59 ์‚ฌ์ด์ด๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

์ฝ˜์ด ๋ฌด์‚ฌํžˆ ์…”ํ‹€์„ ํƒ€๊ณ  ์‚ฌ๋ฌด์‹ค๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ œ์ผ ๋Šฆ์€ ๋„์ฐฉ ์‹œ๊ฐ์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋„์ฐฉ ์‹œ๊ฐ์€ HH:MM ํ˜•์‹์ด๋ฉฐ, 00:00์—์„œ 23:59 ์‚ฌ์ด์˜ ๊ฐ’์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

ntmtimetableanswer
115["08:00", "08:01", "08:02", "08:03"]"09:00"
2102["09:10", "09:09", "08:00"]"09:09"
115["00:01", "00:01", "00:01", "00:01", "00:01"]"00:00"

ํ•ด์„ค ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

๋‚˜์˜ ํ’€์ด

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํŒŒ์•…ํ•œ๋‹ค๋ฉด ๊ต‰์žฅํžˆ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‚˜, ์ค‘์š”ํ•œ๊ฒƒ์€

  1. timetable ๋ฐฐ์—ด์€ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ์ 
  2. ํƒ‘์Šน์ด ๊ฐ€๋Šฅํ•ด๋„ ๊ฐ€์žฅ ๋Šฆ์€ ์‹œ๊ฐ„์— ํƒ‘์Šนํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ 

์ด๋Ÿฐ ์ €๋Ÿฐ ๋ฐฉ์‹์„ ์‹œ๋„ํ•˜๋Š๋ผ ์•  ๋จน์—ˆ์Œ ใ…œ

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')
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€