[LeetCode] 1736. Latest Time by Replacing Hidden Digits

Chobby·2025년 10월 10일
1

LeetCode

목록 보기
591/650

😎풀이

  1. 0시부터 23시 정의
  2. 0분부터 59분 정의
  3. :를 기준으로 현재 시간과 분에 해당하는 문자열 분리
  4. 시간 및 분 순회
    4-1. 현재 문자가 ? 라면 자릿수 비교 생략
    4-2. 현재 문자가 ?가 아니면서 자릿수가 다르다면 다음 수 탐색
  5. 확인된 가장 늦은 시간 반환환
function maximumTime(time: string): string {
    const hour = Array.from({ length: 24 }, (_, idx) => idx)
    const min = Array.from({ length: 60 }, (_, idx) => idx)
    const [curHour, curMin] = time.split(":")
    let maxHour = ''
    let maxMin = ''
    for(const h of hour) {
        const strHour = String(h).padStart(2, '0')
        let isValid = true
        for(let i = 0; i < strHour.length; i++) {
            if(curHour[i] === '?') continue
            if(curHour[i] !== strHour[i]) {
                isValid = false
                break
            }
        }
        if(!isValid) continue
        maxHour = strHour
    }
    for(const m of min) {
        const strMin = String(m).padStart(2, '0')
        let isValid = true
        for(let i = 0; i < strMin.length; i++) {
            if(curMin[i] === '?') continue
            if(curMin[i] !== strMin[i]) {
                isValid = false
                break
            }
        }
        if(!isValid) continue
        maxMin = strMin
    }
    return `${maxHour}:${maxMin}`
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글