ios 31일차

bin·2026년 2월 10일

오전 알고리즘 문제 풀이

기존 로직

기존 로직을 사용하면 1,2,3,5,6번 케이스에서 시간 초과 오류가 발생한다. 아마 for문을 중첩하여 돌며 정렬하도록 구현해두었기에 시간이 오래걸리는 것 같다.

import Foundation

func solution(_ numbers:[Int]) -> String {
    
    var result = ""
    
    var stringNumbers: [String] = []
    for number in numbers {
        stringNumbers.append("\(number)")
    }
    
    for i in 0..<stringNumbers.count {
        for j in (i + 1)..<stringNumbers.count {
            let a = stringNumbers[i] + stringNumbers[j]
            let b = stringNumbers[j] + stringNumbers[i]
            
            if b > a {
                stringNumbers.swapAt(i, j)
            }
        }
    }
    
    for string in stringNumbers {
        result += string
    }
    
    if result.hasPrefix("0") {
        return "0"
    }
    
    return result
}

변경 후 로직

시간 초과 문제를 해결하기 위해 Swift의 sort를 사용하여 구현했다.

// 변경 전
for i in 0..<stringNumbers.count {
        for j in (i + 1)..<stringNumbers.count {
            let a = stringNumbers[i] + stringNumbers[j]
            let b = stringNumbers[j] + stringNumbers[i]
            
            if b > a {
                stringNumbers.swapAt(i, j)
            }
        }
    }

// 변경 후
stringNumbers.sort {
	return $0 + $1 > $1 + $0
}

0개의 댓글