Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 알 수 없는 숫자를 대체해 만들 수 있는 가장 늦은 유효 시간 찾기


시간 문자열에 '?'처럼 알 수 없는(숨겨진) 자릿수가 포함되어 있을 때, 이를 적절한 숫자로 대체하여 만들 수 있는 가장 늦은 유효 시간을 구해야 하는 경우가 있습니다. 이를 위해서는 먼저 숨겨진 자릿수를 찾아내는 메서드를 정의한 뒤, 각 자릿수의 위치(인덱스)에 따라 올바른 값으로 변환하면 됩니다.

예제

다음은 그 구현 예시입니다.

def find_latest_time(my_time):
   my_time = list(my_time)
   for i in range(len(my_time)):
      if my_time[i] == "?":
         if i == 0: my_time[i] = "2" if my_time[i+1] in "?0123" else "1"
         elif i == 1: my_time[i] = "3" if my_time[0] == "2" else "9"
         elif i == 3: my_time[i] = "5"
         else: my_time[i] = "9"
   print("".join(my_time))

my_str = '0?:?3'
print("The time is :")
print(my_str)
print("The latest valid time is : ")
find_latest_time(my_str)

출력 결과

The time is :
0?:?3
The latest valid time is :
09:53

동작 원리

  • 'find_latest_time'이라는 이름의 메서드를 정의하고, 시간 문자열을 매개변수로 전달받습니다.

  • 문자열을 리스트로 변환하여 각 자릿수를 개별적으로 다룰 수 있도록 합니다.

  • 리스트를 순회하면서 '?'로 표시된 알 수 없는 자릿수를 찾아냅니다.

  • 인덱스가 0, 1, 3인 경우에는 해당 위치에 맞는 특정 값으로 대체합니다.

  • 메서드 외부에서 시간 문자열을 정의하고 콘솔에 출력합니다.

  • 이 문자열을 인자로 넘겨 메서드를 호출합니다.

  • 최종 결과가 콘솔에 출력됩니다.

자릿수별 대체 규칙

24시간제(HH:MM) 형식에서 각 자리가 가질 수 있는 최댓값은 다음과 같이 결정됩니다.

  • 시간 십의 자리(인덱스 0): 바로 뒤의 자리가 '?', '0', '1', '2', '3' 중 하나라면 '2'를, 그렇지 않으면 '1'을 사용합니다.

  • 시간 일의 자리(인덱스 1): 앞의 자리가 '2'라면 최대 '3'까지만 가능하고, 그렇지 않으면 '9'를 사용합니다.

  • 분의 십의 자리(인덱스 3): 분은 00~59 범위이므로 항상 '5'를 사용합니다.

  • 분의 일의 자리(인덱스 4): 항상 '9'를 사용합니다.

예를 들어 입력이 '0?:?3'이라면 시간 부분은 '09', 분 부분은 '53'이 되어, 최종적으로 '09:53'이라는 가장 늦은 유효 시간이 도출됩니다.