[프로그래머스 LV2] 롤케이크 자르기

Junyoung Park·2022년 11월 29일
0

코딩테스트

목록 보기
625/631
post-thumbnail

1. 문제 설명

롤케이크 자르기

2. 문제 분석

  • 왼쪽, 오른쪽에서 출발하는 각 누적합을 구한다. 형과 동생이 케이크를 자르는 단면 양 옆의 각 값이 동일할 때 카운트하자.

3. 나의 풀이

import Foundation

func solution(_ topping:[Int]) -> Int {
    var left = Array(repeating: 0, count: topping.count)
    var right = Array(repeating: 0, count: topping.count)
    var toppingSet = Set<Int>()
    for index in 0..<topping.count {
        let food = topping[index]
        toppingSet.insert(food)
        left[index] = toppingSet.count
    }
    toppingSet.removeAll()
    for index in stride(from: topping.count-1, to: -1, by: -1) {
        let food = topping[index]
        toppingSet.insert(food)
        right[index] = toppingSet.count
    }
    
    var answer = 0
    for index in 0..<topping.count-1 {
        if left[index] == right[index+1] {
            answer += 1
        }
    }
    return answer
}
profile
JUST DO IT

0개의 댓글