Skip to content

[Algorithm] 귤 고르기 #30

Closed
Closed
@hwangJi-dev

Description

@hwangJi-dev

💬 문제

[코딩테스트 연습 - 귤 고르기](https://school.programmers.co.kr/learn/courses/30/lessons/138476)


💬 Idea

  • 귤의 개수 중 K개를 고르는데, 최소 종류를 만족하는 종류의 개수를 구하는 문제이다.
  • 따라서 귤의 개수가 많은 순서대로 정렬되도록 배열을 새로 만들어준 후 k개 만큼 배열을 자른 후 Set 함수를 사용하여 최소 개수를 구해주었다.

💬 풀이

func solution(k:Int, tangerine:[Int]) -> Int {
    var tangerineDict: [Int: Int] = [:]

    for i in tangerine {
        if tangerineDict[i] != nil {
            tangerineDict[i]! += 1
        } else {
            tangerineDict[i] = 1
        }
    }
    
    let sortedDitionary = tangerineDict.sorted { $0.1 > $1.1 }
    var sortedTangerine: [Int] = []
    for element in sortedDitionary {
        for _ in 1...element.value {
            sortedTangerine.append(element.key)
        }
    }
    
    let sliceTangerine = sortedTangerine[0..<k]
    return Set(sliceTangerine).count
}

💬 아쉬운 점

  • map, filter, sorted와 같은 고차함수들을 잘 다룬다면 더 간단하게 풀 수 있을 것 같은 문제여서 아쉽다. 더 공부한 뒤에 다시한번 다른 방법으로 풀어보고 싶다 !

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions