πŸ—οΈ Algorithm/⬛ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

[Programmers] [2019 KAKAO BLIND RECRUITMENT] [Python] Level1_μ‹€νŒ¨μœ¨

Dbswnstjd 2022. 3. 8. 20:04

https://programmers.co.kr/learn/courses/30/lessons/42889?language=python3 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ‹€νŒ¨μœ¨

μ‹€νŒ¨μœ¨ 슈퍼 κ²Œμž„ 개발자 μ˜€λ λ¦¬λŠ” 큰 고민에 λΉ μ‘Œλ‹€. κ·Έλ…€κ°€ λ§Œλ“  ν”„λžœμ¦ˆ μ˜€μ²œμ„±μ΄ λŒ€μ„±κ³΅μ„ κ±°λ’€μ§€λ§Œ, μš”μ¦˜ μ‹ κ·œ μ‚¬μš©μžμ˜ μˆ˜κ°€ κΈ‰κ°ν•œ 것이닀. 원인은 μ‹ κ·œ μ‚¬μš©μžμ™€ κΈ°μ‘΄ μ‚¬μš©μž 사이에 슀

programmers.co.kr

풀이

처음 λ‚΄κ°€ ν‘Ό 풀이이닀. λ”•μ…”λ„ˆλ¦¬λ₯Ό μ΄μš©ν•˜μ—¬ ν’€λ €κ³  ν–ˆμ§€λ§Œ μ‹œκ°„λ³΅μž‘λ„κ°€ λ†’μ•„μ„œ 인지 70.4 점을 λ°›κ²Œ λ˜μ—ˆλ‹€. 

# ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1단계 - μ‹€νŒ¨μœ¨
from collections import defaultdict

n = int(input()) # μ‹€νŒ¨μœ¨
stages = list(map(float, input().split())) # stages 

def solution(n, stages):
    answer = []
    dictionary = defaultdict(float)
    res_dict = defaultdict(float)
    a = len(stages)
    for i in range(1, n+1):
        dictionary[i] = stages.count(i)
        res_dict[i] = stages.count(i)
    for i in range(1, n+1):
        res_dict[i] = dictionary[i] / a 
        a = a - dictionary[i]
    new_dict = sorted(res_dict.items(),reverse=True, key = lambda x: x[1])   
    for key in new_dict:
        answer.append(key[0])    
    return answer
print(solution(n, stages))

 

λ§žλŠ” 풀이

def solution(N, stages):
    answer = []
    score = []
    R = len(stages)
    for i in range(1, N + 1):
        if R != 0:
            count = stages.count(i)
            score.append((i, count / R))
            R -= count
        else:
            score.append((i, 0))

    score = sorted(score, key=lambda x: (-x[1], x[0]))
    for i in range(len(score)):
        answer.append(score[i][0])
    return answer