๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ์œ ์—ฐ๊ทผ๋ฌด์ œ-js

by ๋‰ด์ชผ๋ฏธ 2026. 3. 15.

 

 https://school.programmers.co.kr/learn/courses/30/lessons/388351

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๐Ÿ’ก ๋ฌธ์ œ ์ ‘๊ทผ๋ฐฉ์‹

โœ๏ธ Point

์ด ๋ฌธ์ œ๋Š” ๊ฐ ์ง์›๋งˆ๋‹ค 7์ผ๊ฐ„์˜ ์ถœ๊ทผ ๊ธฐ๋ก์„ ํ™•์ธํ•ด์„œ,
ํ‰์ผ(์›”~๊ธˆ)์—๋งŒ ํฌ๋ง ์ถœ๊ทผ ์‹œ๊ฐ๋ณด๋‹ค 10๋ถ„ ์ด๋‚ด๋กœ ๋„์ฐฉํ–ˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ ๋ณด๋ฉด ๋‹จ์ˆœํžˆ 

ํฌ๋ง์‹œ๊ฐ„ + 10 >= ์‹ค์ œ์ถœ๊ทผ์‹œ๊ฐ„

์ด๋ ‡๊ฒŒ ๋น„๊ตํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋ง ์ถœ๊ทผ ์‹œ๊ฐ์ด 855๋ผ๋ฉด,
10๋ถ„ ๋’ค๋Š” 865๊ฐ€ ์•„๋‹ˆ๋ผ 905 ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ด ๋ฌธ์ œ๋Š” HHMM ํ˜•์‹์˜ ์‹œ๊ฐ„์„ ๋‹จ์ˆœ ์ˆซ์ž๋กœ ๋”ํ•˜๋ฉด ์•ˆ ๋˜๊ณ ,
๋ถ„ ๋‹จ์œ„๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋น„๊ตํ•ด์•ผ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

 

์™œ ์‹œ๊ฐ„ + 10์œผ๋กœ ํ’€๋ฉด์•ˆ๋ ๊นŒ?

 

์ด ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‹ค์ˆ˜ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:

855 + 10 = 865
 

ํ•˜์ง€๋งŒ 865๋ผ๋Š” ์‹œ๊ฐ„์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ๋Š” 8์‹œ 55๋ถ„ + 10๋ถ„ = 9์‹œ 5๋ถ„, ์ฆ‰ 905๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ด์œ  ๋•Œ๋ฌธ์— HHMM ํ˜•ํƒœ๋Š” ์ˆซ์ž์ฒ˜๋Ÿผ ๋ฐ”๋กœ ๋”ํ•˜๋ฉด ์•ˆ ๋˜๊ณ ,
๋ฐ˜๋“œ์‹œ ๋ถ„ ๋‹จ์œ„๋กœ ๋ฐ”๊ฟ”์„œ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์•„์ด๋””์–ด

์ด๋ฌธ์ œ๋Š” ์ง์›๋งˆ๋‹ค 

  • 1. ์›๋ž˜ ์ถœ๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์žˆ๊ณ 
  • ๊ทธ ์‹œ๊ฐ„๋ณด๋‹ค 10๋ถ„๊นŒ์ง€๋งŒ ๋Šฆ์–ด๋„ ์ธ์ •
  • ํ† , ์ผ์š”์ผ์€ ๊ฒ€์‚ฌ ์•ˆํ•จ
  • ์ผ์ฃผ์ผ ๊ธฐ๋ก์„ ๋ณด๊ณ  
  • ํ‰์ผ์— ํ•˜๋ฃจ๋ผ๋„ ๋Šฆ์œผ๋ฉด ํƒˆ๋ฝ
  • ๋๊นŒ์ง€ ๋‹คํ†ต๊ณผํ•˜๋ฉด ์„ ๋ฌผ ๋ฐ›๋Š” ์‚ฌ๋žŒ 1๋ช… ์ถ”๊ฐ€

์ฝ”๋“œ

function solution(schedules, timelogs, startday) {
    let answer = 0;

    const toMinutes = (time) => {
        const h = Math.floor(time / 100); //์‹œ๋กœ ๋งŒ๋“ค๊ธฐ ์˜ˆ) 845๋ฉด 845/100=8.45 -> Math.floor(8.45) = 8
        const m = time % 100; // ๋ถ„์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์˜ˆ) 845 % 100 = 45 -> 45๋ถ„
        return h * 60 + m; //์‹œ๋ฅผ ๋ถ„์œผ๋กœ ๋ฐ”๊พธ๊ณ  ๊ฑฐ๊ธฐ์— ๋ถ„์„ ๋”ํ•ด ์ด ๋ช‡๋ถ„์ธ์ง€ ๊ณ„์‚ฐ ->  8* 60 +45 = 525
    };

    for (let i = 0; i < schedules.length; i++) {
        let currentDay = startday;
        let isValid = true;

        const limit = toMinutes(schedules[i]) + 10;

        for (let j = 0; j < timelogs[i].length; j++) {
            if (currentDay >= 1 && currentDay <= 5) {
                const logTime = toMinutes(timelogs[i][j]);

                if (logTime > limit) {
                    isValid = false;
                    break;
                }
            }

            currentDay++;
            if (currentDay > 7) currentDay = 1;
        }

        if (isValid) answer++;
    }

    return answer;
}

 


์ด ๋ฌธ์ œ์—์„œ ์•Œ์•„์•ผ ํ•  ๋ฉ”์„œ๋“œ / ๋ฌธ๋ฒ•

Math.floor()

์†Œ์ˆ˜์  ์•„๋ž˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์ •์ˆ˜ ๋ถ€๋ถ„๋งŒ ๋‚จ๊ธฐ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ์—์„œ๋Š” HHMM ํ˜•์‹์—์„œ ์‹œ(hour)๋ฅผ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Math.floor(8.9); // 8

 

๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž %

๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ์—์„œ๋Š” HHMM ํ˜•์‹์—์„œ ๋ถ„(minute)์„ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

855 % 100; // 55