두 버전 번호 version1과 version2를 비교해야 한다고 가정합니다. version1> version2이면 1을 반환합니다. 그렇지 않으면 버전1 <버전2가 -1을 반환할 때; 그렇지 않으면 0을 반환합니다. 버전 문자열이 비어 있지 않고 숫자와 점(.) 문자만 포함한다고 가정할 수 있습니다. 점 문자는 소수점을 나타내지 않으며 숫자 시퀀스를 구분하는 데 사용됩니다. 예를 들어, 2.5는 "2.5" 또는 "버전 3의 중간"이 아니라 두 번째 1단계 개정의 다섯 번째 2단계 개정입니다.
버전 번호의 각 수준에 대한 기본 개정 번호는 0이라고 가정할 수 있습니다. 예를 들어 버전 번호 3.4는 첫 번째 및 두 번째 수준 개정 번호에 대해 3과 4의 개정 번호를 갖습니다. 세 번째 및 네 번째 레벨 개정 번호는 모두 0입니다.
따라서 입력이 version1 ="1.0.1" 및 version2 ="1"과 같으면 +1을 반환합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
version1_arr =version1의 경우 점으로 구분된 숫자 배열
-
version2_arr =version2의 경우 점으로 구분된 숫자 배열
-
0에서 최대 version1_arr 크기 및 version2_arr 크기의 i에 대해 -
-
v1 :=version1_arr[i] if i
-
v2 :=version2_arr[i] if i
-
v1> v2이면 1을 반환하고, 그렇지 않으면 v1
-
-
0 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
class Solution: def compareVersion(self, version1, version2): versions1 = [int(v) for v in version1.split(".")] versions2 = [int(v) for v in version2.split(".")] for i in range(max(len(versions1),len(versions2))): v1 = versions1[i] if i < len(versions1) else 0 v2 = versions2[i] if i < len(versions2) else 0 if v1 > v2: return 1 elif v1 <v2: return -1 return 0 ob1 = Solution() print(ob1.compareVersion("1.0.1","1.0"))
입력
"1.0.1" "1.0"
출력
1