반응형
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/72414
정답 풀이 코드
function solution(play_time, adv_time, logs) {
const pt = calculateTime(play_time);
const at = calculateTime(adv_time);
const times = new Array(pt+1).fill(0)
logs.forEach((log) => {
const [start, end] = log.split('-');
const ws = calculateTime(start)
const we = calculateTime(end)
times[ws]++;
times[we]--;
});
//해당 시간
for(let i=1; i<=pt; i++){
times[i] += times[i-1];
}
//재생 시간의 누적
for(let i = 1; i <= pt; i++){
times[i] += times[i-1];
}
let sum = times[at-1]
let idx = 0;
for(let i=at-1; i<pt; i++){
if(sum < times[i] - times[i-at]){
sum = times[i] - times[i-at];
idx = i - at + 1;
}
}
return formatterTime(idx)
function calculateTime(time){
const HHMMSS = time.split(':');
const amount = HHMMSS[0] *3600 + HHMMSS[1] * 60 + HHMMSS[2] *1
return amount
}
function formatterTime(time){
let HH = time / 3600 >> 0;
let MM = (time / 60 >> 0) % 60
let SS = time % 60
HH = HH > 9 ? HH : '0' + HH
MM = MM > 9 ? MM : '0' + MM
SS = SS > 9 ? SS : '0' + SS
return `${HH}:${MM}:${SS}`
}
}
내 풀이 코드
function solution(play_time, adv_time, logs) {
let pt = transTime(play_time)
let at = transTime(adv_time)
let times = new Array(pt+1).fill(0)
for(let log of logs){
let [st, et] = log.split('-')
times[transTime(st)] += 1
times[transTime(et)] -= 1
}
for(let i=1; i<pt+1; i++){
times[i] += times[i-1]
}
for(let i=1; i<pt+1; i++){
times[i] += times[i-1]
}
let max = times[at-1];
let answer = 0;
for(let i=at; i<pt+1; i++){
let temp = times[i] - times[i-at]
if(max < temp){
answer = i-at+1
max = temp
}
}
return formatTime(answer)
function transTime(str){
let [h,m,s] = str.split(':')
let amount = h*3600 + m * 60 + s*1
return amount
}
function formatTime(time){
let hh = parseInt(time/3600)
let mm = parseInt(time/60)%60
let ss = parseInt(time%60)
hh = String(hh).padStart(2, '0')
mm = String(mm).padStart(2, '0')
ss = String(ss).padStart(2, '0')
return `${hh}:${mm}:${ss}`
}
}
반응형
'알고리즘 문제 풀기' 카테고리의 다른 글
js 순열과 조합 구하는 식 정리 (0) | 2024.06.17 |
---|---|
프로그래머스: 표현 가능한 이진트리 - javascript(이진트리, 포화이진트리) (0) | 2024.06.17 |
프로그래머스: 기둥과 보 설치 (빡센 구현) (1) | 2024.05.30 |
프로그래머스: 양과 늑대 - javascript(back이 가능한 dfs) (0) | 2024.05.29 |
프로그래머스: 표 편집 - javascript(양방향 연결리스트) (0) | 2024.05.21 |