본문 바로가기
Xcode/Swift - Algorithm

Swift) 프로그래머스(Lv1)- 실패율 (Sorted)

by 후르륵짭짭 2020. 8. 26.
728x90
반응형

programmers.co.kr/learn/courses/30/lessons/42889

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스��

programmers.co.kr

안녕하세요! 후르륵짭짭 입니다.

오늘은 실패율이라는 문제를 가져왔습니다.

어려운 문제는 아닌데, 새롭게 알게 된 사실이 있어서 올립니다...

실패율을 보니,,, 저의 코딩 테스트와 채용 실패율을 보는거 같네요 ㅠㅠ 눈물,,,,

(참고로 부끄럽지만,,, 오늘 쏘카 코딩 테스트 불합격 통보를 받았습니다... 3문제 중에 2문제를 풀었는데,,, 전 선택 받지 못 했습니다 ㅠㅠ)

 

일단 저의 코드는 아래와 같습니다.

func solution(_ N:Int, _ stages:[Int]) -> [Int] {
    
    var ranking :[(rate : Double , index : Int)] = []
    
    let sortedStages = stages.sorted(by: <)
    
    var cnt : Int = 0
    var index = 0
    
    for stage in 1...N{
    
        while index < sortedStages.count && stage >= sortedStages[index]{
            cnt += 1
            index += 1
        }
        
        
        ranking.append((rate: Double(cnt) / Double(cnt + sortedStages.count - index ), index: stage))
        cnt = 0
        
    }
    ranking = ranking.sorted(by: { (element1, element2) -> Bool in
        
        if element1.rate == element2.rate {
            return element1.index < element2.index
        }
        
        return element1.rate > element2.rate
    })
    
    return ranking.map { (element) -> Int in
        return element.index
    }
    
}

해결 방법은 일단 각 스테이지를 정렬하고 각 스테이지별 실패율을 구합니다.

그리고 나서 rate를 기준으로 내림차순으로 정렬을 하고 마지막에 ranking.map을 해서 결과를 반환해줍니다.

 

** 새롭게 알게된 사실 **

소수점을 구하기 위해서 처음에는

Double(1/8)

이렇게 해줬는데,, 계속 0이 나왔습니다....

그래서 혹시 몰라서

Double(1)/Double(8)

이렇게 해줬더니, 소수로 결과가 나왔습니다.

 

간단하지만 몰랐던 사실 ㅎㅎㅎㅎ 여기에 적어둡니다 ㅠㅠ

언제쯤 저는 코테에 합격 할 수 있을까요 ㅠㅠ

728x90
반응형

댓글