[Programmers] [Lv.1] [Swift] 예산

doyeonjeong_·2022년 8월 14일
0

프로그래머스

목록 보기
28/35
post-thumbnail

Hits

문제

예산

문제파악하기

  • 작은 예산부터 담아가며 예산을 초과하지 않을 때 까지 숫자를 세면 된다.

풀이

func solution(_ d:[Int], _ budget:Int) -> Int {
    var total = 0
    var count = 0
    let departments = d.sorted()
    
    for i in departments {
        total += i
        guard total <= budget else { break }
        count += 1 // 예산보다 적으면 count
    }
    
    return count
}

🤔 FEEDBACK

  • 너무 단순하게 푼 건 아닌가? 싶을정도로 코드는 단순한데 생각보다 오래걸렸다.
  • 처음엔 array로 접근하고 popLast를 이용해서 풀고싶었다.
  • 시간복잡도가 O(1)이라서 .. 그런데 로직을 시간내에 생각해내지 못했다.
  • 그래서 또복문(또 반복문 이라는 뜻) ...

다른 풀이

import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    var money = budget
    
    let result = d.sorted().filter {
        if (money - $0) >= 0 {
            money = money - $0
            return true
        } else {
            return false
        }
    }.count
    
    return result
}
  • 코드작성자
  • 개인적으로 좋다고 생각하는 코드
  • 얼른 filter같은 고차함수 사용에 익숙해지고싶다 ..
profile
블로그 이사중 🚚 byukbyak.tistory.com

0개의 댓글