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
다른 사람의 풀이
- q에 각 score를 append하여 q의 갯수가 k보다 클 때는 가장 작은 값을 삭제 -> q를 k개 갯수만큼 상위 점수만 남아있게 함.
- 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