Leetcode Java Compare Version Numbers
업데이트:
문제
코드
class Solution {
public int compareVersion(String version1, String version2) {
String[] splitVersion1 = version1.split("\\.");
String[] splitVersion2 = version2.split("\\.");
for (int idx = 0; idx < splitVersion1.length || idx < splitVersion2.length; idx++) {
int int1 = idx < splitVersion1.length ? Integer.parseInt(splitVersion1[idx]) : 0;
int int2 = idx < splitVersion2.length ? Integer.parseInt(splitVersion2[idx]) : 0;
if (int1 > int2) {
return 1;
} else if (int1 < int2) {
return -1;
}
}
return 0;
}
}
결과
설명
- 주어진 문자열 version1과 version2은 숫자열과 점(.) 만 포함된 버전 표기법으로, 어느 문자열의 버전이 더 높은지에 따라 결과를 반환하는 문제이다.
- version1의 버전이 높으면 1을, version2의 버전이 높으면 -1을, 동일하면 0을 주어진 문제의 결과로 반환한다.
-
version1과 version2를 점(.)을 구분자로 배열로 변경하여 각자 splitVersion1, splitVersion2에 넣어준다.
- splitVersion1과 splitVersion2 중 가장 값이 많이 들어가 있는 배열 기준으로 반복을 수행하여 높은 버전을 확인한다.
- 각 버전 중 하위 버전 값이 없을(배열의 크기가 더 작은) 경우, 0으로 비교를 수행한다.
- version1의 부분 버전(splitVersion1의 idx번째 숫자) 값이 높을 경우, 1을 주어진 문제의 결과로 반환한다.
- version2의 부분 버전(splitVersion2의 idx번째 숫자) 값이 높을 경우, -1을 주어진 문제의 결과로 반환한다.
- 반복이 완료되면 동일한 버전이므로, 0을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기