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