์ด๋ฒ์ ์๋กญ๊ฒ ๋ ๋ฒจ 2 ๋ฌธ์ ๊ฐ ์ฌ๋ผ์๊ธธ๋ ๋
๋ค ํ์ด๋ณด๊ธฐ๋ก ํ๋ค.
์ญ์ ํ๊ธฐ ํ๋ฒ ์ํค๊ณ ์ถ์ ๋๋ ์ฝํ
ํ๊ธฐ๋งํ๊ฒ ์๋ ๊ฒ ๊ฐ๊ธฐ๋..?
https://school.programmers.co.kr/learn/courses/30/lessons/155651
๊ทธ๋ฌ๋๊น ์ด๋ฐ ํํ๋ค. ์ ์ค์ ํ๊ฒ ๋๋ฉด ํด์ค๋ ํด์ผ๋๋ ๊ฒ์ ๋น์ฐ์ง์ฌ. ๊ทธ๋ฐ๋ฐ ํด์คํ๊ณ ๋ฐ๋ก ์ ์ฅ์ด ๊ฐ๋ฅํ๊ฒ ์๋๋ผ 10๋ถ์ ์ธํฐ๋ฒ์ด ์ฃผ์ด์ง๋ค๋ ์๋ฆฌ๋ค.
book_time ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ณด๋ฉด [["15:00","17:00"], ["16:40", "18:20"] ... ]
์ธ ๋ถ๋ถ์ ๊ฒฐ๊ณผ๊ฐ 3๊ฐ ์ฆ ์ต์ ๊ฐ์ค์ ์๊ฐ 3์ด๋ผ๊ณ ํ๋ค.
์ฐ์ ์ด ๋ฐฐ์ด๋ค์ด ์๊ฐ๋ ์์ผ๋ก ๋์ด๋์ง ์์์์ผ๋ก ์๊ฐ๋๋ณ๋ก ๋๊ณ ์๊ฐ์ ํด๋ณด๋ฉด, 14:10 ~ 19:20, 14:20 ~ 15:20, 15:00 ~ 17:00 ์ ์๊ฐ๋๊ฐ ๊ฒน์น๋ ์ต์ 3๊ฐ์ ๋ฐฉ์ด ํ์ํ๋ค. ๊ทธ ํ 16:40 ~ ๋ฐฉ์ 15:20์ ์ด๋ฏธ ๋์จ ๋ฐฉ์ด ์์ผ๋ ๊ทธ ๋ฐฉ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ , 18:20 ~ ๋ฐฉ์ 14:10 or 15:00 ๋ฐฉ์ด ์ด๋ฏธ ๋์ ์์ผ๋ ๋ ์ค ํ๋๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์ด๋ฐ ํ์์ ์๊ณ ๋ฆฌ์ฆ์ด ๊ตฌํ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์๊ฐ ์๋ค.
์ฐ์ ์๊ฐ ๊ณ์ฐ์ ์ํด์ string
ํ์์ ๋ฐฐ์ด ๋ฐ์ดํฐ๋ฅผ number
๋ก ์ ํํ๊ณ ๋์์ ์
์ ๋ถ
์ผ๋ก ๋๋ ๋ณผ ์๊ฐ์ด๋ค. ๊ทธ๋์ ๊ธฐ์กด์ ์ ๋ต์ ์ํ๋ solution ํจ์๊ฐ ์๋ ๋ณํ์ ํด์ฃผ๋ ํจ์๋ฅผ ํ๋ ๋ง๋ค์ด๋ณด์.
const siAndBun = (time) => {
const [si, bun] = time.split(":").map((x) => +x);
return si * 60 + bun;
}
time ์ด๋ผ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ์์ ๋ถ์ผ๋ก ๋๋ ์ ์ซ์ํ์ผ๋ก ๋ณํํด์ฃผ๋ siAndBun
ํจ์๋ฅผ ์์ฑํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ์์ ๋ถ์ ๋ฐ์์ผ ๋๋๋ฐ ํด๋น 2์ฐจ์ ๋ฐฐ์ด์ ์์ชฝ์ ๋ณด๊ฒ ๋๋ฉด ๋ฌธ์์ด๋ก ๊ตฌ๋ถ์ง์ด ์์ผ๋ :
๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ ์ Number ํํ๋ก ํ๋ณํ ํด์ค์ผ ํ๋ค.
๊ทธ๋์ [์(si), ๋ถ(bun)] ํํ์ ์๋ก์ด ์ซ์ ๋ฐฐ์ด๋ก ๋ฐํํ๊ธฐ ์ํด์ 2๋ฒ์งธ ์ค๊ณผ ๊ฐ์ด ์์ฑ์ ํ์๋ค.
๊ทธ ํ ์๊ฐ ๊ณ์ฐ์ ์ฉ์ดํ๊ธฐ ์ํด ๋ถ ํํ๋ก ๋ฐ๊ฟ์ค๋ค.
function solution(book_time) {
const timeArray = Array.from({length: siAndBun('23:59') + 10}, () => 0);
book_time.map((time, idx) => {
const [checkIn, checkOut] = time;
let start = siAndBun(checkIn);
const end = siAndBun(checkOut) + 10;
for(start; start <= end; start++) {
timeArray[start]++;
}
});
return Math.max(...timeArray) ;
}
์์์ ๋ง๋ ํจ์๋ฅผ ๊ฐ์ง๊ณ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ๋ค. ๋จผ์ ์ด solution
์ด๋ผ๋ ํจ์๋ ๋ฌธ์ ์์ ์ ๊ณตํ book_time
์ด๋ผ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋ฆฌ๊ณ timeArray๋ผ๋ ๋ณ์๋ก Array.from
๋ฉ์๋์ ์ต๋ ๊ธธ์ด๋ฅผ ๊ตฌํ์ฌ ์์ ๋ณต์ฌ๋ฅผ ์งํํ๋ ์ญํ ์ ๋ง๋ค์ด๋ธ๋ค.
๊ทธ๋ฆฌ๊ณ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ book_time์ map์ ๋๋ ค, 2์ฐจ์ ๋ฐฐ์ด์ depth level 2์ ๋ฐฐ์ด์ 0๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ ๋ค์ด๊ฐ๊ณ 1๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ ๋์ค๋ ๋ฐฐ์ด์ด๋ผ๋ ๊ฒ์ ๋ง๋ค๊ณ ํด๋น ๋ณ์๋ค์ ์์์ ๋ง๋ siAndBun
์ผ๋ก ๋ถ์ผ๋ก ๋ณํํ๋ค.
๊ทธ ํ ์์์์ ๋๊น์ง ์์์ ๋งํผ ์ฆ๊ฐ์ํจ ํจ์๋ฅผ ๊ฐ์ง๊ณ ์ต์์ ๊ฐ์ค ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ 10๋ถ ์ธํฐ๋ฒ์ ๊ณ ๋ คํ์ฌ + 10์ ํ์๋๋ฐ ๋ถ๋ถ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ ์ด์ ๋ ์ด๋ฌํ๋ค. 10์ 10๋ถ์ ์ฒดํฌ์์์ ํ๊ณ 10์ 20๋ถ์ ๋ค์ด๊ฐ ์์ ์ด๋ค. +10์ ํ๊ฒ ๋๋ฉด ์ฒดํฌ์ธ ์๊ฐ์ด ๋ค๊ฐ์๋ ์์ง ์ฒญ์๊ฐ ๋๋์ง ์์, 10์ 10๋ถ ๋ฐฉ์ ์ด์ฉ์ ๋ชปํ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ์ด 2๊ฐ ๋์ ๊ธฐ๋๊ฐ๊ณผ ๋ค๋ฅด๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค. ์ธ๋ถ์ ์ผ๋ก ์ดํดํ๋ค๋ฉด ์ด 10๋ถ์ด 9๋ถ 59์ด์ 10๋ถ๊ณผ 10๋ถ 59์ด๊น์ง์ 10๋ถ์ ์ ์๋ก ๊ตฌ๋ถ๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋ง์ฝ ์๋๋ผ๋ฉด ๋๊ธ์ ๋ฌ์์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค!
๊ทธ๋์ +9๋ก ํ๊ฒ ๋๋ค๋ฉด ํ ์คํธ 2๋ฒ๋ ํด๊ฒฐ์ด ๋๋ค.