728x90
문제 설명
문제 풀이 과정
첫번째 풀이 : 시간 초과
def solution(k, m, score):
answer = 0
score = sorted(score, reverse = True)
while len(score) >= m:
score_min = min(score[:m])
answer += (score_min * m)
score = score[m:]
return answer
두번째 풀이: 효율성은 조금 좋아졌지만 그래도 시간 초과
def solution(k, m, score):
answer = 0
score = sorted(score, reverse = True)
while len(score) >= m:
score_min = min(score[:m])
answer += (score_min * m)
del score[:m]
return answer
while문의 효율이 좋지 않다. for문으로 변경해서 연산량과 슬라이싱 범위도 줄이기
세번째 풀이: 통과
def solution(k, m, score):
answer = 0
score = sorted(score, reverse = True)
for i in range(0, len(score), m):
sco = score[i:i+m]
if len(sco) == m:
score_min = min(sco)
answer += (score_min * m)
return answer
다른 사람의 풀이
def solution(k, m, score):
return sum(sorted(score)[len(score)%m::m])*m
- score를 오름차순으로 정렬
- score의 길이에서 상자에 담을 수 있는 숫자의 나머지 부터 상자에 담을 수 있는 개수까지의 합
- 갯수대로 곱하기
이게 어떤 원리로 돌아가는지는 모르겠다.. ^^..
- coding test url:
https://school.programmers.co.kr/learn/courses/30/lessons/135808
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90
'Coding test' 카테고리의 다른 글
[Programmers] 햄버거 만들기 (2) | 2022.12.11 |
---|---|
[Programmers] 푸드 파이트 대회 (0) | 2022.12.11 |
[Programmers] 기사단원의 무기 (0) | 2022.12.09 |
[Programmers] 명예의 전당 (1) (0) | 2022.12.09 |
[Programmers] 가장 가까운 같은 글자 (0) | 2022.12.09 |