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
'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 |