๊ฐ์ธ์ ์ผ๋ก ํ๋ก๊ทธ๋๋จธ์ค์ ์๋ ๊ณผ์ ์งํํ๊ธฐ ๋ฌธ์ ๋ ๋น์ทํ๋ค๊ณ ๋๊ผ์ต๋๋ค
์คํฐ๋์ ๋ถ์ ํ์ด ๋ฐฉ๋ฒ์ด ์ธ์๊น์๋๋ฐ
๊ทธ ํ์ด๋ฅผ ์ด ๋ฌธ์ ์ ์ ์ฉํด๋ณด๋ ค๊ณ ํ์ด์
1. ์์ฝ ์๊ฐ๋ค์ ๋ชจ๋ ๋ถ๋จ์๋ก ๋ณํ, ์์ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ์ต๋๋ค.
2. ๋ฐฐ์ด๋ค์ ์ํํ๋ฉด์
2-1. room_stack(์ฌ์ฉ ์ค์ธ ๋ฐฉ๋ค์ ์ข ๋ฃ์๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๋ฐฐ์ด)์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํฉ๋๋ค
2-2. ํ์ฌ ์์ฝ ์์ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ข ๋ฃ๋ ๋ฐฉ์ด ์์ผ๋ฉด, ์ข ๋ฃ๋ ๋ฐฉ์ popํฉ๋๋ค
2-3. ํ์ฌ ์์ฝ์ ์ข ๋ฃ์๊ฐ์ room_stack์ pushํฉ๋๋ค
2-4. room_cnt์ room_stack์ length๋ฅผ ๋น๊ตํด์ ํฐ ๊ฐ์ ์ ์ฅํฉ๋๋ค
์ฌ์ค room_stack์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ ๊ฒ๋ณด๋ค
์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ๋๊ฒ ์๊ฐ๋ณต์ก๋ ์ธก๋ฉด์์ ๋ ๋์ ๊ฒ ๊ฐ์๋๋ฐ
๊ตฌํํ๊ธฐ๊ฐ ๋ฒ๊ฑฐ๋ก์์ ๊ทธ๋ฅ sortํจ์๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
function string_to_number(time_string){
const [hours, minutes]= time_string.split(':').map(Number);
return hours*60+minutes;
}
function solution(book_time){
//์๊ฐ์ ๋ถ๋จ์๋ก ๋ณํํ ๋ค์, ์ข
๋ฃ์๊ฐ์๋ 10์ ๋ํด์ค(์ฒญ์์๊ฐ)
//์์์๊ฐ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
const converted_book_time=book_time.map(([start_time, end_time])=>{
return [string_to_number(start_time), string_to_number(end_time)+10]
}).sort((a,b)=>a[0]-b[0]);
let room_cnt=0;
//์ฌ์ฉ ์ค์ธ ๋ฐฉ์ ์ข
๋ฃ ์๊ฐ์ ์ ์ฅํ ๋ฐฐ์ด
const room_stack=[];
//์ ๋ ฌ๊น์ง ๋ง์น ๋ฐฐ์ด์ ์ํ
for([current_st, current_et] of converted_book_time){
//์ฌ์ฉ ์ค์ธ ๋ฐฉ(์ข
๋ฃ์๊ฐ์ด ์ ์ฅ๋์ด ์์)์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
room_stack.sort((a,b)=>b-a);
//ํ์ฌ ์์ฝ ์์ ์๊ฐ ๊ธฐ์ค์ผ๋ก ๊ธฐ์กด ๋ฐฉ๋ค ์ค์ ์ข
๋ฃ๋ ๋ฐฉ์ด ์์ผ๋ฉด pop
if(current_st>=room_stack[room_stack.length-1]){
room_stack.pop();
}
//ํ์ฌ ์์ฝ์ ์ข
๋ฃ ์๊ฐ push
room_stack.push(current_et);
//room_cnt์ room_stack์ ํฐ ๊ฐ์ ์ ์งํจ
room_cnt = Math.max(room_cnt, room_stack.length);
}
return room_cnt;
}
'๐ง ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ JS (1) | 2024.01.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌด์ธ๋ ์ฌํ JS (0) | 2024.01.06 |
[ํ๋ก๊ทธ๋๋จธ์ค]๋ฏธ๋ก ํ์ถ JS (2) | 2024.01.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํผ์์ ํ๋ ํฑํํ JS (1) | 2024.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋น๊ตฌ ์ฐ์ต JS (0) | 2024.01.03 |