문제 설명
function solution(events, threshold, cooldownMs)를 작성하세요. 입력과 출력은 모두 JSON으로 표현 가능한 값입니다. 입력 배열과 객체를 직접 변경하면 안 돼요. 외부 라이브러리, 네트워크 요청, 비동기 함수는 사용할 수 없어요. events:{timestamp:nonnegative integer,ok:boolean}[]는 시각 비감소 순서. threshold:positive integer, cooldownMs:nonnegative integer. 처음 closed, 실패수0. openUntil>현재시각이면 요청 거부, 상태·실패수·만료는 유지. 만료 시각 이상이면 closed·실패수0으로 복구 후 요청 수락. 수락된 성공은 실패수0, 실패는 +1. threshold에 도달하면 현재시각+cooldownMs까지 open. 이벤트별 {accepted,state:'open'|'closed'}(처리 직후 상태) 반환. cooldownMs=0도 가능. 입력 범위: 각 입력 배열은 최대 50,000개 항목, 문자열은 최대 1,000자입니다. 숫자는 유한한 값이며, 정수와 합산 결과는 JavaScript의 안전한 정수 범위 안에 있습니다. 그 외 자료형과 유효성 조건은 위 규칙을 따릅니다.
입출력 예시
예시 1
함수 인자
[
[
{
"timestamp": 0,
"ok": false
},
{
"timestamp": 1,
"ok": false
},
{
"timestamp": 2,
"ok": true
},
{
"timestamp": 11,
"ok": true
}
],
2,
10
]반환값
[
{
"accepted": true,
"state": "closed"
},
{
"accepted": true,
"state": "open"
},
{
"accepted": false,
"state": "open"
},
{
"accepted": true,
"state": "closed"
}
]예시 2
함수 인자
[
[
{
"timestamp": 0,
"ok": false
},
{
"timestamp": 10,
"ok": false
},
{
"timestamp": 20,
"ok": true
}
],
1,
10
]반환값
[
{
"accepted": true,
"state": "open"
},
{
"accepted": true,
"state": "open"
},
{
"accepted": true,
"state": "closed"
}
]예시 3
함수 인자
[
[
{
"timestamp": 0,
"ok": false
},
{
"timestamp": 10,
"ok": false
},
{
"timestamp": 10,
"ok": true
}
],
1,
10
]반환값
[
{
"accepted": true,
"state": "open"
},
{
"accepted": true,
"state": "open"
},
{
"accepted": false,
"state": "open"
}
]