hh:mm 형식의 시간을 나타내는 문자열 s가 있다고 가정합니다. s의 일부 숫자는 숨겨져 있습니다(?로 표시됨). 24시간제를 고려하면 유효한 시간은 00:00~23:59입니다. 숨겨진 숫자를 교체하여 시간에서 얻을 수 있는 최신 유효 시간을 찾아야 합니다.
따라서 입력이 s="1?:?5"와 같으면 숫자 '2'로 시작하는 최신 시간이 23이고 숫자 '0'으로 끝나는 최신 분이 13:55가 됩니다. 50.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
ans :=새 목록
-
max_time :=['2','3',':','5','9']
-
max_time[0] <'2'이면
-
max_time[1] :='9'
-
-
'9'>=max_time[1]> '3'이면
-
max_time[0] :='1'
-
-
(max_time, s)의 각 쌍(mx, digit)에 대해 수행
-
숫자가 한 자리인 경우
-
ans의 끝에 숫자 삽입
-
-
그렇지 않으면
-
ans의 끝에 mx 삽입
-
-
-
ans에 있는 문자를 결합하고 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(s): ans = [] max_time = ['2','3',':','5','9'] if max_time[0] < '2': max_time[1] = '9' if '9' >= max_time[1] > '3': max_time[0] = '1' for mx,digit in zip(max_time,s): if digit.isdigit(): ans.append(digit) else: ans.append(mx) return ''.join(ans) s= "1?:?5" print(solve(s))
입력
"1?:?5"
출력
13:55