반응형
반응형

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

 

프로그래머스

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

programmers.co.kr

 

문제

배열로 받은 숫자 중 3가지를 더하거나 뺴서 숫자 0을 만들수 있는 방법을 총합해서 reuturn하면 됩니다.

 

코드

1. 제가 푼 for문 여러번 충첩하는 것보다 다른 분의 코드가 훨씬 복잡하지 않고 간결해서 가져왔습니다.

from itertools import combinations

def solution(number):    
    cnt = 0
    for i in combinations(number,3) :
        if sum(i) == 0 :
            cnt += 1
    return cnt

* combinations(list,number)

위와 같이 함수를 사용하면 list 내의 원소 중 number개를 뽑아 조합을 만들어서 return 해줍니다.

예를 들어 list = [1, 2, 3], number = 2인 경우 (1, 2), (1, 3), (2, 3)이 반환됩니다.

반응형
반응형
반응형

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