[코딜리티] 레슨 5 - PassingCars (Swift)

devapploper·2024년 8월 12일
public func solution(_ A : inout [Int]) -> Int {
    let directions = A.map(TravelDirection.init)
    var (eastTotal, passingPairs) = (0, 0)
    
    for direction in directions {
        switch direction {
            case .east:
                eastTotal += 1
            case .west:
                passingPairs += eastTotal
            case nil:
                continue
        }

        if passingPairs > 1000000000 {
            return -1
        }
    }
    return passingPairs
}

public enum TravelDirection: Int {
    case east, west
}

배열을 순회하면서 동쪽으로 가는 차량을 발견한 경우 1씩 증가시키다가, 서쪽으로 가는 차량을 발견하면 그동안 축적한 동쪽으로 가는 차량 수를 더해서 짝의 갯수를 기록한다. 배열의 끝까지 이를 반복하고 짝의 갯수을 반환한다. 만약 기준 숫자보다 짝의 숫자가 넘을 시에는 바로 -1을 반환한다.

(+이번엔 우아한 코드 작성을 시도해보았다)

profile
iOS, 알고리즘, 컴퓨터공학에 관련 포스트를 정리해봅니다

0개의 댓글