반응형
반응형

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

 

프로그래머스

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

programmers.co.kr

 

문제

귤의 개수와 귤의 크기를 받아 같은 크기의 귤을 개수만큼 리턴할 때 가작 적은 숫자 구하시오. 

 

시도

- 귤의 개수가 1개면 1을 바로 리턴합니다.

- 귤의 크기 배열 값의 같은 값을 몇개씩 가지고 있는지 구합니다.

- 가장 많이 같은 값을 가지고 있는 순서대고 정리를 합니다.

 

코드

1. 첫 번째 시도

import time
def solution(k, tangerine):
    if k == 1: return 1

    answer = 0
    st = time.time()
    
    counter = [0] * len(set(tangerine))
    for x in tangerine:
    	try: counter[x-1] += 1
    	except: counter[x-1] = 1
    
    counter.sort(reverse=True)
    
    for x in counter:
        answer += 1
        k = k - x
        if k <= 0:
            break
    
    end = time.time()
    print(f'time = {st - end}')
    return answer

런타임 에러가 발생했습니다.

 

2.  런타임 에러 해결 후 코드

def solution(k, tangerine):
    if k == 1: return 1
    answer = 0
    
    counter = [0] * max(tangerine)
    for x in tangerine:
    	try: counter[x-1] += 1
    	except: counter[x-1] = 1
    
    counter.sort(reverse=True)
    
    for x in counter:
        answer += 1
        k = k - x
        if k <= 0:
            break
    return answer

 

 

반응형

+ Recent posts