알고리즘

[프로그래머스] LV1. 명예의 전당(1)

j9972 2023. 3. 9. 14:40
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/138477

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근

1. 이번 문제는 간단하다. k번째까지는 res에 담아주면서 최솟값을 ans에 담아준다

2. k번째 이후부터는 res의 최솟값보다 크면 최솟값이랑 score의 새로운 값이랑 변경 해주고 내림차순 정렬을 해주면 된다

3. 다만, k번째 이후 res의 최솟값보다 작다면 res의 최솟값을 ans에 담아줘야 한다는것을 잊지말자

 

풀이

def solution(k, score):
    ans = [score[0]]
    res = [score[0]] # k번째 까지의 값들을 담는 리스트
    
    for i in range(1,len(score)):
        if k >= i+1:
            res.append(score[i])
            ans.append(min(res))
        else:
            if score[i] > min(res):
                res[-1] = score[i]
                ans.append(min(res))
            else:
                ans.append(min(res))
        res.sort(reverse=True)
    return ans