😎풀이

해당 문제는 버전을 비교하여 1, -1, 0으로 반환하는 문제이다.

sort()메서드에 콜백으로 주기 좋은 함수인 셈

풀이 과정은 다음과 같다.

  1. .을 기준으로 각 버전 분리
  2. 분리된 배열 중 최대길이 만큼 반복 순회
  3. 각 버전을 비교한다. 이 때 버전이 생략된 배열의 경우 0으로 취급하여 비교한다.
function compareVersion(version1: string, version2: string): number {
    // . 을 기준으로 분리 후 모두 숫자형 변환
    const splitedV1 = version1.split(".").map(Number)
    const splitedV2 = version2.split(".").map(Number)
    // 두 버전 중 버전의 최대 길이만큼 반복
    const maxLen = Math.max(splitedV1.length, splitedV2.length)
    for(let i = 0; i < maxLen; i++) {
        // 현재 버전이 없다면 0으로 취급
        const curV1 = splitedV1[i] ?? 0
        const curV2 = splitedV2[i] ?? 0

        if(curV1 > curV2) return 1
        if(curV2 > curV1) return -1
    }

    return 0
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글