본문 바로가기
프로그래머스/Python

[프로그래머스] 최고의 집합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 4.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 각 집합을 구하고 해당 집합에서 원소의 곱이 최고인 집합을 구하면 된다.

여기서 각 원소의 곱이 최대이려면 각 원소의 크기가 최대한 서로 비슷해야 한다.

하여 각 원소의 값은 우선 구하고자 하는 합을 원소의 개수로 나눈 몫의 결과를 우선 저장하고 만약 그 합이 원하는 합의 값보다 작을 수 있으므로 각 원소에 합을 원소의 개수로 나눈 나머지만큼 분배하여 더해주면 해당 집합이 최고의 집합이 된다.

 

  1. 만약 자연수 개수가 원소의 합보다 크면 if (n > s)
  2. 제일 작은 자연수인 1로만 구성되어도 합보다 크게 되므로 최고의 집합이 존재하지 않게 된다. answer = [-1]
  3. 반면에 자연수의 개수가 원소의 합보다 작거나 같으면 else
  4. 자연수의 개수만큼 for _ in range(n)
  5. 원소의 합을 자연수의 개수로 나눈 몫의 결과를 추가한다. answer.append(s // n)
  6. 그리고 원소의 합을 자연수의 개수로 나눈 나머지만큼 for i in range(s % n)
  7. 각 원소에 1을 더한다. answer[i] += 1
  8. 집합의 결과를 오름차순으로 정렬한다. answer.sort()
반응형

3. 소스코드

def solution(n, s):
    answer = []
    
    if (n > s):
        answer = [-1]
    else:
        for _ in range(n):
            answer.append(s // n)

        for i in range(s % n):
            answer[i] += 1
            
        answer.sort()
        
    return answer
728x90
반응형