Coding test

[Programmers] 명예의 전당 (1)

heedy 2022. 12. 9. 16:42
728x90

문제 설명


문제 풀이 과정

처음에 문제를 잘 이해 못 해서 몇번이고 봤다. 처음에는 가장 작은 점수만 반환하면 되는줄 알았는데, 나중에 보니 상위 k번째에서 가장 작은 점수를 반환하는 것이었다. 그래서 일차까지 슬라이싱 한 후 가장 작은 값을 반환해주는 코드를 k일차 이하일때와 초과일 때로 나누어 짰다. 나쁘지 않은 코드였다고 생각했는데 효율성이 약간 더 좋았으면.. 싶은 마음

def solution(k, score):
    answer = []
    for i in range(1, len(score)+1):
        if i <= k:
            t = sorted(score[:i])
            answer.append(t[0])
        else:
            t = sorted(score[:i])[-k:]
            answer.append(t[0])
    return answer

다른 사람의 풀이

  1. q에 각 score를 append하여 q의 갯수가 k보다 클 때는 가장 작은 값을 삭제 -> q를 k개 갯수만큼 상위 점수만 남아있게 함.
  2. q에서 가장 작은 값을 answer로 반환
def solution(k, score):

    q = []

    answer = []
    for s in score:

        q.append(s)
        if (len(q) > k):
            q.remove(min(q))
        answer.append(min(q))

    return answer

이런 건.. 많이 풀어보는 방법밖에 없는 것 같다..

 

- coding test url:

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

 

프로그래머스

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

programmers.co.kr

 

728x90

'Coding test' 카테고리의 다른 글

[Programmers] 햄버거 만들기  (2) 2022.12.11
[Programmers] 푸드 파이트 대회  (0) 2022.12.11
[Programmers] 과일 장수  (0) 2022.12.11
[Programmers] 기사단원의 무기  (0) 2022.12.09
[Programmers] 가장 가까운 같은 글자  (0) 2022.12.09